Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-5223

XMLJavaTypeAdapter not working in Exception Classes

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 2.7.6
    • Invalid
    • JAXB Databinding
    • None
    • Unknown

    Description

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

      MyEJB.java
      @Stateless
      @WebService
      public class MyEJB {
      
          public void launcheMyException() throws MyException {
              return;
          }
      }
      
      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;
          }
      }
      
      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;
      	}
      
      
      }
      

      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.

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

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

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            mmusaji mustafa
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment