On Tue, Dec 15, 2009 at 1:33 PM, Kenneth H <phecda...@gmail.com> wrote:

>
>
> On Tue, Dec 15, 2009 at 11:26 AM, Kenneth H <phecda...@gmail.com> wrote:
>
>
> > > 1. Where can I read about the ".namespace()" function syntax? I still
> > don't
> > > get why "ins" is used in both functions. I tried w3schools but didn't
> > find
> > > it.
>
>
> > >Did you find this page?
> > >http://www.w3schools.com/XML/xml_namespaces.asp
> > >
> > >That should help you understand usage of the namespace prefix and URI.>
> > >
> >
> > I know namespaces in general, bit it was the syntax of the ".namespace()"
> > function in xpath, I was looking for.
> >
>
> >Ah Cool stuff. The public javadoc may be helpful to you then
>
> >http://camel.apache.org/maven/camel-
> >core/apidocs/org/apache/camel/builder/xml/XPathBuilder.html#namespace(java.lang.String,%>20java.lang.String)
>
> Perfect. Actually I was looking here earlier, but I must have missed it.
>
>
> > > 2. Is it possible to debug in the Camel routebuilder somehow? If I want
> > to
> > > know how the message looks like before and after the
> > > ".convertBodyTo(DOMSource.class)". And most important: I want to know
> if
> > > an
> > > expression evaluates to true, i.e. I want to "print-out" the result of
> > the
> > > when statement. Maybe something like this pseudocode:
> > >
> > > var travelRequest = xpath("//ins:TravelInsuranceRequest").namespace
> > > "ins","http://dzone.com/insurance";))
> > >
> > > print(travelRequest);
> > >
> > > .when(travelRequest).to(LUXURY_CAR_OUT);
> > >
> >
> > >I guess it depends on how you have this deployed... if its a JUnit test,
> > >well Eclipse or IntelliJ can easily debug that for you. Other setups may
> > >require extra configuration of the app server / ESB to get debugging
> > >working. Actually, if you just want to see what the messages look like
> at
> > >various points in your route, try enabling the tracer
> > >http://camel.apache.org/tracer.html
> >
> >
> > I will look into the tracer - didn't know of that. I have just created a
> > Maven project and deployed it on the Servicemix ESB. Hard to find out how
> > to
> > debug :)
> >
>
> >If you are using the latest ServiceMix, you can follow some notes here to
> >turn on debugging
> >
> https://repository.apache.org/content/groups/public/org/apache/felix/karaf/manual/1.3.0-
> >SNAPSHOT/manual-1.3.0-SNAPSHOT.html#KarafUsers%27Guideinonepage-5.1.Troubleshooting%>2CDebuggingandProfiling
>
> This might be very helpful to me!
>
> >
> > One last novice question. In the statement:
> >
> > from("seda:a").filter(header("foo").isEqualTo("bar")).to("seda:b");
> >
> > Where does the "foo" comes from, I mean, where do I set it? From Eclipse
> > I'm
> > creating a JMS Message, but the only headers availbe is these:
> >
> >
> >
> http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=/com.ibm.IBMDI.doc/referenceguide95.htm
> >
> > Do you know how I can use these headers/properties in a Camel choice
> > statement? Basicly, I just want to create the most simple example, where
> > to
> > messages are send from Eclipse and goes to two different queues in a
> Camel
> > choice statement. The messages should be simple tect or objects.
> >
>
> >You should be able to access any of the JMS headers you mentioned in the
> >same way the "foo" header is referenced. So how are you sending JMS
> messages
> >from Eclipse? I'm assuming its a function of Tivoli in the link you
> >provided?
>
> I (or the writer of the document I'm reading) made af "Response" class
> called "InsuranceResponse". The response class is sent to the Camel
> Routebuilder. I would like to swith on either the classname of the object
> I'm sending or a field, e.g. "CompanyName", in the object. I create/send
> like this:
>
> ObjectMessage insuranceMessage = session.createObjectMessage();
> InsuranceResponse response = new InsuranceResponse();
> response.setRequestID("1");
> response.setInsuranceCompanyName("Luxury Cars");
> response.setPrice(100f);
> response.setResponseID(UUID.randomUUID().toString());
> insuranceMessage.setObject(response);
> producer.send(insuranceMessage);
>
> Then I receive like this ("responseMessage" returns null all the time, but
> I
> guess it's beacuse my Camel Routebuilder isn't wotking, so no object is
> send
> to the queue):
>
> ObjectMessage responseMessage = (ObjectMessage) consumer.receive();
> InsuranceResponse insuranceMessageReceived =  (InsuranceResponse)
> responseMessage.getObject();
>

So I think you are looking at:

http://soa.dzone.com/articles/pattern-based-development-with-0?page=0,3

And it looks like they are using JIBX to convert between InsuranceResponses
and XML. So, in the Camel route, the message is already in XML form so we
can use an XPath expression something like the following to switch on the
company name:

xpath("//ins:TravelInsuranceRequest/ins:insuranceCompanyName/text() =
'Luxury Cars'").namespace("ins","http://dzone.com/insurance";)

I haven't booted up the example myself so I don't know why you are not
getting any messages using the raw JMS API. Do the ServiceMix logs or Camel
logs with trace enabled give you any more info on where the holdup could be?


>
>
> >>You can also use Camel to set a header like so
>
> >>from("seda:a").setHeader("foo", constant("bar"))...
>
> Cool. But what is the corresponding function in Eclipse/JMS to the
> "setHeader"?!
>
>
> Kind regards
> Kenneth H
>
>
> --
> View this message in context:
> http://old.nabble.com/Help-to-understand-xpath-expression-in-camel-routebuilder-tp26779963p26798115.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>


-- 
Cheers,
Jon

Camel in Action: http://manning.com/ibsen
Blog: http://janstey.blogspot.com

Reply via email to