Clarification,
was thinking little bit about it during the weekend.
On 11/30/2012 03:20 PM, Richard Opalka wrote:
Forgot to mention that this is related to CXF-4600 :(
Follow up (thinking CXF way and for a while ignoring previous post):
The sources we're going to talk about are located here:
http://anonsvn.jboss.org/repos/jbossws/shared-testsuite/trunk/testsuite/src/test/java/org/jboss/test/ws/jaxws/jbws3552
We have the following exception hierarchy:
@XmlAccessorType(XmlAccessType.FIELD) @XmlTransient
ExtendedAdaptedExceptionCA- AdaptedExceptionCA
* code* message
* description
* complexObject
CXF reuses JAXB for schema generation and this is the schema we're getting:
xs:element name=ExtendedAdaptedExceptionCA
type=tns:ExtendedAdaptedExceptionCA/
xs:complexType name=ExtendedAdaptedExceptionCA
xs:sequence
xs:element name=description nillable=true type=xs:string/
xs:element name=complexObject nillable=true type=xs:string/
xs:element name=message nillable=true type=xs:string/
xs:element name=code nillable=true type=xs:int/
/xs:sequence
/xs:complexType
and
xs:element name=AdaptedExceptionCA type=tns:AdaptedExceptionCA/
xs:complexType name=AdaptedExceptionCA
xs:sequence/
/xs:complexType
In our humbly opinion because AdaptedExceptionCA is @XmlTransient annotated
see:
http://docs.oracle.com/javaee/6/api/javax/xml/bind/annotation/XmlTransient.html
the above AdaptedExceptionCA definition generated by de facto JAXB
STANDARD is wrong.
Still valid claim that JAXB generates wrong XML schema.
If we'll ignore (will close all our eyes) the fact that inheritance is
completely broken (what is completely wrong BTW)
Above claim is wrong. @XmlTransient annotated objects cannot be mapped
to XML schema, so if exceptions inheritance hierarchy is not mapped to
XML, it is correct.
when mapped to XML then the above definition should at least look like:
xs:element name=AdaptedExceptionCA type=xs:anyType/
!-- the below definition should never be generated --
!--xs:complexType name=AdaptedExceptionCA
xs:sequence/
/xs:complexType--
Still valid statement IMO.
WDYT?
PS1: Just thinking loud :)
PS2: Attached are generated WSDL sources.
On 11/30/2012 02:53 PM, Richard Opalka wrote:
Hi CXF folks,
Below is copy/paste from JAXWS 2.2 spec, Section 3.7 - Service Specific
Exception:
---
For exceptions that do not match the pattern described in section 2.5,
JAX-WS maps those exceptions to Java
beans and then uses those Java beans as input to the JAXB mapping.
---
I'm wondering why CXF isn't using generated 'exception' beans for JAXB
de/serialization WSDL generation
but instead operate directly on top of exception objects? I know CXF is
passing TCK, but isn't it violating JAXWS spec.?
Most probably TCK tests doesn't cover this issue :(
Cheers,
--
Richard Opalka
Principal Software Engineer
JBoss, by Red Hat
Cell: +420 731 186 942