cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Szanto (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CXF-4502) An Exception cannot be marshalled if contains a field of type java.util.Set
Date Thu, 13 Sep 2012 10:20:07 GMT

     [ https://issues.apache.org/jira/browse/CXF-4502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Peter Szanto updated CXF-4502:
------------------------------

    Description: 
If I have an Exception that has a java.util.Set field like this :

{code}
public class MissingReferenceException extends Exception {
	
	private Set<Integer> references; 
	
	private static final long serialVersionUID = -5294298476513084387L;

	public MissingReferenceException() {
	}
	
	public MissingReferenceException(Set<Integer> references) {
		this.setReferences(references);
	}

	public Set<Integer> getReferences() {
		return references;
	}

	public void setReferences(Set<Integer> references) {
		this.references = references;
	}

}
{code}


then when I throw it I get the below exception :

Caused by: java.lang.IllegalArgumentException: Argument is not an array
	at java.lang.reflect.Array.getLength(Native Method)
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeArrayObject(JAXBEncoderDecoder.java:423)
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshallException(JAXBEncoderDecoder.java:389)



Looking at the source of JAXBEncoderDecoder.writeArrayObject() it is quite obvious that List
is explicitly handled, but Set is not.

  was:
If I have an Exception that has a java.util.Set field like this :

	private Set<Integer> references; 

	public Set<Integer> getReferences() {
		return references;
	}

	public void setReferences(Set<Integer> references) {
		this.references = references;
	}


then when I throw it I get the below exception :

Caused by: java.lang.IllegalArgumentException: Argument is not an array
	at java.lang.reflect.Array.getLength(Native Method)
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeArrayObject(JAXBEncoderDecoder.java:423)
	at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshallException(JAXBEncoderDecoder.java:389)



Looking at the source of JAXBEncoderDecoder.writeArrayObject it is quite obvious that List
is explicitly handled, but handling a Set is missing.

    
> An Exception cannot be marshalled if contains a field of type java.util.Set 
> ----------------------------------------------------------------------------
>
>                 Key: CXF-4502
>                 URL: https://issues.apache.org/jira/browse/CXF-4502
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime, JAXB Databinding
>    Affects Versions: 2.6.1
>            Reporter: Peter Szanto
>            Priority: Critical
>
> If I have an Exception that has a java.util.Set field like this :
> {code}
> public class MissingReferenceException extends Exception {
> 	
> 	private Set<Integer> references; 
> 	
> 	private static final long serialVersionUID = -5294298476513084387L;
> 	public MissingReferenceException() {
> 	}
> 	
> 	public MissingReferenceException(Set<Integer> references) {
> 		this.setReferences(references);
> 	}
> 	public Set<Integer> getReferences() {
> 		return references;
> 	}
> 	public void setReferences(Set<Integer> references) {
> 		this.references = references;
> 	}
> }
> {code}
> then when I throw it I get the below exception :
> Caused by: java.lang.IllegalArgumentException: Argument is not an array
> 	at java.lang.reflect.Array.getLength(Native Method)
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeArrayObject(JAXBEncoderDecoder.java:423)
> 	at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshallException(JAXBEncoderDecoder.java:389)
> Looking at the source of JAXBEncoderDecoder.writeArrayObject() it is quite obvious that
List is explicitly handled, but Set is not.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message