[ 
https://issues.apache.org/jira/browse/CAMEL-3729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13000766#comment-13000766
 ] 

Claus Ibsen commented on CAMEL-3729:
------------------------------------

It must be something with Spring JavaConfig Testing. Using plain camel-test kit 
works without any problem.

I suggest to provide a classloader in the JAXBContext.newInstance, so the Foo 
class can be loaded.


> JAXB marshaling broken in 2.6.0
> -------------------------------
>
>                 Key: CAMEL-3729
>                 URL: https://issues.apache.org/jira/browse/CAMEL-3729
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jaxb
>    Affects Versions: 2.6.0
>         Environment: Sun Jdk 1.6, Mac OSX
>            Reporter: Dragisa Krsmanovic
>              Labels: jaxb
>
> This used to work in 2.5.0 but in 2.6.0 it throws:
> {noformat}
> 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)
> ...
> {noformat}
> {code:java}
> @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;
>         }
>     }
> }
> {code}

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to