[jbossws-issues] [JBoss JIRA] (JBWS-3690) XMLJavaTypeAdapter not working in Exception Classes

Mustafa Musaji (JIRA) jira-events at lists.jboss.org
Wed Aug 21 06:49:26 EDT 2013


Mustafa Musaji created JBWS-3690:
------------------------------------

             Summary: XMLJavaTypeAdapter not working in Exception Classes
                 Key: JBWS-3690
                 URL: https://issues.jboss.org/browse/JBWS-3690
             Project: JBoss Web Services
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: jbossws-cxf
    Affects Versions: jbossws-cxf-4.2
            Reporter: Mustafa Musaji
         Attachments: cxfTest.jar

@XMLJavaTypeAdapter usage in Exception Classes does not work when mapping to a class not in the JAXB Context.

{code:title=MyEJB.java}
@Stateless
@WebService
public class MyEJB {

    public void launcheMyException() throws MyException {
        return;
    }
}
{code}

{code:title=MyException.java}
@XmlAccessorType(XmlAccessType.FIELD)
public class MyException extends Exception {

 @XmlJavaTypeAdapter(Cl1ToCl2Adapter.class)
    MyClass1 obj1;

    @XmlJavaTypeAdapter(NoArgObjAdapter.class)
    NoArgObj obj2;

    public MyClass1 getObj1() {
		return obj1;
	}
    
    public void setObj1(MyClass1 obj1) {
		this.obj1 = obj1;
	}

	public NoArgObj getObj2() {
        return obj2;
    }

    public void setObj2(NoArgObj obj2) {
        this.obj2 = obj2;
    }
}
{code}

{code:title=Cl1ToCl2Adapter.java}
public class Cl1ToCl2Adapter extends XmlAdapter<MyClass2,MyClass1> {

    @Override
	public MyClass2 marshal(MyClass1 v) throws Exception {
		return new MyClass2();
	}

	@Override
	public MyClass1 unmarshal(MyClass2 v) throws Exception {
		MyClass1 mc1 = new MyClass1(v.getS2());
		return mc1;
	}


}
{code}

This is what the resulting WSDL contains. Obj2 is mapped fine to a String, but MyClass1 is not and should have the MyClass2 mapping here.

{code:xml}
<xs:complexType name="MyException">
<xs:sequence>
<xs:element name="str" nillable="true" type="xs:string"/>
<xs:element name="obj2" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
{code}

If you add the same adapter to a non Exception class it works just fine.

This is NOT a duplicate of JBWS-3552 as I believe in that use case only known JAXB types were tested (HashMap, Strings etc). This issue is when you are using custom classes that need 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


More information about the jbossws-issues mailing list