I would defiantly like to add an expression to split the messages - that would be very very useful.
> On Mar 10, 2016, at 9:27 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > > On Thu, Mar 10, 2016 at 5:18 PM, Quinn Stevenson > <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> wrote: >> Thank you for the quick fix - I’m building 2.17-SNAPSHOT now so I can work >> with this some more. >> >> I agree completely on the first case. I actually assumed that’s what would >> happen for some reason. Is the component currently limited to one message >> per file? > > Yes, it may work for a bunch of xml files etc where you want to match > against them. > > But we could allow to configure a expression for splitting, then you > can specify \n for new lines, or refer to an xml tokenizer, that can > split xml files, etc > > >> >> I hadn’t thought about the second - my routes are almost always >> order-dependent (i.e. FIFO), so I normally wouldn’t use that one. >> > > Yeah its in the order it consumes / aka for file the reading order. So > you would may need to specify a sort option to sort by name etc. > > > >> >>> On Mar 10, 2016, at 9:13 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>> >>> One use case it may be nice would be to allow to use 1 file, but each >>> row in the file is a expected message. >>> In case you test with 1000s of messages. >>> >>> Also maybe being able to specify that the order can be random. I think >>> today they are in the order the consumer fetches the messages. >>> >>> On Thu, Mar 10, 2016 at 5:06 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>>> Hi >>>> >>>> I have reproduced your issue and logged a ticket >>>> https://issues.apache.org/jira/browse/CAMEL-9696 >>>> >>>> And also work on improving so those options you pass on the file >>>> endpoint are passed on. Today they are dropped. >>>> >>>> On Thu, Mar 10, 2016 at 4:56 PM, Quinn Stevenson >>>> <qu...@pronoia-solutions.com> wrote: >>>>> Claus - >>>>> >>>>> Sorry - I missed one part of your comment the first time. >>>>> >>>>> For this test, yes - I only expect a single value, and it’s out in a >>>>> file. What I’d like to be able to do is put a bunch of values in that >>>>> file and have the MockEndpoint setup with the correct expected message >>>>> bodies. >>>>> >>>>> I actually expected this test to fail because my test data file has about >>>>> 50 lines in it, so I expected the Mock to fail because the test only >>>>> sends one message. >>>>> >>>>> Hopefully that clarifies what I’m after here >>>>> >>>>>> On Mar 10, 2016, at 8:50 AM, Quinn Stevenson >>>>>> <qu...@pronoia-solutions.com> wrote: >>>>>> >>>>>> Here’s a single Camel test that shows the issue. >>>>>> >>>>>> package com.pronoia.camel; >>>>>> >>>>>> import org.apache.camel.builder.RouteBuilder; >>>>>> import org.apache.camel.test.junit4.CamelTestSupport; >>>>>> import org.junit.Test; >>>>>> >>>>>> public class JavaTestRouteTest extends CamelTestSupport { >>>>>> @Override >>>>>> protected RouteBuilder createRouteBuilder() throws Exception { >>>>>> return new RouteBuilder() { >>>>>> @Override >>>>>> public void configure() throws Exception { >>>>>> from( "direct://source <direct://source>") >>>>>> .to( "test:file://data?noop=true" ); >>>>>> } >>>>>> }; >>>>>> } >>>>>> >>>>>> @Test >>>>>> public void testRoute() throws Exception { >>>>>> template.sendBody( "direct://source <direct://source>", "My >>>>>> Value"); >>>>>> >>>>>> assertMockEndpointsSatisfied(); >>>>>> } >>>>>> >>>>>> } >>>>>>> On Mar 10, 2016, at 8:11 AM, Quinn Stevenson >>>>>>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> >>>>>>> wrote: >>>>>>> >>>>>>> Forgot to mention I’m using v2.16.2. >>>>>>> >>>>>>> Also, here’s the full blueprint and test class >>>>>>> >>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0>" >>>>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance >>>>>>> <http://www.w3.org/2001/XMLSchema-instance>" >>>>>>> xmlns:camel="http://camel.apache.org/schema/blueprint >>>>>>> <http://camel.apache.org/schema/blueprint>" >>>>>>> xsi:schemaLocation=" >>>>>>> http://www.osgi.org/xmlns/blueprint/v1.0.0 >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0> >>>>>>> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd >>>>>>> <http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd> >>>>>>> http://camel.apache.org/schema/blueprint >>>>>>> <http://camel.apache.org/schema/blueprint> >>>>>>> http://camel.apache.org/schema/blueprint/camel-blueprint.xsd >>>>>>> <http://camel.apache.org/schema/blueprint/camel-blueprint.xsd>"> >>>>>>> >>>>>>> <camel:routeContext id="test-route-context" >>>>>>> xmlns="http://camel.apache.org/schema/blueprint >>>>>>> <http://camel.apache.org/schema/blueprint>"> >>>>>>> <route id="direct-to-test"> >>>>>>> <from uri="direct://source <direct://source>"/> >>>>>>> <to uri="test:file://data?noop=true" /> >>>>>>> </route> >>>>>>> </camel:routeContext> >>>>>>> >>>>>>> <camel:camelContext id="blueprint-camel-context" >>>>>>> xmlns="http://camel.apache.org/schema/blueprint >>>>>>> <http://camel.apache.org/schema/blueprint>"> >>>>>>> <routeContextRef ref="test-route-context"/> >>>>>>> </camel:camelContext> >>>>>>> >>>>>>> </blueprint> >>>>>>> >>>>>>> >>>>>>> package com.pronoia.camel; >>>>>>> >>>>>>> import org.apache.camel.EndpointInject; >>>>>>> import org.apache.camel.component.mock.MockEndpoint; >>>>>>> import org.apache.camel.test.blueprint.CamelBlueprintTestSupport; >>>>>>> import org.junit.Before; >>>>>>> import org.junit.Test; >>>>>>> >>>>>>> public class BlueprintTestRouteTest extends CamelBlueprintTestSupport { >>>>>>> @EndpointInject( uri = "test:file://data?noop=true") >>>>>>> MockEndpoint targetEndpoint; >>>>>>> >>>>>>> @Override >>>>>>> protected String getBlueprintDescriptor() { >>>>>>> return "/OSGI-INF/blueprint/blueprint-test.xml"; >>>>>>> } >>>>>>> >>>>>>> @Override >>>>>>> @Before >>>>>>> public void setUp() throws Exception { >>>>>>> super.setUp(); >>>>>>> template.setDefaultEndpointUri( "direct://source >>>>>>> <direct://source>"); >>>>>>> } >>>>>>> >>>>>>> @Test >>>>>>> public void testRoute() throws Exception { >>>>>>> template.sendBody( "direct://source <direct://source>", "My >>>>>>> Value"); >>>>>>> >>>>>>> assertMockEndpointsSatisfied(); >>>>>>> } >>>>>>> >>>>>>> } >>>>>>> >>>>>>> >>>>>>> >>>>>>>> On Mar 10, 2016, at 8:07 AM, Quinn Stevenson >>>>>>>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> >>>>>>>> wrote: >>>>>>>> >>>>>>>> The route is defined in blueprint and I’m running the test using >>>>>>>> CamelBlueprintTestSupport - does that make a difference? >>>>>>>> >>>>>>>> >>>>>>>>> On Mar 10, 2016, at 8:04 AM, Claus Ibsen <claus.ib...@gmail.com >>>>>>>>> <mailto:claus.ib...@gmail.com>> wrote: >>>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> Ah that test component is never really used. So the idea is that you >>>>>>>>> have a file in that directory, that has the value "My Value" which the >>>>>>>>> test component will load and compare agains the incoming message. >>>>>>>>> >>>>>>>>> But yeah seems like the file -> string conversion somehow fails. You >>>>>>>>> just run this from straing junit ? No karaf or blueprint or osgi >>>>>>>>> container? >>>>>>>>> >>>>>>>>> On Thu, Mar 10, 2016 at 4:01 PM, Quinn Stevenson >>>>>>>>> <qu...@pronoia-solutions.com <mailto:qu...@pronoia-solutions.com>> >>>>>>>>> wrote: >>>>>>>>>> I’m trying to get the sample from the documentation for the Test >>>>>>>>>> Component working ( http://camel.apache.org/test.html >>>>>>>>>> <http://camel.apache.org/test.html> >>>>>>>>>> <http://camel.apache.org/test.html >>>>>>>>>> <http://camel.apache.org/test.html>> ), but I keep getting a type >>>>>>>>>> conversion error. >>>>>>>>>> >>>>>>>>>> Here’s the route definition: >>>>>>>>>> <route id="direct-to-test"> >>>>>>>>>> <from uri="direct://source <direct://source>"/> >>>>>>>>>> <to uri="test:file://data?noop=true" /> >>>>>>>>>> </route> >>>>>>>>>> >>>>>>>>>> Here’s the test method: >>>>>>>>>> @Test >>>>>>>>>> public void testRoute() throws Exception { >>>>>>>>>> template.sendBody( "direct://source <direct://source>", "My Value"); >>>>>>>>>> >>>>>>>>>> assertMockEndpointsSatisfied(); >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> Here’s the error: >>>>>>>>>> java.lang.AssertionError: test://file://data?noop=true >>>>>>>>>> <test://file//data?noop=true> There is no type conversion possible >>>>>>>>>> from java.lang.String to org.apache.camel.component.file.GenericFile >>>>>>>>>> >>>>>>>>>> I can see that Camel is finding the file with the test data because >>>>>>>>>> I’m getting a .camelLock file, but I can’t seem to figure out what >>>>>>>>>> I’m doing wrong >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Claus Ibsen >>>>>>>>> ----------------- >>>>>>>>> http://davsclaus.com <http://davsclaus.com/> @davsclaus >>>>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>>>>>>>> <https://www.manning.com/ibsen2> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Claus Ibsen >>>> ----------------- >>>> http://davsclaus.com @davsclaus >>>> Camel in Action 2: https://www.manning.com/ibsen2 >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> http://davsclaus.com @davsclaus >>> Camel in Action 2: https://www.manning.com/ibsen2 >> > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com <http://davsclaus.com/> @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 > <https://www.manning.com/ibsen2>