[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
Re: Unit Testing REST DSL Endpoints
On Thu, Dec 20, 2018 at 11:34 PM Bradford Fisher
<bradford@xxxxxxxxxxxxxxxxxx> wrote:
>
> Hey Claus,
>
> Thanks for responding! I was actually just considering routing the REST DSL
> Endpoints directly to the "direct" endpoint and then testing from the
> direct Endpoint onward.
>
> Just to clarify, you are suggesting something similar to:
>
> rest("/test")
> .post()
> .route()
> .to("direct:process")
> .endRest();
>
> from("direct:process")
> .process(testProcessor)
> .to("direct:out");
>
> Where "direct:process" would be the start of any real processing and thus
> what ought to be tested?
>
Yeah its good practice to separate rest-dsl from the regular Camel
routes and link them via the direct endpoint.
In your rest-dsl above you can also omit the route, as there is a
shortcut where you can just use to or toD to call another route asap.
> On Thu, Dec 20, 2018 at 5:18 PM Claus Ibsen <claus.ibsen@xxxxxxxxx> wrote:
>
> > So what you should/can advice is the route that you are calling via
> > direct, eg the route that you may have the starts from direct:out
> >
> >
> > On Thu, Dec 20, 2018 at 11:13 PM Claus Ibsen <claus.ibsen@xxxxxxxxx>
> > wrote:
> > >
> > > Hi
> > >
> > > The advice with functionality is for regular Camel routes, eg they
> > > start via from()
> > > So what you do is not supported.
> > >
> > > On Thu, Dec 20, 2018 at 10:15 PM Bradford Fisher
> > > <bradford@xxxxxxxxxxxxxxxxxx> wrote:
> > > >
> > > > I'm trying to replace a REST DSL "from" Endpoint using adviceWith and
> > > > replaceFromWith appears to be failing because Camel is appending a
> > routeId
> > > > parameter to the end of the direct URI.
> > > >
> > > > Any suggestions on how to fix this? I've included below a sample Test
> > class
> > > > illustrating the issue as well as the failure.
> > > >
> > > > ######################################################
> > > > # Test Program
> > > > ######################################################
> > > >
> > > > package com.theperducogroup;
> > > >
> > > > import org.apache.camel.builder.RouteBuilder;
> > > > import org.apache.camel.builder.AdviceWithRouteBuilder;
> > > > import org.apache.camel.model.RouteDefinition;
> > > > import org.apache.camel.test.junit4.CamelTestSupport;
> > > >
> > > > import org.junit.Test;
> > > >
> > > > public class RestfulRouteTest extends CamelTestSupport
> > > > {
> > > > @Test
> > > > public void doSomething()
> > > > {
> > > > try
> > > > {
> > > > context.getRouteDefinition("test").adviceWith(context, new
> > > > AdviceWithRouteBuilder()
> > > > {
> > > > public void configure()
> > > > {
> > > > replaceFromWith("direct:test");
> > > > }
> > > > });
> > > > }
> > > > catch (Exception e)
> > > > {
> > > > System.out.println(e);
> > > > }
> > > > }
> > > >
> > > > @Override
> > > > protected RouteBuilder createRouteBuilder()
> > > > {
> > > > return new RouteBuilder()
> > > > {
> > > > public void configure()
> > > > {
> > > > restConfiguration()
> > > > .component("undertow");
> > > >
> > > > rest("/test").post().route()
> > > > .routeId("test")
> > > > .to("direct:out")
> > > > .endRest();
> > > > }
> > > > };
> > > > }
> > > > }
> > > >
> > > > ######################################################
> > > > # Exception
> > > > ######################################################
> > > >
> > > > org.apache.camel.FailedToCreateRouteException: Failed to create route
> > test:
> > > > Route(test)[[From[direct://test?routeId=test]] -> [To[direct...
> > because of
> > > > Failed to resolve endpoint: direct://test?routeId=test due to: Failed
> > to
> > > > resolve endpoint: direct://test?routeId=test due to: There are 1
> > parameters
> > > > that couldn't be set on the endpoint. Check the uri if the parameters
> > are
> > > > spelt correctly and that they are properties of the endpoint. Unknown
> > > > parameters=[{routeId=test}]
> > >
> > >
> > >
> > > --
> > > 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 @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2