Hi Jiang,

The mock has been defined as :

 <bean id="myService" class="org.mockito.Mockito" factory-method="mock">
        <constructor-arg value="com.test.StrategicServiceProxy" />
    </bean>

-Regards,
Atg roxx


On Fri, Jul 11, 2014 at 1:03 PM, Willem Jiang <willem.ji...@gmail.com>
wrote:

> Hi,
>
> It looks like you are using some kind of MOCK API to throw the exception.
> Can you show me the code how did you setup the mocked POJO bean?
> --
> Willem Jiang
>
> Red Hat, Inc.
> Web: http://www.redhat.com
> Blog: http://willemjiang.blogspot.com (English)
> http://jnn.iteye.com (Chinese)
> Twitter: willemjiang
> Weibo: 姜宁willem
>
>
>
> On July 8, 2014 at 11:36:38 PM, atg roxx (atgr...@gmail.com) wrote:
> > Hi Team,
> >
> > I am using multicast with AggreationStrategy an also using onException on
> > my route.
> >
> > Happy case is working fine,
> >
> > But when there is any exception, my exception processor handle it and
> set a
> > header and add error message in the body of the exchange.
> >
> > When call go back to aggregator, it check whether the body of the
> exchange
> > received is not null and of type Class A or not. if not then we know this
> > exchange is returned by the Exception handler. and we return that
> exchange.
> >
> > When testing for exception , my mock end point does not receive exchange
> > set by the exception processor.
> >
> > Kindly guide me where I am getting things wrong.:
> >
> > Below is the source code:
> >
> > Route definition :-------------------------------------
> >
> > onException(RecoverableException.class)
> > .maximumRedeliveries(2)
> > .handled(true)
> > .beanRef("myCustomeExceptionHandler","handleException");
> >
> >
> > from("{{route.direct.endpoint}}")
> > .routeId(ROUTE_ID)
> > .multicast(new MyAggregationStrategy())
> > .parallelProcessing()
> > .timeout(COMPLETION_TIMEOUT)
> > .to(GET_DETAILS, GET_SUMMARY, GET_IMAGE)
> > .end()
> > .marshal(responseFormat);
> >
> > from(GET_SUMMARY)
> > .choice()
> > .when(summaryIsRequested)
> > .beanRef("myCustomeService", "getSummary")
> > .otherwise()
> > .setBody().constant(null)
> > .log(LoggingLevel.DEBUG, "Skipping summary - not
> > requested.")
> > .end();
> >
> > from(GET_DETAILS)
> > .choice()
> > .when(detailsAreRequested)
> > .beanRef("myCustomeService", "getDetails")
> > .otherwise()
> > .setBody().constant(null)
> > .log(LoggingLevel.DEBUG, "Skipping details - not
> > requested.")
> > .end();
> >
> > from(GET_IMAGE)
> > .routeId("podImageRoute")
> > .choice()
> > .when(podImageIsRequested)
> > .beanRef("myCustomeService", "getImage")
> > .otherwise()
> > .setBody().constant(null)
> > .log(LoggingLevel.DEBUG, "Skipping image - not requested.")
> > .end();
> >
> > Exception Handler
> > :------------------------------------------------------------------
> > public class HttpResponseExceptionHandler implements ExceptionHandler {
> > @Override
> > public void handleRecoverableException(Exchange exchange) {
> > Throwable cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT,
> > Exception.class);
> > String failureRouteId = exchange.getProperty(Exchange.FAILURE_ROUTE_ID,
> > String.class);
> > String errorMessage = cause.getMessage();
> > LOGGER.error("Exception occurred in the route {}. Exception details are:
> > {}", failureRouteId, errorMessage);
> > exchange.getIn().removeHeaders("*");
> > exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, statusCode);
> > exchange.getIn().setBody(errorMessage);
> > }
> > }
> >
> > Aggregator code: ----------------------------
> >
> > public class MyCustomeAggregationStrategy implements AggregationStrategy
> {
> >
> > @Override
> > public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
> >
> > if (oldExchange == null) { // occurs for a new group
> > return newExchange;
> > }
> >
> > if (exchangeHasNonNullBody(oldExchange) &&
> > exchangeContainBodyofTypeClassA(oldExchange)) {
> > oldBody=oldExchange.getIn().getBody();
> > } else {
> > return oldExchange; // assuming that body contain string
> > message set in Exception Handler
> > }
> > }
> >
> > if (exchangeHasNonNullBody(newExchange) &&
> > exchangeContainBodyofTypeClassA(newExchange)) {
> > newBody=newExchange.getIn().getBody();
> > } else {
> > return newExchange; // assuming that body contain string
> > message set in Exception Handler
> > }
> > }
> >
> > MergeBodyofOldAndNewExchange(oldExchange,oldBody,newBody);
> >
> > return oldExchange;
> > }
> >
> > ----------------------
> >
> > Test case :---------------------
> >
> >
> > @DirtiesContext
> > @Test
> > public void testExceptionHandeling() throws Exception {
> >
> > // Given
> > when(myService.getImage(anyString(), anyString())).thenThrow(new
> > ConnectionException("Exception of type ConnectionException"));
> > mockEndpointResult.expectedMessageCount(1);
> >
> > // When
> > try {
> > template.sendBody("{{route.direct.endpoint}}", request);
> > Thread.sleep(1000); // wait a few moments...
> > //then
> > mockEndpointResult.assertIsSatisfied(); // fails here
> >
> > } catch (CamelExecutionException ex) {
> > //then
> > fail();
> > }
> > }
> >
> >
> > -- Regards,
> > atg roxx
> >
>
>

Reply via email to