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

RH Bugzilla Integration (JIRA) jira-events at lists.jboss.org
Thu Aug 22 06:44:26 EDT 2013


    [ https://issues.jboss.org/browse/JBWS-3690?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12798411#comment-12798411 ] 

RH Bugzilla Integration commented on JBWS-3690:
-----------------------------------------------

Mustafa Musaji <mmusaji at redhat.com> made a comment on [bug 999893|https://bugzilla.redhat.com/show_bug.cgi?id=999893]

Platform BZ for https://issues.jboss.org/browse/JBWS-3690

Given the interface:
@javax.jws.WebService
public interface WsIntfc {
    public void test() throws MyException;
}

And exception class:
public class MyException extends Exception {
  private MyClass1 adapted = null;
  
  @XmlJavaTypeAdapter(Cl1ToCl2Adapter.class)
  public MyClass1 getAdapted() {
      return this.adapted;
  }
  
  public void setAdapted(MyClass1 adapted) {
      this.adapted = adapted;
  }
}

Along with:
public class Cl1ToCl2Adapter extends XmlAdapter<MyClass2, MyClass1> {
  @Override
  public MyClass1 unmarshal(MyClass2 v) throws Exception {
      MyClass1 mc1 = new MyClass1();
      mc1.setName(v.getFile());
      return mc1;
  }

  @Override
  public MyClass2 marshal(MyClass1 v) throws Exception {
      MyClass2 mc2 = new MyClass2();
      mc2.setFile(v.getName());
      return mc2;
  }
}

public class MyClass1 {
  private String name = null;
  
  public String getName() {
    return this.name;
  }
  
  public void setName(String name) {
    this.name = name;
  }
  
}

public class MyClass2 {
  private String file = null;
  
  public String getFile() {
    return this.file;
  }
  
  public void setFile(String file) {
    this.file = file;
  }
}



I get the following schema output:

<xs:complexType name="myClass1">
  <xs:sequence>
    <xs:element minOccurs="0" name="name" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="MyException">
  <xs:sequence/>
</xs:complexType>


I should expect myClass2 defined in the schema and referenced by MyException.
                
> 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
>            Assignee: 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