Uploaded image for project: 'RESTEasy'
  1. RESTEasy
  2. RESTEASY-368

MarshalException when marshalling Generic classes

XMLWordPrintable

      I have the sample generic classes which are JAXB annotated.

      package org.jboss.resteasy.examples.springmvc;

      @XmlRootElement(name="contactG")
      @XmlAccessorType(XmlAccessType.FIELD)
      public class ContactG<T> {

      @XmlElement
      private T entity;

      public ContactG()

      { super(); }

      public ContactG(T entity)

      { super(); this.entity = entity; }

      public T getEntity()

      { return entity; }

      public void setEntity(T entity)

      { this.entity = entity; }

      }

      package org.jboss.resteasy.examples.springmvc;

      @XmlRootElement(name="contact")
      @XmlAccessorType(XmlAccessType.FIELD)
      public class Contact
      {
      @XmlElement
      private String firstName;

      @XmlElement
      private String lastName;

      public Contact()
      {
      }

      public Contact(String firstName, String lastName)

      { this.firstName = firstName; this.lastName = lastName; }

      public String getFirstName()

      { return firstName; }

      public void setFirstName(String firstName)

      { this.firstName = firstName; }

      public String getLastName()

      { return lastName; }

      public void setLastName(String lastName)

      { this.lastName = lastName; }

      }

      And when I execute this code it throws me the exception.

      JAXBContext ctx = JAXBContext.newInstance(ContactG.class);
      StringWriter str = new StringWriter();
      ContactG<Contact> contact = new ContactG<Contact>(new Contact("fffff", "sfsfds"));
      ctx.createMarshaller().marshal(contact, str);

      System.out.println(str);

      The exception is

      javax.xml.bind.MarshalException

      • with linked exception:
        [javax.xml.bind.JAXBException: class org.jboss.resteasy.examples.springmvc.Contact nor any of its super class is known to this context.]
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318)
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
        at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(Unknown Source)
        at org.jboss.resteasy.examples.springmvc.ContactsTest.testG(ContactsTest.java:135)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
        at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
        at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
        at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
        at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
        at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
        at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
        at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
        at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
        Caused by: javax.xml.bind.JAXBException: class org.jboss.resteasy.examples.springmvc.Contact nor any of its super class is known to this context.
        at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:246)
        at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:261)
        at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:653)
        at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:152)
        at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:332)
        at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593)
        at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:320)
        at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
        at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
        ... 25 more
        Caused by: javax.xml.bind.JAXBException: class org.jboss.resteasy.examples.springmvc.Contact nor any of its super class is known to this context.
        at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:590)
        at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)
        ... 31 more

              patriot1burke@gmail.com Bill Burke (Inactive)
              ysinha Yogesh Sinha (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: