[ 
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

Reply via email to