cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "iris ding (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-4594) Incompatible fault type is generated in the wsdl if no setter method in Exception
Date Tue, 23 Oct 2012 02:12:12 GMT
iris ding created CXF-4594:
------------------------------

             Summary: Incompatible fault type is generated in the wsdl if no setter method
in Exception
                 Key: CXF-4594
                 URL: https://issues.apache.org/jira/browse/CXF-4594
             Project: CXF
          Issue Type: Bug
          Components: JAXB Databinding
    Affects Versions: 2.7.0, 2.6.3
            Reporter: iris ding
             Fix For: 2.7.0


 with the exception class below , it only has a get*** method for the
info property.

@WebFault
public TestException extends Exception {
     private String message = null;

    public TestException () {
    }

    public TestException (String message) {
        this.message = message;
    }

    public String getInfo() {
        return message;
    }

}

With the RI wsgen command, the generated schema type is :
RI:
<xs:complexType name="TestException">
    <xs:sequence>
      <xs:element name="info" type="xs:string" minOccurs="0"/>
      <xs:element name="message" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

If using CXF tool or on the CXF runtime, the generated schema type for the
exception is :

<xs:element name="TestException" type="tns:TestException"/>
<xs:complexType name="TestException">
<xs:sequence/>
</xs:complexType>

With the JaxWS spec, 3.7 Service Specific Exception, considering that no
getFaultInfo or faultBean in WebFault annotation is provided, the
special algorithm will be used to map the exception to jaxb bean, one of
the steps write below:

For each getter in the exception and its superclasses, a property of the
same type and name is added to
the bean. All the getter methods except
getMessagefromjava.lang.Throwabletype hierarchy
are excluded from the list of getters to be mapped.

Seems that only getter method is required, with the current codes in static
boolean JAXBContextInitializer.isMethodAccepted, it will check whether the
setter exists. I am thinking that this is not required for this scenario,
as we only need to read the information from the user exception.

The patch will return true is the  getter method has no corresponding setter method to let
CXF comply with the jax-ws 2.2 spec:
For each getter in the exception and its superclasses, a property of the
same type and name is added to
the bean. All the getter methods except
getMessagefromjava.lang.Throwabletype hierarchy
are excluded from the list of getters to be mapped.

--
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