Am 09.11.12 16:45 schrieb "Claus Ibsen" unter <claus.ib...@gmail.com>:

>On Thu, Nov 8, 2012 at 7:12 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>> On Wed, Nov 7, 2012 at 9:08 PM, Babak Vahdat
>> <babak.vah...@swissonline.ch> wrote:
>>>
>>>
>>> Am 07.11.12 09:28 schrieb "Babak Vahdat" unter
>>> <babak.vah...@swissonline.ch>:
>>>
>>>>Hi
>>>>
>>>>There's a routing use case currently I'm stuck with which goes as the
>>>>following:
>>>>
>>>>- Download an index file from a FTP server containing the list of (to
>>>>be
>>>>downloaded) files which're listed in this index file line by line
>>>>- Do some futher processing with the index file being downloaded which
>>>>is
>>>>not relevant here
>>>>- Download each file being listed inside the index file one after
>>>>another.
>>>>Any other potential file not being referenced inside the index file
>>>>should
>>>>be ignored
>>>>- Do some further processing with each file being downloaded which is
>>>>not
>>>>relevant here
>>>>
>>>>The requirement is
>>>>
>>>>- Make use of Spring DSL
>>>>- *If* possible do not write any single line of java code but make use
>>>>of
>>>>what Spring DSL can offer
>>>>
>>>>My first try was:
>>>>
>>>>from ftp://...fileName=index.txt
>>>>   to file://...
>>>>   ...
>>>>   convertBodyTo String
>>>>   split
>>>>      tokenize ...
>>>>      pollEnrich ftp://...fileName=...${in.body}
>>>>      ...
>>>>   split
>>>>
>>>>Now there're two problems here:
>>>>
>>>>According to what the read box says here:
>>>>  http://camel.apache.org/content-enricher.html
>>>>
>>>>I can not access anything from the current exchange to tell the
>>>>pollEnrich
>>>>the file name I want to download.
>>>>
>>>>And according:
>>>>
>>>>http://camel.465427.n5.nabble.com/pollEnrich-consumer-with-selector-td4
>>>>939
>>>>908.html
>>>>
>>>>I can not make use of any other expression to tell the FTP polling
>>>>consumer
>>>>which file I intend to download.
>>>>
>>>>I appreciate any hint you could give me.
>>>
>>> At the end of the day I gave up using pollEnrich DSL and made use of
>>> ConsumerTemplate wrapped inside a Bean which gets invoked through the
>>>Bean
>>> endpoint inside Spring DSL. Just wonder if there's any better way to do
>>> this.
>>>
>>
>> No this is fine. The PollEnrich is as it is currently due how the
>> PollingConsumer API was crafted when Camel came to be.
>> Camel 3.0 has API changes in the planning which can retrofit this
>> issue and allow PollEnrich EIPs to be more dynamic
>>
>>
>>> Ah, still completley another story which baffled me also a while:
>>> DefaultPropertiesResolver.prepareLoadedProperties does *trim* a given
>>> value. In my case I had a key/value pair defined inside a properties
>>>file
>>> as:
>>>
>>> index-file-separator=\r\n
>>>
>>> Which of course after trimming became an empty string of the length 0!
>>>so
>>> that the split step above using this value did not behave as expected.
>>> IMHO it would be better to log at INFO or WARN level about this
>>>trimming
>>> step so people are aware of this. To resolve this I overided the
>>>strategy
>>> method as following:
>>>
>>
>> No there is a lot of whitespace noise in files that causes problems for
>>people.
>> But we could maybe check if we can see if the text contains only \r \n
>>\t chars
>> and then ensure the trim won't trim out these.
>>
>> Feel free to log a JIRA for that.
>>
>
>I logged a ticket to not forget about this
>https://issues.apache.org/jira/browse/CAMEL-5784

Hi Claus,

I'm so sorry not to raise the JIRA by myself, please excuse me. I've been
really really too much busy these days with a couple of dev tasks at the
same time. As always thanks for your help and genius advices.

Babak

>
>>
>>> public class MyPropertiesResolver extends DefaultPropertiesResolver {
>>>   @Override
>>>   protected Properties prepareLoadedProperties(Properties properties) {
>>>   // return the passed properties as is to avoid any value trimming
>>>taking
>>> place by default
>>>   return properties;
>>>   }
>>> }
>>>
>>> And then inside the test injected my own resolver:
>>>
>>> @Override
>>>     protected CamelContext createCamelContext() throws Exception {
>>>    CamelContext camelContext = super.createCamelContext();
>>>    PropertiesComponent propertiesComponent =
>>> camelContext.getComponent("properties", PropertiesComponent.class);
>>>    propertiesComponent.setPropertiesResolver(new
>>>MyPropertiesResolver());
>>>
>>>    return camelContext;
>>>     }
>>>
>>>
>>>
>>> Hope this can be helpful for others experiencing the same problem.
>>>
>>> Babak
>>>
>>>>
>>>>Babak
>>>>
>>>>
>>>>
>>>>
>>>>--
>>>>View this message in context:
>>>>http://camel.465427.n5.nabble.com/Problem-with-pollEnrich-tp5722285.htm
>>>>l
>>>>Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> Red Hat, Inc.
>> FuseSource is now part of Red Hat
>> Email: cib...@redhat.com
>> Web: http://fusesource.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>
>
>
>-- 
>Claus Ibsen
>-----------------
>Red Hat, Inc.
>FuseSource is now part of Red Hat
>Email: cib...@redhat.com
>Web: http://fusesource.com
>Twitter: davsclaus
>Blog: http://davsclaus.com
>Author of Camel in Action: http://www.manning.com/ibsen


Reply via email to