The only problem i am having with this is I cannot use mocks for endpoints
that are consumed from.

I get the following error..

 org.apache.camel.RuntimeCamelException:
java.lang.UnsupportedOperationException: You cannot consume from this
endpoint

So I tried to use direct:xxx for these, but then I cannot see if they have
received any messages.




On Tue, Mar 29, 2011 at 6:06 PM, Tom Howe <tomh...@artcore.com> wrote:

> yes placeholders is the way I solved it myself. I coudn't get the
> advicewith to work and it didnt really seem like a good fit.
>
> So I have..
>
> <endpoint uri="${myendpoint}"/>
>
> like this..
>
> int.properties
> myendpoint=activemq:myendpoint
>
> test.properties
> myendpoint=mock:activemq-myendpoint
>
> Is 2.8 final? or coming soon?
>
>
>
> On Tue, Mar 29, 2011 at 3:14 PM, Claus Ibsen <claus.ib...@gmail.com>wrote:
>
>> Hi Tom
>>
>> Yeah the adviceWith started as a feature to advice single routes. But
>> can also be used to mock and skip sending to endpoints as shown on
>> those wiki pages.
>>
>> However its often easier to either
>> - use property placeholders for uris, so you can use mock:xxx for unit
>> tests, and mina:xxx for the real apps
>> - or add the endpoint pre starting the routes
>>
>> In the latter you can most likely do something like:
>>    context.addEndpoint("mina:xxx", new MockEndpoint());
>>
>> However in Camel 2.8 onwards its easier as you can replace entire
>> components with mock using
>>   context.addComponent("mina", context.getComponent("mock"));
>>
>>
>>
>> On Tue, Mar 29, 2011 at 10:35 AM, Tom Howe <tomh...@artcore.com> wrote:
>> > I tried this..
>> >
>> >        context.getRouteDefinitions().get(0).adviceWith(context, new
>> > RouteBuilder() {
>> >            @Override
>> >            public void configure() throws Exception {
>> >
>> >
>>  interceptSendToEndpoint("mock:mina:tcp://unreachable.splunk.server:9000")
>> >                        .skipSendToOriginalEndpoint()
>> >                        .to("mock:mina-advised");
>> >            }
>> >        });
>> >
>> >
>> > I have multiple routes in my config - does get(0) just get the first
>> route?
>> >
>> > I also tried this..
>> >
>> >        context.getRouteDefinition("toSplunk").adviceWith(context, new
>> > RouteBuilder() {
>> >            @Override
>> >            public void configure() throws Exception {
>> >
>> >
>>  interceptSendToEndpoint("mock:mina:tcp://unreachable.splunk.server:9000")
>> >                        .skipSendToOriginalEndpoint()
>> >                        .to("mock:mina-advised");
>> >            }
>> >        });
>> >
>> > and this (with direct component - not mock)..
>> >        context.getRouteDefinition("toSplunk").adviceWith(context, new
>> > RouteBuilder() {
>> >            @Override
>> >            public void configure() throws Exception {
>> >
>> >  interceptSendToEndpoint("mina:tcp://unreachable.splunk.server:9000")
>> >                        .skipSendToOriginalEndpoint()
>> >                        .to("mock:mina-advised");
>> >            }
>> >        });
>> >
>> > All give   java.nio.channels.UnresolvedAddressException because they are
>> > trying to write to splunk server.
>> >
>> > My route looks like:
>> >
>> >        <route autoStartup="true" id="tosplunk" xmlns="
>> > http://camel.apache.org/schema/spring";>
>> >            <from uri="direct:splunk.in"/>
>> >            <filter>
>> >                <xpath>//*[local-name() = "event"]</xpath>
>> >                <bean ref="unWrapEnvelopeXml"/>
>> >                <bean ref="ispyXmlToSplunk"/>
>> >                <to
>> >
>> uri="mina:tcp://unreachable.splunk.server:9000?textline=true&amp;textlineDelimiter=UNIX&amp;sync=false"/>
>> >            </filter>
>> >        </route>
>> >
>> >
>> > Thanks, Tom
>> >
>> >
>> >
>> > On Mon, Mar 28, 2011 at 8:24 PM, Tom Howe <tomh...@artcore.com> wrote:
>> >
>> >> Is this what you are pointing me to? .skipSendToOriginalEndpoint()
>> >>
>> >> How do I use this in my spring xml routes?
>> >>
>> >>
>> >> On Mon, Mar 28, 2011 at 7:02 PM, Claus Ibsen <claus.ib...@gmail.com
>> >wrote:
>> >>
>> >>> See
>> >>> http://camel.apache.org/advicewith.html
>> >>>
>> >>> On Mon, Mar 28, 2011 at 7:47 PM, Tom Howe <tomh...@artcore.com>
>> wrote:
>> >>> > I have a route such as:
>> >>> >
>> >>> >  <route autoStartup="true" xmlns="
>> http://camel.apache.org/schema/spring
>> >>> ">
>> >>> >         <from uri="activemq:somequeue"/>
>> >>> >         ...
>> >>> >         <to uri="http:hostname/some/path"/>
>> >>> >   </route>
>> >>> >
>> >>> > If I set up mocking, using a wrapper xml file containing:
>> >>> >
>> >>> >    <bean id="mockAllEndpoints"
>> >>> > class="org.apache.camel.impl.InterceptSendToMockEndpointStrategy"/>
>> >>> >
>> >>> > I can now intercept the endpoints to see what was sent but how to I
>> >>> prevent
>> >>> > the test from connecting to activemq and the remote http server so I
>> can
>> >>> run
>> >>> > the test without any external interaction?
>> >>> >
>> >>> > I managed to use
>> >>> >    <bean id="activemq"
>> >>> > class="org.apache.camel.component.direct.DirectComponent" />
>> >>> >
>> >>> > to prevent activemq connecting, but the same trick did not work with
>> >>> mina or
>> >>> > http since the parameters passed are not appropriate.
>> >>> >
>> >>> >
>> >>> > Thanks, Tom
>> >>> >
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Claus Ibsen
>> >>> -----------------
>> >>> FuseSource
>> >>> Email: cib...@fusesource.com
>> >>> Web: http://fusesource.com
>> >>> Twitter: davsclaus
>> >>> Blog: http://davsclaus.blogspot.com/
>> >>> Author of Camel in Action: http://www.manning.com/ibsen/
>> >>>
>> >>
>> >>
>> >
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: cib...@fusesource.com
>> Web: http://fusesource.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>>
>
>

Reply via email to