Search in sources :

Example 46 with ProcessorInterceptor

use of org.mule.runtime.api.interception.ProcessorInterceptor in project mule by mulesoft.

the class ReactiveInterceptorAdapterTestCase method secondInterceptorFailsAround.

@Test
public void secondInterceptorFailsAround() throws Exception {
    RuntimeException expectedException = new RuntimeException("Some Error");
    ProcessorInterceptor interceptor1 = prepareInterceptor(new TestProcessorInterceptor("outer") {
    });
    ProcessorInterceptor interceptor2 = prepareInterceptor(new TestProcessorInterceptor("inner") {

        @Override
        public CompletableFuture<InterceptionEvent> around(ComponentLocation location, Map<String, ProcessorParameterValue> parameters, InterceptionEvent event, InterceptionAction action) {
            return action.fail(expectedException);
        }
    });
    startFlowWithInterceptors(interceptor1, interceptor2);
    expected.expectCause(sameInstance(expectedException));
    try {
        process(flow, eventBuilder(muleContext).message(Message.of("")).build());
    } finally {
        if (useMockInterceptor) {
            InOrder inOrder = inOrder(processor, interceptor1, interceptor2);
            inOrder.verify(interceptor1).before(any(), any(), any());
            inOrder.verify(interceptor2).before(any(), any(), any());
            inOrder.verify(interceptor1).around(any(), any(), any(), any());
            inOrder.verify(interceptor2).around(any(), any(), any(), any());
            inOrder.verify(processor, never()).process(any());
            inOrder.verify(interceptor2).after(any(), any(), eq(of(expectedException)));
            inOrder.verify(interceptor1).after(any(), any(), eq(of(expectedException)));
            verifyParametersResolvedAndDisposed(times(1));
        }
    }
}
Also used : DefaultComponentLocation(org.mule.runtime.dsl.api.component.config.DefaultComponentLocation) ComponentLocation(org.mule.runtime.api.component.location.ComponentLocation) CompletableFuture(java.util.concurrent.CompletableFuture) ExpressionRuntimeException(org.mule.runtime.core.api.expression.ExpressionRuntimeException) InOrder(org.mockito.InOrder) ProcessorInterceptor(org.mule.runtime.api.interception.ProcessorInterceptor) InterceptionEvent(org.mule.runtime.api.interception.InterceptionEvent) ProcessorParameterValue(org.mule.runtime.api.interception.ProcessorParameterValue) InterceptionAction(org.mule.runtime.api.interception.InterceptionAction) Test(org.junit.Test) SmallTest(org.mule.tck.size.SmallTest)

Example 47 with ProcessorInterceptor

use of org.mule.runtime.api.interception.ProcessorInterceptor in project mule by mulesoft.

the class ReactiveInterceptorAdapterTestCase method paramWithErrorExpression.

@Test
public void paramWithErrorExpression() throws Exception {
    Component annotatedProcessor = (Component) processor;
    Map<QName, Object> annotations = new HashMap<>(annotatedProcessor.getAnnotations());
    Map<String, String> params = new HashMap<>((Map<String, String>) annotations.get(ANNOTATION_PARAMETERS));
    params.put("errorExpr", "#[notAnExpression]");
    annotations.put(ANNOTATION_PARAMETERS, params);
    ((Component) processor).setAnnotations(annotations);
    ProcessorInterceptor interceptor = prepareInterceptor(new ProcessorInterceptor() {
    });
    startFlowWithInterceptors(interceptor);
    process(flow, eventBuilder(muleContext).message(Message.of("")).build());
    if (useMockInterceptor) {
        InOrder inOrder = inOrder(processor, interceptor);
        inOrder.verify(interceptor).before(any(), mapArgWithErrorEntry("errorExpr", instanceOf(ExpressionRuntimeException.class)), any());
        inOrder.verify(interceptor).around(any(), mapArgWithErrorEntry("errorExpr", instanceOf(ExpressionRuntimeException.class)), any(), any());
        inOrder.verify(processor).process(any());
        inOrder.verify(interceptor).after(any(), any(), any());
        verifyParametersResolvedAndDisposed(times(1));
    }
}
Also used : InOrder(org.mockito.InOrder) ProcessorInterceptor(org.mule.runtime.api.interception.ProcessorInterceptor) HashMap(java.util.HashMap) QName(javax.xml.namespace.QName) Component(org.mule.runtime.api.component.Component) AbstractComponent(org.mule.runtime.api.component.AbstractComponent) Test(org.junit.Test) SmallTest(org.mule.tck.size.SmallTest)

Example 48 with ProcessorInterceptor

use of org.mule.runtime.api.interception.ProcessorInterceptor in project mule by mulesoft.

the class ReactiveInterceptorAdapterTestCase method secondInterceptorThrowsExceptionAround.

@Test
public void secondInterceptorThrowsExceptionAround() throws Exception {
    RuntimeException expectedException = new RuntimeException("Some Error");
    ProcessorInterceptor interceptor1 = prepareInterceptor(new TestProcessorInterceptor("outer") {
    });
    ProcessorInterceptor interceptor2 = prepareInterceptor(new TestProcessorInterceptor("inner") {

        @Override
        public CompletableFuture<InterceptionEvent> around(ComponentLocation location, Map<String, ProcessorParameterValue> parameters, InterceptionEvent event, InterceptionAction action) {
            throw expectedException;
        }
    });
    startFlowWithInterceptors(interceptor1, interceptor2);
    expected.expectCause(sameInstance(expectedException));
    try {
        process(flow, eventBuilder(muleContext).message(Message.of("")).build());
    } finally {
        if (useMockInterceptor) {
            InOrder inOrder = inOrder(processor, interceptor1, interceptor2);
            inOrder.verify(interceptor1).before(any(), any(), any());
            inOrder.verify(interceptor2).before(any(), any(), any());
            inOrder.verify(interceptor1).around(any(), any(), any(), any());
            inOrder.verify(interceptor2).around(any(), any(), any(), any());
            inOrder.verify(processor, never()).process(any());
            inOrder.verify(interceptor2).after(any(), any(), eq(of(expectedException)));
            inOrder.verify(interceptor1).after(any(), any(), eq(of(expectedException)));
            verifyParametersResolvedAndDisposed(times(1));
        }
    }
}
Also used : DefaultComponentLocation(org.mule.runtime.dsl.api.component.config.DefaultComponentLocation) ComponentLocation(org.mule.runtime.api.component.location.ComponentLocation) CompletableFuture(java.util.concurrent.CompletableFuture) ExpressionRuntimeException(org.mule.runtime.core.api.expression.ExpressionRuntimeException) InOrder(org.mockito.InOrder) ProcessorInterceptor(org.mule.runtime.api.interception.ProcessorInterceptor) InterceptionEvent(org.mule.runtime.api.interception.InterceptionEvent) ProcessorParameterValue(org.mule.runtime.api.interception.ProcessorParameterValue) InterceptionAction(org.mule.runtime.api.interception.InterceptionAction) Test(org.junit.Test) SmallTest(org.mule.tck.size.SmallTest)

Aggregations

ProcessorInterceptor (org.mule.runtime.api.interception.ProcessorInterceptor)48 Test (org.junit.Test)46 SmallTest (org.mule.tck.size.SmallTest)46 ComponentLocation (org.mule.runtime.api.component.location.ComponentLocation)45 InOrder (org.mockito.InOrder)44 DefaultComponentLocation (org.mule.runtime.dsl.api.component.config.DefaultComponentLocation)43 InterceptionEvent (org.mule.runtime.api.interception.InterceptionEvent)42 ProcessorParameterValue (org.mule.runtime.api.interception.ProcessorParameterValue)35 CompletableFuture (java.util.concurrent.CompletableFuture)29 InterceptionAction (org.mule.runtime.api.interception.InterceptionAction)29 InternalEvent (org.mule.runtime.core.internal.message.InternalEvent)25 CoreEvent (org.mule.runtime.core.api.event.CoreEvent)24 ExpressionRuntimeException (org.mule.runtime.core.api.expression.ExpressionRuntimeException)23 Component (org.mule.runtime.api.component.Component)7 ProcessorInterceptorFactory (org.mule.runtime.api.interception.ProcessorInterceptorFactory)7 HashMap (java.util.HashMap)6 Map (java.util.Map)6 Thread.currentThread (java.lang.Thread.currentThread)5 AtomicReference (java.util.concurrent.atomic.AtomicReference)5 QName (javax.xml.namespace.QName)5