osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Unit Testing REST DSL Endpoints


Awesome! Thanks Claus!

On Thu, Dec 20, 2018 at 5:38 PM Claus Ibsen <claus.ibsen@xxxxxxxxx> wrote:

> 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
>