Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-3729

JAXB marshaling broken in 2.6.0

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.6.0
    • 2.7.0
    • camel-jaxb
    • Sun Jdk 1.6, Mac OSX

    • Regression

    Description

      This used to work in 2.5.0 but in 2.6.0 it throws:

      Caused by: javax.xml.bind.JAXBException: class com.ask.ugc.camel.Jask3061$Foo nor any of its super class is known to this context.
      	at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)
      	at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:482)
      	at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
      	at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
      	at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75)
      	at org.apache.camel.converter.jaxb.JaxbDataFormat.marshal(JaxbDataFormat.java:117)
      	at org.apache.camel.converter.jaxb.JaxbDataFormat.marshal(JaxbDataFormat.java:96)
      ...
      
      @ContextConfiguration(
              locations = "foo.bar.JaxbBug$ContextConfig",
              loader = JavaConfigContextLoader.class)
      public class JaxbBug extends AbstractTestNGSpringContextTests {
      
          @EndpointInject(uri = "mock:end")
          protected MockEndpoint mockEndpoint;
      
          @Produce(uri = "direct:test")
          protected ProducerTemplate producer;
      
          @Test
          @DirtiesContext
          public void testJaxbMarshalling() throws InterruptedException {
              mockEndpoint.expectedMessageCount(1);
      
              producer.sendBody(new Foo());
      
              mockEndpoint.assertIsSatisfied();
      
          }
      
          @Configuration
          public static class ContextConfig extends SingleRouteCamelConfiguration {
              @Bean
              public RouteBuilder route() {
                  return new RouteBuilder() {
                      @Override
                      public void configure() throws Exception {
                          JaxbDataFormat jaxb = new JaxbDataFormat(JAXBContext.newInstance(Foo.class));
                          from("direct:test").marshal(jaxb).to("mock:end");
      
      
                      }
                  };
              }
          }
      
          @XmlRootElement
          public static class Foo {
              String bar;
      
              public String getBar() {
                  return bar;
              }
      
              public void setBar(String bar) {
                  this.bar = bar;
              }
          }
      
      }
      

      Attachments

        Activity

          People

            davsclaus Claus Ibsen
            dragisak Dragisa Krsmanovic
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: