Thank you Claus.. it's great to hear from you again..
I did see an example close to this on stackoverflow.. someone referenced a bean 
as a filter to check for an extra file to exist, but in that example the extra 
file's name that needed to exist was static.The "chicken or the egg" question 
about that is.. I need to use the xpath in the current consumed XML to 
determine what file should exist for the route to continue. I haven't seen to 
many examples of parameter passing of the internal workings of a Camel route to 
beans and the route accepting data from to use in <choice>.  I did think I 
needed to pass this off to another java execution, thus the reason I'm pulling 
my results to the log and so forth, but I still thought I needed the facilites 
of the CamelContext to run first... or is the filter not really so close on 
incept of an inbound file as I think?   Is the inbound "message" (file in this 
case) really "consumed" as in loaded/headers made, etc. before the filter 
instruction applies?
Thanks for the heads up on noop.. I did know I had to address that once things 
were in place.. I put it there to test "once throughs" and was going to adjust 
that later in testing.


    On ‎Thursday‎, ‎December‎ ‎13‎, ‎2018‎ ‎02‎:‎43‎:‎00‎ ‎AM‎ ‎EST, Claus 
Ibsen <claus.ib...@gmail.com> wrote:  
 
 Hi

Just use Java - You can use Java File API to check for the existence
of a file ;)

You can also use a file filter to only pickup the file where you check
for the existence of that other file.
You can then write a bit of Java code as the filter and configure it
on the file endpoint. In the filter you grab the file context, do the
xpath to extract the name, and check for the file exists.

Also mind that noop=true will leave the file as-is after processing
it, but will not pickup it again, unless you configure the idempotent
to false also. Which you would need in cases while you may
wait for that other file.

So the better alternative is the file filter, and then move the files
after it has been processed, so you wont process the file again in the
future.
On Thu, Dec 13, 2018 at 1:58 AM John F. Berry
<bohnje...@yahoo.com.invalid> wrote:
>
> OK.. not hearing any pre-build advise.. I started building.
> I can successfully extract the XML field value that is the name of the work 
> file out of the consumed file of the route.
> What I need to do is only move both (the file I'm consuming and it's work 
> file).. if the work file shows up..
>
> Here's what I got so far....
>
>
> package org.mainegeneral.camel;
> import org.apache.camel.Processor;
> import org.apache.camel.Exchange;
> import org.apache.camel.builder.RouteBuilder;
> public class MyRouteBuilder extends RouteBuilder {
>    public void configure() {
>        from("file:src/data?noop=true&include=.*\\.xml")
>        
>.setProperty("SourceFN").xpath("/SYSTEMJOB/WORKDETAIL/SOURCE_FILENAME", 
>String.class)
>        .process(new Processor() {
>                      public void process(Exchange exchange) throws Exception {
>              }
>          } )
>        .log("Reading XML file: ${header.CamelFileName}")
>        .log("XML Source Filename = ${property.SourceFN}")
>        .to("file:target/messages/others");
>    }
> }
>
>
> Now I will need to not move the XML I'm consuming if the file named in 
> SOURCE_FILENAME doesn't yet exist, and go on to the other XML files in the 
> directory and come back to check this one.
> I was going to use a choice to perform both those moves in.. but struggling 
> to check for the named SOURCE_FILENAME's existance.
>
> Suggestions?
>
> Thanks!
>
>
>
>
>
> On Monday, December 10, 2018, 3:10:09 PM EST, John F. Berry 
> <bohnje...@yahoo.com.INVALID> wrote:
>
>
>
>
>
> Figured I'd try something new and ask for advice here first before hitting a 
> brick wall and asking after I hit that dead end...I need to poll for XML 
> files dumping into a specific NFS directory, read in the XML, find the "work" 
> file generated by the task that generated the XML, and move both files 
> together.  The XML file is a custom small app specific job detail sort of 
> file, with the exported work contained in a file named between the 
> <SOURCE_FILENAME> tag.I could just regex the file, instead of parsing XML 
> "officially", then use a choice and when satisfied, move both the file I'm 
> reading, and the result from the regex.  I don't really need the 50 or so 
> other job statistic tags contained in the XML.  I plan to use Java DSL with a 
> blueprint or some Karaf supported type to run as a bundle.
> Since these xml files are generated at invocation, the "work" file might not 
> show up for a few minutes.  In that time, I'm hoping to round-robin any other 
> XML files to find completed "pairs" in this landing directory. Sound simple 
> enough?  Any gotchas that people can think of?
> Thanks!



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2  

Reply via email to