Search in sources :

Example 1 with Policy

use of org.apache.camel.spi.Policy in project camel by apache.

the class TransactedDefinition method createProcessor.

@Override
public Processor createProcessor(RouteContext routeContext) throws Exception {
    Policy policy = resolvePolicy(routeContext);
    ObjectHelper.notNull(policy, "policy", this);
    // before wrap
    policy.beforeWrap(routeContext, this);
    // create processor after the before wrap
    Processor childProcessor = this.createChildProcessor(routeContext, true);
    // wrap
    Processor target = policy.wrap(routeContext, childProcessor);
    if (!(target instanceof Service)) {
        // wrap the target so it becomes a service and we can manage its lifecycle
        target = new WrapProcessor(target, childProcessor);
    }
    return target;
}
Also used : TransactedPolicy(org.apache.camel.spi.TransactedPolicy) Policy(org.apache.camel.spi.Policy) Processor(org.apache.camel.Processor) WrapProcessor(org.apache.camel.processor.WrapProcessor) WrapProcessor(org.apache.camel.processor.WrapProcessor) Service(org.apache.camel.Service)

Example 2 with Policy

use of org.apache.camel.spi.Policy in project camel by apache.

the class QueueToProcessorTransactionTest method testRollbackUsingXmlQueueToProcessor.

@Test
public void testRollbackUsingXmlQueueToProcessor() throws Exception {
    // configure routes and add to camel context
    context.addRoutes(new SpringRouteBuilder() {

        @Override
        public void configure() throws Exception {
            Policy required = lookup("PROPAGATION_REQUIRED_POLICY", SpringTransactionPolicy.class);
            from("activemq:queue:foo").policy(required).process(new ConditionalExceptionProcessor());
        }
    });
    assertResult();
}
Also used : SpringTransactionPolicy(org.apache.camel.spring.spi.SpringTransactionPolicy) Policy(org.apache.camel.spi.Policy) SpringRouteBuilder(org.apache.camel.spring.SpringRouteBuilder) SpringTransactionPolicy(org.apache.camel.spring.spi.SpringTransactionPolicy) Test(org.junit.Test)

Example 3 with Policy

use of org.apache.camel.spi.Policy in project camel by apache.

the class QueueToQueueRequestReplyTransactionTest method testRollbackUsingXmlQueueToQueueRequestReplyUsingDynamicMessageSelector.

@Test
public void testRollbackUsingXmlQueueToQueueRequestReplyUsingDynamicMessageSelector() throws Exception {
    final ConditionalExceptionProcessor cp = new ConditionalExceptionProcessor(5);
    context.addRoutes(new SpringRouteBuilder() {

        @Override
        public void configure() throws Exception {
            Policy required = lookup("PROPAGATION_REQUIRED_POLICY", SpringTransactionPolicy.class);
            from("activemq:queue:foo").policy(required).process(cp).to("activemq-1:queue:bar?replyTo=queue:bar.reply");
            from("activemq-1:queue:bar").process(new Processor() {

                public void process(Exchange e) {
                    String request = e.getIn().getBody(String.class);
                    Message out = e.getOut();
                    String selectorValue = e.getIn().getHeader("camelProvider", String.class);
                    if (selectorValue != null) {
                        out.setHeader("camelProvider", selectorValue);
                    }
                    out.setBody("Re: " + request);
                }
            });
        }
    });
    for (int i = 0; i < 5; ++i) {
        Object reply = template.requestBody("activemq:queue:foo", "blah" + i);
        assertTrue("Received unexpeced reply", reply.equals("Re: blah" + i));
        assertTrue(cp.getErrorMessage(), cp.getErrorMessage() == null);
    }
}
Also used : SpringTransactionPolicy(org.apache.camel.spring.spi.SpringTransactionPolicy) Policy(org.apache.camel.spi.Policy) Exchange(org.apache.camel.Exchange) Processor(org.apache.camel.Processor) SpringRouteBuilder(org.apache.camel.spring.SpringRouteBuilder) Message(org.apache.camel.Message) SpringTransactionPolicy(org.apache.camel.spring.spi.SpringTransactionPolicy) Test(org.junit.Test)

Example 4 with Policy

use of org.apache.camel.spi.Policy in project camel by apache.

the class QueueToQueueTransactionTest method testRollbackUsingXmlQueueToQueue.

@Test
public void testRollbackUsingXmlQueueToQueue() throws Exception {
    // configure routes and add to camel context
    context.addRoutes(new SpringRouteBuilder() {

        @Override
        public void configure() throws Exception {
            Policy required = lookup("PROPAGATION_REQUIRED_POLICY", SpringTransactionPolicy.class);
            from("activemq:queue:foo?transacted=true").policy(required).process(new ConditionalExceptionProcessor()).to("activemq:queue:bar?transacted=true");
        }
    });
    assertResult();
}
Also used : SpringTransactionPolicy(org.apache.camel.spring.spi.SpringTransactionPolicy) Policy(org.apache.camel.spi.Policy) SpringRouteBuilder(org.apache.camel.spring.SpringRouteBuilder) SpringTransactionPolicy(org.apache.camel.spring.spi.SpringTransactionPolicy) Test(org.junit.Test)

Example 5 with Policy

use of org.apache.camel.spi.Policy in project camel by apache.

the class PolicyDefinition method createProcessor.

@Override
public Processor createProcessor(RouteContext routeContext) throws Exception {
    Policy policy = resolvePolicy(routeContext);
    ObjectHelper.notNull(policy, "policy", this);
    // before wrap
    policy.beforeWrap(routeContext, this);
    // create processor after the before wrap
    Processor childProcessor = this.createChildProcessor(routeContext, true);
    // wrap
    Processor target = policy.wrap(routeContext, childProcessor);
    if (!(target instanceof Service)) {
        // wrap the target so it becomes a service and we can manage its lifecycle
        target = new WrapProcessor(target, childProcessor);
    }
    return target;
}
Also used : TransactedPolicy(org.apache.camel.spi.TransactedPolicy) Policy(org.apache.camel.spi.Policy) Processor(org.apache.camel.Processor) WrapProcessor(org.apache.camel.processor.WrapProcessor) WrapProcessor(org.apache.camel.processor.WrapProcessor) Service(org.apache.camel.Service)

Aggregations

Policy (org.apache.camel.spi.Policy)6 Processor (org.apache.camel.Processor)3 TransactedPolicy (org.apache.camel.spi.TransactedPolicy)3 SpringRouteBuilder (org.apache.camel.spring.SpringRouteBuilder)3 SpringTransactionPolicy (org.apache.camel.spring.spi.SpringTransactionPolicy)3 Test (org.junit.Test)3 Service (org.apache.camel.Service)2 WrapProcessor (org.apache.camel.processor.WrapProcessor)2 Method (java.lang.reflect.Method)1 Exchange (org.apache.camel.Exchange)1 Message (org.apache.camel.Message)1 NoSuchBeanException (org.apache.camel.NoSuchBeanException)1 RuntimeCamelException (org.apache.camel.RuntimeCamelException)1