Hi Ah Camel 1.x does NOT support the operators in the <simple> language. You cannot do this in 1.x. You need Camel 2.0 for that.
In Camel 1.x you can use a POJO to do the test <bean id="xxx" class="xxxx.xxxx"/> <when> <methodCall bean="xxx" method="bla"/> On Thu, Oct 8, 2009 at 3:09 PM, titexe <abdellatifbouch...@eurofins.com> wrote: > > sorry the other configuration is deformed, here is the setup I used > > to remember (camel version : 1.6.1, jvm version : 1.6,activemq : > fuse message broker 5.3.0.3 ) > > and my config camel in activemq.xml > > <route errorHandlerRef="myDeadLetterChannel"> > <from uri="activemq:queue:AX.IN"/> > <choice> > > <when> > <simple>${header.Action} == 'AAE'</simple> > <setHeader headerName="org.apache.camel.file.name"> > > <constant>${file:name.noext}_${header.Action}.csv</constant> > </setHeader> > > <to uri="file:///c:/CAMEL/IN/AAE"/> > </when> > <when> > <simple>${header.Action} == 'PCA'</simple> > <setHeader headerName="org.apache.camel.file.name"> > > <constant>${file:name.noext}_${header.Action}.csv</constant> > </setHeader> > > <to uri="file:///c:/CAMEL/IN/PCA"/> > </when> > > <otherwise> > <to uri="activemq:queue:FilterError"/> > </otherwise> > > </choice> > </route> > > > titexe wrote: >> >> Is really a big problem, there's no place for logic:) >> >> I enabled the trace mode, the Action field is in the header of the >> message, >> >> I tried another solution, by changing the file name by adding at the end >> ${header.Action} >> >> The result: I get all the files in the directory c:/CAMEL/IN/AAE with a >> name FileName_PCA.csv or FileName_AAE.csv >> >> Conclusion: the filter does not work. >> >> Here is the setup I used: >> >> <route errorHandlerRef="myDeadLetterChannel"> >> <from uri="activemq:queue:AX.IN"/> >> <choice> >> >> <when> >> <simple> $ header.Action () == 'AAE' </ >> simple> >> <setHeader headerName="org.apache.camel.file.name"> >> <constant> $ (file: name.noext ($ _)) header.Action. csv </ constant> >> </ setHeader> >> >> <t uri="file:///c:/CAMEL/IN/AAE"/> >> </ when> >> <when> >> <simple> $ header.Action () == 'PCA' </ >> simple> >> <setHeader headerName="org.apache.camel.file.name"> >> <constant> $ (file: name.noext ($ _)) header.Action. csv </ constant> >> </ setHeader> >> >> <t uri="file:///c:/CAMEL/IN/PCA"/> >> </ when> >> >> <otherwise> >> <t uri="activemq:queue:FilterError"/> >> </ otherwise> >> >> </ choice> >> </ route> >> >> >> >> >> Claus Ibsen-2 wrote: >>> >>> Hi >>> >>> Is there a Action header at all? >>> >>> You can use the tracer to look? >>> http://camel.apache.org/tracer >>> >>> I suspect this is the problem. >>> >>> >>> On Thu, Oct 8, 2009 at 12:49 PM, titexe <abdellatifbouch...@eurofins.com> >>> wrote: >>>> >>>> Thank you for your reply, >>>> >>>> now I get no errors for CSV files. >>>> >>>> cons by my filter does not work with the simple language, it puts all >>>> files >>>> received in the same directory >>>> <to uri="file:///c:/CAMEL/IN/AAE"/> >>>> >>>> below my configuration: >>>> >>>> <route errorHandlerRef="myDeadLetterChannel"> >>>> <from uri="activemq:queue:AX.IN"/> >>>> <choice> >>>> >>>> <when> >>>> <simple>${in.header.Action} == >>>> 'AAE'</simple> >>>> <to uri="file:///c:/CAMEL/IN/AAE"/> >>>> </when> >>>> <when> >>>> <simple>${in.header.Action} == >>>> 'PCA'</simple> >>>> <to uri="file:///c:/CAMEL/IN/PCA"/> >>>> </when> >>>> >>>> <otherwise> >>>> <to uri="activemq:queue:FilterError"/> >>>> </otherwise> >>>> >>>> </choice> >>>> </route> >>>> >>>> Thank you again for your help. >>>> >>>> >>>> Claus Ibsen-2 wrote: >>>>> >>>>> On Thu, Oct 8, 2009 at 11:22 AM, titexe >>>>> <abdellatifbouch...@eurofins.com> >>>>> wrote: >>>>>> >>>>>> >>>>>> my incoming queue, receives messages of bytes type. >>>>>> >>>>>> the message content in bytes may be an XML or CSV or PDF file that I >>>>>> converted a file in the end. >>>>>> >>>>>> In the header of the message,there's on properties(Action), that >>>>>> allows >>>>>> me >>>>>> to place this file to the proper directory. >>>>>> >>>>> >>>>> Ah are you saying its a JMS property that has this value? If so you >>>>> can route without xpath using the header predicate instead >>>>> <xpath> $ action = 'AAE' </ xpath> >>>>> >>>>> Could then be >>>>> <simple>${header.action} == 'AAE' </header> >>>>> >>>>> Using the simple language to test this >>>>> http://camel.apache.org/simple.html >>>>> >>>>> >>>>> >>>>> >>>>>> From where I put <xpath> $ action = 'AAE' </ xpath> <to >>>>>> uri="file:///c:/CSV/AAE"/> >>>>>> >>>>>> Thank you for helping me find a good solution to my problem >>>>>> >>>>>> Thank you again for your help >>>>>> >>>>>> >>>>>> Claus Ibsen-2 wrote: >>>>>>> >>>>>>> Hi >>>>>>> >>>>>>> Why do you have mixed message on that JMS queue? >>>>>>> >>>>>>> Can you not have 1 queue for XML files >>>>>>> And another queue for CSV files? >>>>>>> >>>>>>> If not I suggest to use 3 routes >>>>>>> >>>>>>> 1st route will consume from that JMS queue and check the message >>>>>>> content if its XML or CSV. >>>>>>> And then route to either A or B depending on that >>>>>>> >>>>>>> 2nd route = A which is the XML route where you can use xpath >>>>>>> >>>>>>> 3rd route = B which is the CSV route where you use something else >>>>>>> than >>>>>>> xpath. For example a java bean to check the action or what you would >>>>>>> like to do with the CSV file. >>>>>>> >>>>>>> >>>>>>> On Thu, Oct 8, 2009 at 10:48 AM, titexe >>>>>>> <abdellatifbouch...@eurofins.com> >>>>>>> wrote: >>>>>>>> >>>>>>>> Firstly, thank you for your reply, >>>>>>>> >>>>>>>> Action is a field that exists in the header of the message (Message >>>>>>>> proportions), normally xpath ($ action = 'AAE') should not parse the >>>>>>>> message >>>>>>>> body. >>>>>>>> >>>>>>>> if not, it is possible to use another command that allows me to >>>>>>>> filter >>>>>>>> the >>>>>>>> fields in the header of the message without parsing the message >>>>>>>> body? >>>>>>>> and >>>>>>>> it >>>>>>>> is possible to use it in my case <choice> of my route? >>>>>>>> >>>>>>>> Thank you in advance >>>>>>>> >>>>>>>> >>>>>>>> Claus Ibsen-2 wrote: >>>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> You are using XPath expressions >>>>>>>>> <xpath> $ action = 'AAE' </ xpath> >>>>>>>>> >>>>>>>>> And they *require* the payload to be XML. >>>>>>>>> So you cannot use XPath with CSV. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Wed, Oct 7, 2009 at 10:59 AM, titexe >>>>>>>>> <abdellatifbouch...@eurofins.com> >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> For information >>>>>>>>>> >>>>>>>>>> Version Camel = Camel V1.6.1.2 >>>>>>>>>> Version Activemq = Fuse message broker 5.3.0.3 >>>>>>>>>> Version Java = V1.6.0_16 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> titexe wrote: >>>>>>>>>>> >>>>>>>>>>> Hello, >>>>>>>>>>> >>>>>>>>>>> Here is the description of my route camel : I get a message type >>>>>>>>>>> Bytes >>>>>>>>>>> in >>>>>>>>>>> my queue, I transferred this message to another broker instance >>>>>>>>>>> in >>>>>>>>>>> another >>>>>>>>>>> machine. >>>>>>>>>>> >>>>>>>>>>> was receiving this message I transformed this message to CSV or >>>>>>>>>>> XML >>>>>>>>>>> file. >>>>>>>>>>> >>>>>>>>>>> my problem is that my route works very well for XML files and not >>>>>>>>>>> for >>>>>>>>>>> CSV >>>>>>>>>>> files. >>>>>>>>>>> >>>>>>>>>>> Here is my setup: >>>>>>>>>>> >>>>>>>>>>> <route errorHandlerRef="myDeadLetterChannel"> >>>>>>>>>>> <from uri="activemq:queue:IN"/> >>>>>>>>>>> <choice> >>>>>>>>>>> <when> >>>>>>>>>>> <xpath> $ action = 'AAE' </ xpath> >>>>>>>>>>> <t uri="file:///c:/IN/AAE/"/> >>>>>>>>>>> <setBody> >>>>>>>>>>> <simple> UPDATE SET CAMEL CamelDate = CURRENT_TIMESTAMP WHERE >>>>>>>>>>> message >>>>>>>>>>> = >>>>>>>>>>> '$ >>>>>>>>>>> (in.header.MessageId)' </ simple> >>>>>>>>>>> </ setBody> >>>>>>>>>>> <t uri="jdbc:testdb"/> >>>>>>>>>>> </ when> >>>>>>>>>>> <when> >>>>>>>>>>> <xpath> $ action = 'FAE' </ xpath> >>>>>>>>>>> <t uri="file:///c:/IN/FAE/"/> >>>>>>>>>>> <setBody> >>>>>>>>>>> <simple> UPDATE SET CAMEL CamelDate = CURRENT_TIMESTAMP WHERE >>>>>>>>>>> message >>>>>>>>>>> = >>>>>>>>>>> '$ >>>>>>>>>>> (in.header.MessageId)' </ simple> >>>>>>>>>>> </ setBody> >>>>>>>>>>> <t uri="jdbc:testdb"/> >>>>>>>>>>> </ when> >>>>>>>>>>> >>>>>>>>>>> <otherwise> >>>>>>>>>>> <t uri="activemq:queue:FilterError"/> >>>>>>>>>>> </ otherwise> >>>>>>>>>>> >>>>>>>>>>> </ choice> >>>>>>>>>>> </ route> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Here is the error that I receive when the transformationfor CSV >>>>>>>>>>> file. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> WARN EndpointMessageListener - Endpoint [ActiveMQ: tail: IN] >>>>>>>>>>> consumer >>>>>>>>>>> caught an exception while processing JMS message: >>>>>>>>>>> ActiveMQBytesMessage >>>>>>>>>>> CommandID = (10, responseRequired = false, messageId = ID: >>>>>>>>>>> DCFR-4099-1254861846625-3: 0:1:1:1, originalDestination = null, >>>>>>>>>>> originalTransactionId = null, >>>>>>>>>>> producerId = ID: DCFR-4099-1254861846625-2: 0:1:1, destination >>>>>>>>>>> = >>>>>>>>>>> queue: >>>>>>>>>>> / / IN, transactionId = null, expiration = 0, timestamp = >>>>>>>>>>> 1254862039687, >>>>>>>>>>> arrived >>>>>>>>>>> l = 0, brokerInTime = 1254879861750, brokerOutTime = >>>>>>>>>>> 1254879861765, >>>>>>>>>>> CorrelationId = null, ReplyTo = null, persistent = true, type = >>>>>>>>>>> null, >>>>>>>>>>> priority = 4 >>>>>>>>>>> , GroupID = null, groupSequence = 0, targetConsumerId = null, >>>>>>>>>>> compressed >>>>>>>>>>> = >>>>>>>>>>> false, userID = null, content = >>>>>>>>>>> org.apache.activemq.util.ByteSequence >>>>>>>>>>> @ >>>>>>>>>>> 6baf2 >>>>>>>>>>> 4 marshalledProperties = org.apache.activemq.util.ByteSequence @ >>>>>>>>>>> 1b7a553, >>>>>>>>>>> Datastructures = null, redeliveryCounter = 0, size = 2597, >>>>>>>>>>> properties >>>>>>>>>>> = >>>>>>>>>>> (Sourc >>>>>>>>>>> eEndpoint = null, org_apache_camel_file_name = >>>>>>>>>>> EUANNA_PCA_20090901 >>>>>>>>>>> (50e71be4-B408-48b3-9048-4e68faf6cbd3). csv DestinationEndpoint = >>>>>>>>>>> null, >>>>>>>>>>> MessageId = (50e71be >>>>>>>>>>> 4-B408-48b3-9048-4e68faf6cbd3), Action = PCA PartnerCode = >>>>>>>>>>> EUANNA, >>>>>>>>>>> SourceEndpointUser = null, RequestMessageId = null), >>>>>>>>>>> readOnlyProperties >>>>>>>>>>> = >>>>>>>>>>> true, readOnlyBo >>>>>>>>>>> dy = true, droppable = false) (ActiveMQBytesMessage = null >>>>>>>>>>> bytesOut, >>>>>>>>>>> dataOut = null, @ DATAIN = java.io.DataInputStream 1d314cc) >>>>>>>>>>> org.apache.camel.RuntimeCamelException: >>>>>>>>>>> org.xml.sax.SAXParseException: >>>>>>>>>>> Content is not allowed in prolog. >>>>>>>>>>> at org.apache.camel.util.ObjectHelper.invokeMethod >>>>>>>>>>> (ObjectHelper.java: 567) >>>>>>>>>>> at >>>>>>>>>>> org.apache.camel.impl.converter.InstanceMethodTypeConverter.convertTo >>>>>>>>>>> (InstanceMethodTypeConverter.java: 57) >>>>>>>>>>> at >>>>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.doConvertTo >>>>>>>>>>> (DefaultTypeConverter.java: 119) >>>>>>>>>>> at >>>>>>>>>>> org.apache.camel.impl.converter.DefaultTypeConverter.convertTo >>>>>>>>>>> (DefaultTypeConverter.java: 90) >>>>>>>>>>> at org.apache.camel.impl.MessageSupport.getBody >>>>>>>>>>> (MessageSupport.java: 79) >>>>>>>>>>> at org.apache.camel.impl.MessageSupport.getBody >>>>>>>>>>> (MessageSupport.java: 52) >>>>>>>>>>> at org.apache.camel.builder.xml.XPathBuilder.getDocument >>>>>>>>>>> (XPathBuilder.java: 536) >>>>>>>>>>> at org.apache.camel.builder.xml.XPathBuilder.evaluateAs >>>>>>>>>>> (XPathBuilder.java: 428) >>>>>>>>>>> at org.apache.camel.builder.xml.XPathBuilder.matches >>>>>>>>>>> (XPathBuilder.java: 106) >>>>>>>>>>> at org.apache.camel.builder.xml.XPathBuilder.matches >>>>>>>>>>> (XPathBuilder.java: 65) >>>>>>>>>>> at org.apache.camel.processor.ChoiceProcessor.process >>>>>>>>>>> (ChoiceProcessor.java: 47) >>>>>>>>>>> at >>>>>>>>>>> org.apache.camel.management.InstrumentationProcessor.process >>>>>>>>>>> (InstrumentationProcessor.java: 80) >>>>>>>>>>> >>>>>>>>>>> Thank you for helping me resolve this problem, >>>>>>>>>>> >>>>>>>>>>> Thank you in advance, >>>>>>>>>>> >>>>>>>>>>> best regards, >>>>>>>>>>> >>>>>>>>>>> titexe >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> View this message in context: >>>>>>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25782958.html >>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Claus Ibsen >>>>>>>>> Apache Camel Committer >>>>>>>>> >>>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> View this message in context: >>>>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25800470.html >>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Claus Ibsen >>>>>>> Apache Camel Committer >>>>>>> >>>>>>> Open Source Integration: http://fusesource.com >>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> View this message in context: >>>>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25800861.html >>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Claus Ibsen >>>>> Apache Camel Committer >>>>> >>>>> Open Source Integration: http://fusesource.com >>>>> Blog: http://davsclaus.blogspot.com/ >>>>> Twitter: http://twitter.com/davsclaus >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25801802.html >>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>> >>>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> Apache Camel Committer >>> >>> Open Source Integration: http://fusesource.com >>> Blog: http://davsclaus.blogspot.com/ >>> Twitter: http://twitter.com/davsclaus >>> >>> >> >> > > -- > View this message in context: > http://www.nabble.com/Camel-%3A-Error-Message-to-CSV-file-tp25781902p25802977.html > Sent from the Camel - Users mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus