Hi Boriss

Thanks for your test case, it takes me litter time to do a quick fix for
 that issue. I just committed code into the trunk and camel-1.x branch.

Please check the latest camel snapshot for verification.

Willem

boriss wrote:
> Hi,
> 
> ok, I have uploaded the files to this ticket.
> 
> Regards,
> Boris
> 
> 
> Claus Ibsen-2 wrote:
>> Hi
>>
>> I have created a ticket in our bug tracker
>> https://issues.apache.org/activemq/browse/CAMEL-1145
>>
>> If possible could you upload your files to this ticket? It's much
>> easier for us yo get it fixed if we have the files instead of having
>> to copy paste from user forums.
>>
>>
>>
>> /Claus Ibsen
>> Apache Camel Committer
>> Blog: http://davsclaus.blogspot.com/
>>
>>
>>
>> On Thu, Dec 4, 2008 at 12:31 PM, boriss <[EMAIL PROTECTED]> wrote:
>>> Hi Claus, thanks for the response.
>>>
>>> The route to reproduce this case:
>>>
>>>
>>> import org.apache.camel.Exchange;
>>> import org.apache.camel.Processor;
>>> import org.apache.camel.builder.RouteBuilder;
>>> import org.apache.camel.non_wrapper.types.GetPerson;
>>> import org.apache.camel.non_wrapper.types.GetPersonResponse;
>>> import org.apache.camel.processor.DelegateProcessor;
>>> import org.apache.cxf.message.MessageContentsList;
>>>
>>>
>>> public class RouteBuilderCxfTracer extends RouteBuilder{
>>>    @Override
>>>    public void configure() throws Exception {
>>>        from("cxf:http://localhost:9000/PersonService/"; +
>>>                "?serviceClass=org.apache.camel.non_wrapper.Person" +
>>>
>>> "&serviceName={http://camel.apache.org/non-wrapper}PersonService"; +
>>>                "&portName={http://camel.apache.org/non-wrapper}soap"; +
>>>                "&dataFormat=POJO")
>>>                .intercept(new MyDelegate())
>>>                .to("direct:something");
>>>
>>>        from("direct:something")
>>>            .process(new DoSomethingProcessor())
>>>            .process(new DoNothingProcessor());
>>>
>>>    }
>>>
>>>    private class DoSomethingProcessor implements Processor{
>>>        @Override
>>>        public void process(Exchange exchange) throws Exception {
>>>            exchange.getOut().setBody(exchange.getIn().getBody() + "
>>> world!");
>>>        }
>>>    }
>>>
>>>    private class DoNothingProcessor implements Processor{
>>>        @Override
>>>        public void process(Exchange exchange) throws Exception {
>>>            exchange.getOut().setBody(exchange.getIn().getBody());
>>>        }
>>>    }
>>>
>>>    private class MyDelegate extends DelegateProcessor{
>>>        @Override
>>>        protected void processNext(Exchange e) throws Exception {
>>>            MessageContentsList mclIn = (MessageContentsList)
>>> e.getIn().getBody();
>>>            e.getIn().setBody(((GetPerson) mclIn.get(0)).getPersonId(),
>>> String.class);
>>>
>>>            super.processNext(e);
>>>
>>>            GetPersonResponse gpr = new GetPersonResponse();
>>>            gpr.setName("Bill");
>>>            gpr.setPersonId(e.getOut().getBody(String.class));
>>>            gpr.setSsn("Test");
>>>
>>>            MessageContentsList mclOut = new MessageContentsList();
>>>            mclOut.set(0, gpr);
>>>            e.getOut().setBody(mclOut, MessageContentsList.class);
>>>        }
>>>    }
>>> }
>>>
>>> the corresponding context (I have named it 'context-jira.xml'):
>>>
>>> <beans xmlns="http://www.springframework.org/schema/beans";
>>>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>       xmlns:camel="http://activemq.apache.org/camel/schema/spring";
>>>       xmlns:jaxws="http://cxf.apache.org/jaxws";
>>>       xmlns:http="http://cxf.apache.org/transports/http/configuration";
>>>
>>> xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration";
>>>
>>>       xsi:schemaLocation="
>>>       http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>>       http://activemq.apache.org/camel/schema/spring
>>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
>>>       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>>>       http://cxf.apache.org/transports/http-jetty/configuration
>>> http://cxf.apache.org/schemas/configuration/http-jetty.xsd
>>>       http://cxf.apache.org/transports/http/configuration
>>> http://cxf.apache.org/schemas/configuration/http-conf.xsd
>>>       http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>           http://www.springframework.org/schema/lang
>>> http://www.springframework.org/schema/lang/spring-lang-2.5.xsd
>>>           http://activemq.apache.org/camel/schema/spring
>>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
>>>    ">
>>>
>>>    <camel:camelContext id="camelJiraContext">
>>>        <camel:jmxAgent id="agent" disabled="true" />
>>>    </camel:camelContext>
>>>
>>>        <bean id="camelTracer"
>>> class="org.apache.camel.processor.interceptor.Tracer">
>>>                <property name="enabled" value="true"/>
>>>        <property name="traceExceptions" value="true"/>
>>>        <property name="traceInterceptors" value="true"/>
>>>        <property name="logLevel" value="INFO"/>
>>>        </bean>
>>>
>>>        <bean id="traceFormatter"
>>> class="org.apache.camel.processor.interceptor.TraceFormatter">
>>>        <property name="showBody" value="true"/>
>>>        <property name="showBodyType" value="true"/>
>>>        <property name="showProperties" value="true"/>
>>>        <property name="showHeaders" value="true"/>
>>>        </bean>
>>>
>>>    <bean id="producerTemplate"
>>>        factory-bean="camelJiraContext"
>>>        factory-method="createProducerTemplate">
>>>    </bean>
>>>
>>>        <bean class="RouteBuilderCxfTracer"/>
>>> </beans>
>>>
>>>
>>> And finally the Testcase. Of course there should be also some log4j
>>> configuration in the classpath.
>>>
>>>
>>> @RunWith(SpringJUnit4ClassRunner.class)
>>> @ContextConfiguration(locations = { "/context-jira.xml" })
>>> @TestExecutionListeners( { DependencyInjectionTestExecutionListener.class
>>> })
>>> public class TestJiraRoute {
>>>
>>>
>>>        @Test
>>>        public void testJiraRoute() throws Exception{
>>>        URL wsdlURL = new
>>> URL("http://localhost:9000/PersonService/?wsdl";);
>>>        PersonService ss = new PersonService(wsdlURL, new
>>> QName("http://camel.apache.org/non-wrapper";, "PersonService"));
>>>        Person client = ss.getSoap();
>>>        GetPerson request = new GetPerson();
>>>        request.setPersonId("hello");
>>>        GetPersonResponse response = client.getPerson(request);
>>>
>>>        assertEquals("we should get the right answer from router", "Bill",
>>> response.getName());
>>>        assertEquals("we should get the right answer from router", "Test",
>>> response.getSsn());
>>>        assertEquals("we should get the right answer from router", "hello
>>> world!", response.getPersonId());
>>>
>>>        }
>>> }
>>>
>>>
>>>
>>> Cheers,
>>> Boris
>>>
>>>
>>> Claus Ibsen-2 wrote:
>>>> Hi
>>>>
>>>> Do you mind posting the route that causes this bug?
>>>>
>>>> And we should have it in JIRA so we can get it fixed.
>>>>
>>>>
>>>> /Claus Ibsen
>>>> Apache Camel Committer
>>>> Blog: http://davsclaus.blogspot.com/
>>>>
>>>>
>>>>
>>>> On Thu, Dec 4, 2008 at 9:48 AM, boriss <[EMAIL PROTECTED]> wrote:
>>>>> Hi,
>>>>>
>>>>> I tried to configure my Camel-Route with TraceInterceptor, but when I
>>>>> use
>>>>> it
>>>>> I'm getting the Exception like:
>>>>>
>>>>> java.lang.NullPointerException
>>>>>        at
>>>>> org.apache.camel.processor.interceptor.TraceFormatter.getBreadCrumbID(TraceFormatter.java:150)
>>>>>        at
>>>>> org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:45)
>>>>>        at
>>>>> org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:94)
>>>>>
>>>>> Without Tracer everything works just fine.
>>>>>
>>>>> So I started to trace the problem myself, and found out that some
>>>>> Exchange
>>>>> implementations like CxfExchange in it's constructor doesn't copy the
>>>>> UnitOfWork of the previous Exchange. DefaultExchange does, for
>>>>> example!!
>>>>> I
>>>>> was wondering why?? So after the (CXF)exchange comes through the
>>>>> pipeline
>>>>> it
>>>>> has lost its UnitOfWork and TraceFormatter throws this NPE.
>>>>>
>>>>> I'm using the Camel 1.5
>>>>>
>>>>> Best regards,
>>>>> Boris
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/UnitOfWork-tp20829434s22882p20829434.html
>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/UnitOfWork-tp20829434s22882p20831703.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
> 

Reply via email to