Is it possible to mock the first and second sql endpoints using a sort of
regular expression? The following seems to intercept all my "sql" endpoints.

interceptSendToEndpoint("sql:*")

As does this:

interceptSendToEndpoint("sql:.*")

I'd like to mock the first one and the 2nd one separately. The following
seems to work, but I can see a situation where the SQL statements start the
same and I just want to match on order of occurrence.

interceptSendToEndpoint(""sql:select * from*")

Also, is it possible to end the route when testing? For example, my route
has 10 different steps and I want to test the first 5. Is it possible to
stop and prevent proceeding after step 5 using adviceWith?

Thanks,

Matt




On Fri, Jun 13, 2014 at 12:17 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:

> Hi
>
> The weave methods of advice with has all kinds of addFirst / addList,
> replace et all you can use
> http://camel.apache.org/advicewith.html
>
> On Thu, Jun 12, 2014 at 6:48 PM, Matt Raible <m...@raibledesigns.com>
> wrote:
> >
> > On Jun 12, 2014, at 10:14 AM, Matt Raible <m...@raibledesigns.com>
> wrote:
> >
> >> OK, I got that to work by using @UseAdviceWith. Here's my @Before
> method that sets everything up and returns SQL results:
> >>
> >>       static List<Map> results = new ArrayList<Map>() {{
> >>               add(new HashMap<String, String>() {{
> >>                       put("foo", "bar");
> >>               }});
> >>       }};
> >>
> >>       @Before
> >>       public void before() throws Exception {
> >>               camelContext.setTracing(true);
> >>
> >>               ModelCamelContext context = (ModelCamelContext)
> camelContext;
> >>               RouteDefinition route =
> context.getRouteDefinition("myRouteId");
> >>               route.adviceWith(context, new RouteBuilder() {
> >>                       @Override
> >>                       public void configure() throws Exception {
> >>
> interceptSendToEndpoint("sql:*").skipSendToOriginalEndpoint().process(new
> Processor() {
> >>                                       @Override
> >>                                       public void process(Exchange
> exchange) throws Exception {
> >>
> exchange.getOut().setBody(results);
> >>                                       }
> >>                               });
> >>                       }
> >>               });
> >>               camelContext.start();
> >>       }
> >>
> >> Now in my route, I want to verify the final results. Since it's a
> .process() call, there's no endpoint name to look for and mock.
> >>
> >> .to("sql:select * ...")
> >> .to("log:output")
> >> .process(new Processor() {
> >>       public void process(Exchange exchange) throws Exception {
> >>               List<HashMap> data = (ArrayList<HashMap>)
> exchange.getIn().getBody();
> >>               // create response from data
> >>               exchange.getOut().setBody(response);
> >>       }
> >> });
> >>
> >> Is it possible to add a "mock:result" at the end, after .process()?
> >>
> >> I tried the following, but no messages are received.
> >>
> >> @MockEndpoints // added to class
> >>
> >>       @EndpointInject(uri = "mock:result")
> >>       protected MockEndpoint result;
> >>
> >>       @Test
> >>       ...
> >>               result.expectedMessageCount(1);
> >>
> >>               template.sendBody ...
> >>
> >>               MockEndpoint.assertIsSatisfied(camelContext);
> >>
> >
> > Nevermind, figured it out:
> >
> > // No reason for @MockEndpoints on class
> >
> >         @EndpointInject(uri = "mock:result")
> >         MockEndpoint result;
> >
> >         @Before
> >         public void before() throws Exception {
> >                 ...
> >                 route.adviceWith(context, new RouteBuilder() {
> >                         ....
> >                 });
> >                 route.to(result);
> >                 camelContext.start();
> >         }
> >
> >         @Test
> >         public void testMockSQLEndpoint() throws Exception {
> >                 result.expectedMessageCount(1);
> >
> > Thanks for all the help!
> >
> > Matt
> >
> >>
> >> On Jun 12, 2014, at 9:33 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> >>
> >>> Hi
> >>>
> >>> @ EndpointInject does not match wildcards.
> >>>
> >>> Do this as I said before in my previous mail
> >>>
> >>> But as the SQL endpoint is dynamic calculated then its easier to use
> >>> interceptSendToEndpoint and skip, as shown in the book on page 182
> >>> with the advice with.
> >>>
> >>> On Thu, Jun 12, 2014 at 4:47 PM, Matt Raible <m...@raibledesigns.com>
> wrote:
> >>>> Possibly. If I have the following annotations on my class:
> >>>>
> >>>> @MockEndpoints("sql:.*")
> >>>> @UseAdviceWith
> >>>>
> >>>> And I mock the SQL endpoint:
> >>>>
> >>>>       @EndpointInject(uri = "mock:sql:*")
> >>>>       MockEndpoint mockSql;
> >>>>
> >>>> Then I try to set the mocked endpoint's results:
> >>>>
> >>>>       @Test
> >>>>       public void testMockSQLEndpoint() throws Exception {
> >>>>               mockSql.whenAnyExchangeReceived(new Processor() {
> >>>>                       @Override
> >>>>                       public void process(Exchange exchange) throws
> Exception {
> >>>>                               exchange.getIn().setBody("sql output");
> >>>>                       }
> >>>>               });
> >>>>               camelContext.start();
> >>>>
> >>>> The mock SQL output is still not set.
> >>>>
> >>>> On Jun 12, 2014, at 8:40 AM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >>>>
> >>>>> Hi
> >>>>>
> >>>>> Is it the @AdviceWith you are looking for ?
> >>>>> http://camel.apache.org/spring-testing.html
> >>>>>
> >>>>> On Thu, Jun 12, 2014 at 4:30 PM, Matt Raible <m...@raibledesigns.com>
> wrote:
> >>>>>> Is it possible to use adviceWith when using Spring/Camel's
> annotation support? I was originally trying to use this method, but had to
> extend CamelTestSupport and its context did not have my routes in it.
> >>>>>>
> >>>>>> On Jun 11, 2014, at 11:39 PM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
> >>>>>>
> >>>>>>> Hi
> >>>>>>>
> >>>>>>> You may want to use @MockEndpointsAndSkip so you do not call the
> SQL component.
> >>>>>>>
> >>>>>>> The camel-spring-test with the annotations was added to Camel
> later,
> >>>>>>> after the book was published.
> >>>>>>>
> >>>>>>> But you can find the annotations and more details here
> >>>>>>> http://camel.apache.org/spring-testing.html
> >>>>>>>
> >>>>>>> But as the SQL endpoint is dynamic calculated then its easier to
> use
> >>>>>>> interceptSendToEndpoint and skip, as shown in the book on page 182
> >>>>>>> with the advice with.
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> On Thu, Jun 12, 2014 at 1:58 AM, Matt Raible <
> m...@raibledesigns.com> wrote:
> >>>>>>>> Nope, my routes are defined using the Java DSL, not XML. Changing
> from:
> >>>>>>>>
> >>>>>>>> @ContextConfiguration(classes = CamelConfig.class)
> >>>>>>>>
> >>>>>>>> To:
> >>>>>>>>
> >>>>>>>> @ContextConfiguration(loader =
> CamelSpringDelegatingTestContextLoader.class, classes = CamelConfig.class)
> >>>>>>>>
> >>>>>>>> Solved my problem.
> >>>>>>>>
> >>>>>>>> I don't know if the regex needs to change. Using
> @MockEndpoints("sql:*"), I see the following in my logs:
> >>>>>>>>
> >>>>>>>> 2014-06-11 17:53:35,388 [main           ] INFO  output
>               - Exchange[ExchangePattern: InOnly, BodyType:
> java.util.ArrayList, Body: []]
> >>>>>>>> 2014-06-11 17:53:35,389 [main           ] INFO  MockEndpoint
>               - Asserting: Endpoint[mock://sql:select...] is satisfied
> >>>>>>>> 2014-06-11 17:53:35,390 [main           ] INFO  MockEndpoint
>               - Asserting: Endpoint[mock://sql:*] is satisfied
> >>>>>>>>
> >>>>>>>> It looks like it's working, but the test is failing:
> >>>>>>>>
> >>>>>>>> java.lang.AssertionError: mock://sql:* Received message count.
> Expected: <1> but was: <0>
> >>>>>>>>
> >>>>>>>> So now I want to do two things: 1) understand why my mockSQL
> endpoint is not receiving a message and 2) make the mock SQL endpoint
> return an ArrayList of items so I can test my processing logic.
> >>>>>>>>
> >>>>>>>> On Jun 11, 2014, at 5:46 PM, Minh Tran <darth.minhs...@gmail.com>
> wrote:
> >>>>>>>>
> >>>>>>>>> It appears to me like you have your routes defined in xml and
> not actually in JavaConfig? In that case, you can simplify your
> configuration even further and not refer to your JavaConfig class like this
> >>>>>>>>>
> >>>>>>>>> @RunWith(CamelSpringJUnit4ClassRunner.class)
> >>>>>>>>> @ContextConfiguration(loader =
> CamelSpringDelegatingTestContextLoader.class, locations = {
> "classpath:/path/to/xml" })
> >>>>>>>>> @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
> >>>>>>>>> @MockEndpointsAndSkip("sql:.*")
> >>>>>>>>> public class FooRouteTests
> >>>>>>>>>
> >>>>>>>>> No need to extend any class.
> >>>>>>>>> Also your regex has to be "sql:.*" and not "sql:*" They mean two
> different things in regex.
> >>>>>>>>>
> >>>>>>>>> On 12/06/2014, at 9:32 AM, Matt Raible <m...@raibledesigns.com>
> wrote:
> >>>>>>>>>
> >>>>>>>>>> Thanks for your advice. Here's my attempt to modify my test to
> use CamelSpringJUnit4ClassRunner and annotations to mock my SQL endpoint.
> >>>>>>>>>>
> >>>>>>>>>> @RunWith(CamelSpringJUnit4ClassRunner.class)
> >>>>>>>>>> @ContextConfiguration(classes = CamelConfig.class)
> >>>>>>>>>> @DirtiesContext(classMode =
> DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
> >>>>>>>>>> @MockEndpoints("sql:*")
> >>>>>>>>>> public class FooRouteTests {
> >>>>>>>>>>
> >>>>>>>>>>  @Autowired
> >>>>>>>>>>  CamelContext camelContext;
> >>>>>>>>>>
> >>>>>>>>>>  @Produce
> >>>>>>>>>>  ProducerTemplate template;
> >>>>>>>>>>
> >>>>>>>>>>  @EndpointInject(uri = "mock:sql:*")
> >>>>>>>>>>  MockEndpoint mockSql;
> >>>>>>>>>>
> >>>>>>>>>>  @Test
> >>>>>>>>>>  public void testMockSQLEndpoint() throws Exception {
> >>>>>>>>>>          template.sendBody("direct:foo", "bar");
> >>>>>>>>>>
> >>>>>>>>>>          mockSql.expectedMessageCount(1);
> >>>>>>>>>>           // todo: take input message and return mock results
> (ArrayList<HashMap>)
> >>>>>>>>>>          MockEndpoint.assertIsSatisfied(camelContext);
> >>>>>>>>>>  }
> >>>>>>>>>> }
> >>>>>>>>>>
> >>>>>>>>>> For some reason, this results in an error, even though my
> CamelConfig works for configuring other tests.
> >>>>>>>>>>
> >>>>>>>>>> Could not autowire field: org.apache.camel.CamelContext
> com.company.app.foo.FooRouteTests.camelContext; nested exception is
> org.springframework.beans.factory.NoSuchBeanDefinitionException: No
> qualifying bean of type [org.apache.camel.CamelContext] found for
> dependency: expected at least 1 bean which qualifies as autowire candidate
> for this dependency.
> >>>>>>>>>>
> >>>>>>>>>> @Configuration
> >>>>>>>>>> @ImportResource("classpath:META-INF/cxf/cxf.xml")
> >>>>>>>>>> @ComponentScan("com.company.app")
> >>>>>>>>>> public class CamelConfig extends CamelConfiguration {
> >>>>>>>>>>
> >>>>>>>>>>  @Override
> >>>>>>>>>>  protected void setupCamelContext(CamelContext camelContext)
> throws Exception {
> >>>>>>>>>>          PropertiesComponent pc = new PropertiesComponent();
> >>>>>>>>>>          pc.setLocation("classpath:application.properties");
> >>>>>>>>>>          camelContext.addComponent("properties", pc);
> >>>>>>>>>>          super.setupCamelContext(camelContext);
> >>>>>>>>>>  }
> >>>>>>>>>> }
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On Jun 11, 2014, at 5:08 PM, Minh Tran <
> darth.minhs...@gmail.com> wrote:
> >>>>>>>>>>
> >>>>>>>>>>> If you're using Spring, I recommend not extending any of the
> Camel Test classes and using the Camel Enhanced Spring Test as described
> here
> >>>>>>>>>>> http://camel.apache.org/spring-testing.html
> >>>>>>>>>>>
> >>>>>>>>>>> The docs take a bit of getting use to because it describes
> several different ways of testing via Spring but you just have to skip to
> the Camel Enhanced Spring Test bits. It also doesn't describe how to test
> using a JavaConfig class very well IMO. It only describes how to do this by
> extending AbstractJUnit4SpringContextTests which is a really old way of
> doing spring unit tests. I had to do a lot of experimenting to get it to
> work without extending this class.
> >>>>>>>>>>>
> >>>>>>>>>>> Here's an example I had, the only difference is my JavaConfig
> is embedded into my unit test class, but there's no reason you couldn't
> refer to an existing class. If you want to mock and skip your sql or soap
> calls, then instead of using @MockEndPoints, use @MockEndPointsAndSkip.
>  Look further down to see some gotchas that I encountered in all of this.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> @RunWith(CamelSpringJUnit4ClassRunner.class)
> >>>>>>>>>>> @ContextConfiguration(loader =
> CamelSpringDelegatingTestContextLoader.class, classes =
> RegexTest.JavaConfig.class)
> >>>>>>>>>>> @MockEndpoints
> >>>>>>>>>>> @DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
> >>>>>>>>>>> public class RegexTest {
> >>>>>>>>>>>
> >>>>>>>>>>> @Produce(uri = "direct:start")
> >>>>>>>>>>> private ProducerTemplate producerTemplate;
> >>>>>>>>>>>
> >>>>>>>>>>> @EndpointInject(uri = "mock:direct:match")
> >>>>>>>>>>> private MockEndpoint matchEndpoint;
> >>>>>>>>>>>
> >>>>>>>>>>> @EndpointInject(uri = "mock:direct:nomatch")
> >>>>>>>>>>> private MockEndpoint noMatchEndpoint;
> >>>>>>>>>>>
> >>>>>>>>>>> @Configuration
> >>>>>>>>>>> public static class JavaConfig extends
> SingleRouteCamelConfiguration {
> >>>>>>>>>>>
> >>>>>>>>>>>         @Override
> >>>>>>>>>>>         public RouteBuilder route() {
> >>>>>>>>>>>                 return new RouteBuilder() {
> >>>>>>>>>>>
> >>>>>>>>>>>                         @Override
> >>>>>>>>>>>                         public void configure() throws
> Exception {
> >>>>>>>>>>>
> from("direct:start").to("log:blah?showProperties=true").log("${property.scaleResponse.message}").choice().when()
> >>>>>>>>>>>
> .simple("resource:classpath:simple/item_not_exists.txt").to("direct:match").otherwise().to("direct:nomatch").end();
> >>>>>>>>>>>
> from("direct:match").log("matched");
> >>>>>>>>>>>                                 from("direct:nomatch").log("no
> match");
> >>>>>>>>>>>
> this.getContext().setTracing(true);
> >>>>>>>>>>>                         }
> >>>>>>>>>>>                 };
> >>>>>>>>>>>         }
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> @After
> >>>>>>>>>>> public void afterTest() throws InterruptedException {
> >>>>>>>>>>>         matchEndpoint.assertIsSatisfied();
> >>>>>>>>>>>         noMatchEndpoint.assertIsSatisfied();
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> @Test
> >>>>>>>>>>> public void testMatch() {
> >>>>>>>>>>>         InterfaceResponse response = new InterfaceResponse();
> >>>>>>>>>>>         response.setMessage("ITEM XML Download  ended. : Item
> \"blah\" does not exist. - ");
> >>>>>>>>>>>         matchEndpoint.expectedMessageCount(1);
> >>>>>>>>>>>
> >>>>>>>>>>>         producerTemplate.sendBodyAndProperty(null,
> "scaleResponse", response);
> >>>>>>>>>>>
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> The regex you provide to mockendpointandskip  and mock
> endpoint is important to get right. I didn't add any regex to my example
> above because mocking all endpoints (the default) was ok in my example. if
> you get this regex wrong, camel doesn't warn you. You can turn on camel
> logging to see whether it has mocked your endpoint correctly or not. It
> should say something like the following. That's how you know it is working.
> >>>>>>>>>>>
> >>>>>>>>>>> INFO
>  org.apache.camel.impl.InterceptSendToMockEndpointStrategy - Adviced
> endpoint [direct://start] with mock endpoint [mock:direct:start]
> >>>>>>>>>>>
> >>>>>>>>>>> The regex value matching is a bit strange, if it doesn't match
> your endpoint even though you are absolutely sure it is correct, try
> tacking on ".*" on the end of it, this fixed it up for me many times. IMO I
> think it's a bug in the camel regex matching somewhere.
> >>>>>>>>>>>
> >>>>>>>>>>> When you do the @EndpointInject uri, make sure you prepend
> with "mock" and don't include anything pass the "?" in your uri. This
> wasn't obvious to me. And again camel won't warn you if you get this wrong.
> >>>>>>>>>>>
> >>>>>>>>>>> @DirtiesContext is a must otherwise you get strange behaviour
> once one test starts failing.
> >>>>>>>>>>>
> >>>>>>>>>>> Hope that helps.
> >>>>>>>>>>>
> >>>>>>>>>>> On 12/06/2014, at 8:27 AM, Matt Raible <m...@raibledesigns.com>
> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Thanks for the advice. I bought the book, read chapter 6 and
> I'm trying to use the advice builder. Chapter 6 talks about using mocks
> quite a bit, which seems useful in building a route, but not when it's
> already built.
> >>>>>>>>>>>>
> >>>>>>>>>>>> My routes are configured with Spring and JavaConfig in a
> CamelConfig class. When I try to use CamelTestSupport as my parent class,
> the context doesn't have any route definitions in it. In other words,
> context.getRouteDefinitions() returns an empty list. How do I get
> CamelTestSupport to recognize my routes configured in Spring? Or is it
> possible to inject the context and template and use adviceWith w/o
> extending CamelTestSupport?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>
> >>>>>>>>>>>> Matt
> >>>>>>>>>>>>
> >>>>>>>>>>>> @RunWith(SpringJUnit4ClassRunner.class)
> >>>>>>>>>>>> @ContextConfiguration(classes = CamelConfig.class)
> >>>>>>>>>>>> public class FooRouteTests extends CamelTestSupport {
> >>>>>>>>>>>>
> >>>>>>>>>>>> @Test
> >>>>>>>>>>>> public void testAdvised() throws Exception {
> >>>>>>>>>>>>
>  context.getRouteDefinition("routeId").adviceWith(context, new
> RouteBuilder() {
> >>>>>>>>>>>>                @Override
> >>>>>>>>>>>>                public void configure() throws Exception {
> >>>>>>>>>>>>                        // intercept sending to mock:foo and
> do something else
> >>>>>>>>>>>>                        interceptSendToEndpoint("sql:*")
> >>>>>>>>>>>>
>  .skipSendToOriginalEndpoint()
> >>>>>>>>>>>>                                        .to("log:foo")
> >>>>>>>>>>>>                                        .to("mock:advised");
> >>>>>>>>>>>>                }
> >>>>>>>>>>>>        });
> >>>>>>>>>>>>        // we must manually start when we are done with all
> the advice with
> >>>>>>>>>>>>        context.start();
> >>>>>>>>>>>>
> >>>>>>>>>>>>        template.sendBody("direct:foo", "bar");
> >>>>>>>>>>>>
> >>>>>>>>>>>>
>  getMockEndpoint("mock:advised").expectedMessageCount(1);
> >>>>>>>>>>>>        assertMockEndpointsSatisfied();
> >>>>>>>>>>>> }
> >>>>>>>>>>>>
> >>>>>>>>>>>> @Override
> >>>>>>>>>>>> public boolean isUseAdviceWith() {
> >>>>>>>>>>>>        // tell we are using advice with, which allows us to
> advice the route
> >>>>>>>>>>>>        // before Camel is being started, and thus can replace
> sql with something else.
> >>>>>>>>>>>>        return true;
> >>>>>>>>>>>> }
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Jun 11, 2014, at 12:16 PM, Claus Ibsen <
> claus.ib...@gmail.com> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Hi
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Yeah if you have Camel in Action book, read chapter 6.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> And see bottom of this page
> >>>>>>>>>>>>> http://camel.apache.org/testing
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> The advice builder is quite nifty and can "rework" the
> routes before testing.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Wed, Jun 11, 2014 at 8:10 PM, Matt Raible <
> m...@raibledesigns.com> wrote:
> >>>>>>>>>>>>>> Hello,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> I have a route that looks as follows:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>        from(uri)
> >>>>>>>>>>>>>>                        .to("log:input")
> >>>>>>>>>>>>>>
>  .recipientList(simple("direct:${header.operationName}"));
> >>>>>>>>>>>>>>        from("direct:lookup")
> >>>>>>>>>>>>>>                        .process(new Processor() {
> >>>>>>>>>>>>>>                                public void process(Exchange
> exchange) throws Exception {
> >>>>>>>>>>>>>>                                        // grab parameters
> from request and set as headers for SQL statement
> >>>>>>>>>>>>>>                                }
> >>>>>>>>>>>>>>                        })
> >>>>>>>>>>>>>>
>  .recipientList(simple("sql:{{sql.lookup}}")).delimiter("false")
> >>>>>>>>>>>>>>                        .to("log:output")
> >>>>>>>>>>>>>>                        .process(new Processor() {
> >>>>>>>>>>>>>>                                public void process(Exchange
> exchange) throws Exception {
> >>>>>>>>>>>>>>                                        List<HashMap> data =
> (ArrayList<HashMap>) exchange.getIn().getBody();
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>                                        // convert data to
> response
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
>  exchange.getOut().setBody(response);
> >>>>>>>>>>>>>>                                }
> >>>>>>>>>>>>>>                        })
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Is it possible to unit test this route and mock the data
> returned from the "sql" call? It'd love to be able to verify headers after
> the first .process, mock the results from the SQL call and verify the
> results from the 2nd .process method.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> All of the routes I've developed with Camel so far make SQL
> calls, but I see SOAP calls in the future. I'll eventually need to mock
> SOAP calls as well.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Matt
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> Claus Ibsen
> >>>>>>>>>>>>> -----------------
> >>>>>>>>>>>>> Red Hat, Inc.
> >>>>>>>>>>>>> Email: cib...@redhat.com
> >>>>>>>>>>>>> Twitter: davsclaus
> >>>>>>>>>>>>> Blog: http://davsclaus.com
> >>>>>>>>>>>>> Author of Camel in Action: http://www.manning.com/ibsen
> >>>>>>>>>>>>> hawtio: http://hawt.io/
> >>>>>>>>>>>>> fabric8: http://fabric8.io/
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Claus Ibsen
> >>>>>>> -----------------
> >>>>>>> Red Hat, Inc.
> >>>>>>> Email: cib...@redhat.com
> >>>>>>> Twitter: davsclaus
> >>>>>>> Blog: http://davsclaus.com
> >>>>>>> Author of Camel in Action: http://www.manning.com/ibsen
> >>>>>>> hawtio: http://hawt.io/
> >>>>>>> fabric8: http://fabric8.io/
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Claus Ibsen
> >>>>> -----------------
> >>>>> Red Hat, Inc.
> >>>>> Email: cib...@redhat.com
> >>>>> Twitter: davsclaus
> >>>>> Blog: http://davsclaus.com
> >>>>> Author of Camel in Action: http://www.manning.com/ibsen
> >>>>> hawtio: http://hawt.io/
> >>>>> fabric8: http://fabric8.io/
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> Claus Ibsen
> >>> -----------------
> >>> Red Hat, Inc.
> >>> Email: cib...@redhat.com
> >>> Twitter: davsclaus
> >>> Blog: http://davsclaus.com
> >>> Author of Camel in Action: http://www.manning.com/ibsen
> >>> hawtio: http://hawt.io/
> >>> fabric8: http://fabric8.io/
> >>
> >
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: cib...@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/
>

Reply via email to