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. >> >> > > -- View this message in context: http://www.nabble.com/UnitOfWork-tp20829434s22882p20832343.html Sent from the Camel - Users mailing list archive at Nabble.com.
