camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ariablu <962...@gmail.com>
Subject Re: FileConsumer move a file to wrong destination.
Date Mon, 25 Jan 2010 16:52:20 GMT

Thank you for reply.

Workaround for this problem, 
--------------------------------------------
route: fileConsumer -> some components ->
processor(SetOriginalMessageProcess)
--------------------------------------------
public class SetOriginalMessageProcess implements Processor{
       public void process(Exchange exchange) throws Exception {
               Message original =
exchange.getUnitOfWork().getOriginalInMessage();
               exchange.setOut(original);
       }
}
--------------------------------------------
This workaround works good!
I use "setOut()" since  I found a bit of another problem.


Last processor of route does not copy inMessage to outMessage.
For example,
route1: cxf -> processor(using getIn())               response: null
route2: cxf -> processor(using getIn()) -> log      response: object from
"getIn().setBody(object)".
route3: cxf -> processor(using getIn()) -> mock   response: object from
"getIn().setBody(object)".

So I use "setOut()" in last processor of route.



willem.jiang wrote:
> 
> Hi,
> 
> I just check the code of CxfProducer, I don't think it copy the 
> InMessage header to the OutMessage.
> I will write a test case to verify it.
> 
> Willem
> 
> ariablu wrote:
>> OK!
>> 
>> The same can be said for CxfProducer?
>> 
>> When
>> route: File -> Processor2(getIn()) -> cxf(not comment) -> Log
>> 
>> Result ... NG
>> 
>> 
>> 
>> 
>> Claus Ibsen-2 wrote:
>>> On Fri, Jan 22, 2010 at 4:24 PM, ariablu <96259d@gmail.com> wrote:
>>>> Next test,
>>>> test processor1 -> NG
>>>> test processor2 -> GOOD!
>>>>
>>>> "getOut()" breaks FileExchange data?
>>>> "newName"  in GenericFileExpressionRenamer class is defferenet value
>>>> each
>>>> test.
>>>>
>>> Ah that is your problem because you use getOut() which creates a
>>> totally new Message which forgets all about the previous one.
>>>
>>> You have to either replace data on IN (which is the easiest to do)
>>> Or copy from IN to OUT
>>>
>>> The getOut() has caused pain before and people should IMHO just stick
>>> to getIn() and manipulate that one.
>>>
>>>
>>> In the future we will rework the API a bit so Camel will detect this
>>> so when you do a getOut() it can safely copy the headers and whatnot.
>>>
>>>
>>>
>>>> [GenericFileExpressionRenamer]
>>>>  String newName = expression.evaluate(exchange, String.class);
>>>>
>>>>
>>>> --------------------------------------------
>>>> [[processor1]]
>>>> package test.impl;
>>>> import org.apache.camel.Exchange;
>>>> import org.apache.camel.Processor;
>>>> public class Trans implements Processor {
>>>>       public void process(Exchange exchange) throws Exception {
>>>>               exchange.getOut().setHeader("operationNameSpace",
>>>> "http://pc.ws");
>>>>               exchange.getOut().setHeader("operationName", "echo");
>>>>               exchange.getOut().setBody(new Object[]{"AAAAA",
>>>> "BBBBB"});
>>>> }       }
>>>> --------------------------------------------
>>>> [[processor2]]
>>>> package test.impl;
>>>> import org.apache.camel.Exchange;
>>>> import org.apache.camel.Processor;
>>>> public class Trans implements Processor {
>>>>       public void process(Exchange exchange) throws Exception {
>>>>               exchange.getIn().setHeader("operationNameSpace",
>>>> "http://pc.ws");
>>>>               exchange.getIn().setHeader("operationName", "echo");
>>>>               exchange.getIn().setBody(new Object[]{"AAAAA", "BBBBB"});
>>>> }       }
>>>> ---------------------------------------------
>>>>
>>>>
>>>> Claus Ibsen-2 wrote:
>>>>> Hi
>>>>>
>>>>> Can you try using TRACE logging for this log name:
>>>>> org.apache.camel.component.file
>>>>>
>>>>> eg if using log4j then its:
>>>>> log4j.logger.org.apache.camel.component.file=TRACE
>>>>>
>>>>> The should be detailed info how the filename is being evaluated.
>>>>> Wonder if Windows got something mixed up with the path separators.
>>>>>
>>>>>
>>>>> On Fri, Jan 22, 2010 at 11:31 AM, ariablu <96259d@gmail.com> wrote:
>>>>>> Thank you for reply.
>>>>>>
>>>>>> Next try,
>>>>>> using Apache Camel camel-2.2-SNAPSHOT and Spring,
>>>>>> route: File -> Processor -> (cxf) -> Log
>>>>>>
>>>>>> When ...
>>>>>> /_work/test/from/1.txt
>>>>>>
>>>>>> If I run test case, 1.txt file was moved to
>>>>>> /_work/test/backup/20100122 (not directory!)
>>>>>>
>>>>>> But I want
>>>>>> /_work/test/backup/20100122/1.txt
>>>>>>
>>>>>> --------------------------------------------------------
>>>>>> [[test case]]
>>>>>>  <camelContext xmlns="http://camel.apache.org/schema/spring">
>>>>>>  <endpoint id="file1"
>>>>>> uri="file:c:\_work\test\from?delete=false&amp;noop=false&amp;move=../backup/${date:now:yyyyMMdd}/${file:name}"/>
>>>>>>  <route>
>>>>>>    <from ref="file1"/>
>>>>>>    <process ref="process1"/>
>>>>>>    <!--  to uri="cxf"  -->
>>>>>>    <to
>>>>>> uri="log:testlog?level=INFO&showExchangeId=true&showProperties=true&showBodyType=true&showBody=true&showOut=true&multiline=true&showHeaders=true"/>
>>>>>>  </route>
>>>>>>  </camelContext>
>>>>>>  <bean class="test.impl.Trans" id="process1"/>
>>>>>> --------------------------------------------------------
>>>>>> [[test processor]](not changed)
>>>>>> --------------------------------------------------------
>>>>>> [[Log]]
>>>>>> DEBUG ProcessorEndpoint$1 - Starting producer:
>>>>>> Producer[log://testlog?level=INFO&multiline=true&showBody=true&showBodyType=true&showExchangeId=true&showHeaders=true&showOut=true&showProperties=true]
>>>>>> DEBUG ProducerCache - Adding to producer cache with key:
>>>>>> Endpoint[log://testlog?level=INFO&multiline=true&showBody=true&showBodyType=true&showExchangeId=true&showHeaders=true&showOut=true&showProperties=true]
>>>>>> for producer:
>>>>>> Producer[log://testlog?level=INFO&multiline=true&showBody=true&showBodyType=true&showExchangeId=true&showHeaders=true&showOut=true&showProperties=true]
>>>>>> DEBUG DefaultTypeConverter - Adding fallback type converter as a
>>>>>> known
>>>>>> type
>>>>>> converter to convert from: java.lang.String to: java.lang.Object[]
>>>>>> INFO testlog - Exchange[
>>>>>> , Id:308f8107-f7c1-4ec7-b2a9-9dff16b0cbd0
>>>>>> ,
>>>>>> Properties:{CamelToEndpoint=log://testlog?level=INFO&multiline=true&showBody=true&showBodyType=true&showExchangeId=true&showHeaders=true&showOut=true&showProperties=true,
>>>>>> CamelBatchSize=1, CamelBatchComplete=true,
>>>>>> CamelFileExchangeFile=GenericFile[c:\_work\test\from\1.txt],
>>>>>> CamelBatchIndex=0,
>>>>>> CamelFileLockName=c:\_work\test\from\1.txt.camelLock,
>>>>>> CamelFileLock=c:\_work\test\from\1.txt.camelLock}
>>>>>> , Headers:{operationNameSpace=http://pc.ws, operationName=echo}
>>>>>> , BodyType:Object[]
>>>>>> , Body:[Ljava.lang.Object;@674baa
>>>>>> , Out: null]
>>>>>> DEBUG GenericFileOnCompletion - Done processing file:
>>>>>> GenericFile[c:\_work\test\from\1.txt] using exchange:
>>>>>> Exchange[GenericFileMessage with body: [Ljava.lang.Object;@674baa]
>>>>>> DEBUG FileUtil - Tried 1 to delete file:
>>>>>> c:\_work\test\from\1.txt.camelLock
>>>>>> with result: true
>>>>>> DEBUG GenericFileRenameProcessStrategy - Renaming file:
>>>>>> GenericFile[c:\_work\test\from\1.txt] to:
>>>>>> GenericFile[..\backup\20100122]
>>>>>> DEBUG FileUtil - Tried 1 to rename file: c:\_work\test\from\1.txt
to:
>>>>>> c:\_work\test\from\..\backup\20100122 with result: true
>>>>>>
>>>>>> --------------------------------------------------------
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>> Claus Ibsen-2 wrote:
>>>>>>> Hi
>>>>>>>
>>>>>>> Could you try with 2.2-SNAPSHOT ?
>>>>>>>
>>>>>>> It is a bit odd since Camel should pickup .done as a relative
>>>>>>> directly
>>>>>>> and not as a absolute filename.
>>>>>>>
>>>>>>> You can also try to use
>>>>>>> move=.done/${file:name}
>>>>>>>
>>>>>>> Which should be what Camel translates .done to under the covers.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Jan 21, 2010 at 5:08 PM, ariablu <96259d@gmail.com>
wrote:
>>>>>>>> using Apache Camel 2.1 and Spring,
>>>>>>>> route: File -> Processor -> (cxf) -> Log
>>>>>>>>
>>>>>>>> When ...
>>>>>>>> /_work/test/from/1.txt
>>>>>>>>
>>>>>>>> if I run test case, 1.txt file was moved to
>>>>>>>> /_work/test/from/.done (not directory!)
>>>>>>>>
>>>>>>>> But I want
>>>>>>>> /_work/test/from/.done/1.txt
>>>>>>>>
>>>>>>>> --------------------------------------------------------
>>>>>>>> [[test case]]
>>>>>>>>  <camelContext xmlns="http://camel.apache.org/schema/spring">
>>>>>>>>   <endpoint id="file1"
>>>>>>>> uri="file:C:\_work\test\from?delete=false&amp;noop=false&amp;move=.done"/>
>>>>>>>>   <route>
>>>>>>>>     <from ref="file1"/>
>>>>>>>>     <process ref="process1"/>
>>>>>>>>     <!--  to uri="cxf"  -->
>>>>>>>>     <to
>>>>>>>> uri="log:testlog?level=INFO&amp;showExchangeId=true&amp;showProperties=true&amp;showBodyType=true&amp;showBody=true&amp;showOut=true&amp;multiline=true&amp;showHeaders=true"/>
>>>>>>>>   </route>
>>>>>>>>  </camelContext>
>>>>>>>>  <bean class="test.impl.Trans" id="process1"/>
>>>>>>>> --------------------------------------------------------
>>>>>>>> [[test processor]]
>>>>>>>> package test.impl;
>>>>>>>> import org.apache.camel.Exchange;
>>>>>>>> import org.apache.camel.Processor;
>>>>>>>> public class Trans implements Processor {
>>>>>>>>       public void process(Exchange exchange) throws Exception
{
>>>>>>>>               exchange.getOut().setHeader("operationNameSpace",
>>>>>>>> "http://pc.ws");
>>>>>>>>               exchange.getOut().setHeader("operationName",
"echo");
>>>>>>>>               exchange.getOut().setBody(new Object[]{"AAAAA",
>>>>>>>> "BBBBB"});
>>>>>>>> }       }
>>>>>>>> --------------------------------------------------------
>>>>>>>> [[Log]]
>>>>>>>> INFO testlog - Exchange[
>>>>>>>> , Id:ffa13059-6465-4bb0-b9ca-8de545c50618
>>>>>>>> ,
>>>>>>>> Properties:{CamelToEndpoint=log://testlog?level=INFO&multiline=true&showBody=true&showBodyType=true&showExchangeId=true&showHeaders=true&showOut=true&showProperties=true,
>>>>>>>> CamelBatchSize=1, CamelBatchComplete=true,
>>>>>>>> CamelFileExchangeFile=GenericFile[C:\_work\test\from\1.txt],
>>>>>>>> CamelBatchIndex=0}
>>>>>>>> , Headers:{operationName=echo, operationNameSpace=http://pc.ws}
>>>>>>>> , BodyType:Object[]
>>>>>>>> , Body:[Ljava.lang.Object;@16be13b
>>>>>>>> , Out: null]
>>>>>>>> DEBUG GenericFileOnCompletion - Done processing file:
>>>>>>>> GeneriacFile[C:\_work\test\from\1.txt] using exchange:
>>>>>>>> Exchange[GenericFileMessage with body: [Ljava.lang.Object;@16be13b]
>>>>>>>> DEBUG GenericFileRenameProcessStrategy - Renaming file:
>>>>>>>> GenericFile[C:\_work\test\from\1.txt] to: GenericFile[\\.done]
>>>>>>>> DEBUG FileUtil - Tried 1 to rename file: C:\_work\test\from\1.txt
>>>>>>>> to:
>>>>>>>> C:\_work\test\from\.done with result: true
>>>>>>>> --------------------------------------------------------
>>>>>>>>
>>>>>>>> Thanks!
>>>>>>>> --
>>>>>>>> View this message in context:
>>>>>>>> http://old.nabble.com/FileConsumer-move-a-file-to-wrong-destination.-tp27260194p27260194.html
>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Claus Ibsen
>>>>>>> Apache Camel Committer
>>>>>>>
>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>>>>> Open Source Integration: http://fusesource.com
>>>>>>> Blog: http://davsclaus.blogspot.com/
>>>>>>> Twitter: http://twitter.com/davsclaus
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>> http://old.nabble.com/FileConsumer-move-a-file-to-wrong-destination.-tp27260194p27271232.html
>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Claus Ibsen
>>>>> Apache Camel Committer
>>>>>
>>>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>>> Open Source Integration: http://fusesource.com
>>>>> Blog: http://davsclaus.blogspot.com/
>>>>> Twitter: http://twitter.com/davsclaus
>>>>>
>>>>>
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/FileConsumer-move-a-file-to-wrong-destination.-tp27260194p27274871.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>> -- 
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
>>>
>> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/FileConsumer-move-a-file-to-wrong-destination.-tp27260194p27307990.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Mime
View raw message