On Fri, Jan 22, 2010 at 4:24 PM, ariablu <[email protected]> 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 <[email protected]> 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&noop=false&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 <[email protected]> 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&noop=false&move=.done"/>
>>>>> <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]]
>>>>> 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