/** * Creates a basic event builder with its context built from the provided {@code muleContext}. */ public static <B extends CoreEvent.Builder> B eventBuilder(MuleContext muleContext) throws MuleException { FlowConstruct flowConstruct = getTestFlow(muleContext); return (B) InternalEvent.builder(create(flowConstruct, TEST_CONNECTOR_LOCATION)); }
@Test public void throwExceptionWhenMoreThanOneOperationFactorySupportsIdentifier() { operationPointcutFactories.add(mockOperationFactory(true, null)); operationPointcutFactories.add(mockOperationFactory(true, null)); expectedException.expect(MuleRuntimeException.class); when(event.getInternalParameters()).thenReturn(emptyMap()); parametersManager.createOperationPointcutParameters(component, event, new HashMap<>()); }
private void mockEvent() { event = mock(InternalEvent.class, RETURNS_DEEP_STUBS); eventContext = mock(BaseEventContext.class, RETURNS_DEEP_STUBS); when(event.getContext()).thenReturn(eventContext); when(eventContext.getRootContext()).thenReturn(eventContext); when(eventContext.getCorrelationId()).thenReturn("anId"); }
@Test public void createOperationParametersWhenEmptyFactory() { Map<String, Object> operationParameters = new HashMap<>(); sourcePointcutFactories.add(mockSourceFactory(true)); PolicyPointcutParameters sourceParameters = parametersManager.createSourcePointcutParameters(component, event.getMessage().getAttributes()); when(event.getInternalParameter(POLICY_SOURCE_POINTCUT_PARAMETERS)).thenReturn(sourceParameters); PolicyPointcutParameters parameters = parametersManager.createOperationPointcutParameters(component, event, operationParameters); assertThat(parameters.getComponent(), is(component)); assertThat(parameters.getSourceParameters(), is(of(sourceParameters))); }
@Test public void createSourceParametersWhenOneFactoryDoesNotSupportsIdentifier() { SourcePolicyPointcutParametersFactory factory = mockSourceFactory(false); sourcePointcutFactories.add(factory); PolicyPointcutParameters parameters = parametersManager.createSourcePointcutParameters(component, event.getMessage().getAttributes()); Map singletonMap = singletonMap(POLICY_SOURCE_POINTCUT_PARAMETERS, parameters); when(event.getInternalParameters()).thenReturn(singletonMap); assertThat(parameters.getComponent(), is(component)); assertThat(parameters.getSourceParameters(), empty()); verify(factory).supportsSourceIdentifier(identifier); verify(factory, never()).createPolicyPointcutParameters(component, event.getMessage().getAttributes()); }
public DefaultEventBuilder(InternalEvent event) { this.context = event.getContext(); this.originalEvent = event; this.message = event.getMessage(); this.itemSequenceInfo = event.getItemSequenceInfo(); this.legacyCorrelationId = event.getLegacyCorrelationId(); this.replyToHandler = event.getReplyToHandler(); this.replyToDestination = event.getReplyToDestination(); this.securityContext = event.getSecurityContext(); this.session = event.getSession(); this.error = event.getError().orElse(null); this.notificationsEnabled = event.isNotificationsEnabled(); this.flowVariables.putAll(event.getVariables()); this.internalParameters.putAll(event.getInternalParameters()); }
@Test public void aggregateSingleEvent() { Message message1 = Message.of("test event A"); InternalEvent event1 = InternalEvent.builder(context).message(message1).addVariable("key1", "value1").build(); event1.getSession().setProperty("key", "value"); Message message2 = Message.of("test event B"); InternalEvent event2 = InternalEvent.builder(context).message(message2).addVariable("key2", "value2").build(); event2.getSession().setProperty("key", "valueNEW"); event2.getSession().setProperty("key1", "value1"); CoreEvent result = resultsHandler.aggregateResults(singletonList(event2), event1); assertSame(event2, result); // Because same event instance is returned rather than MessageCollection // don't copy invocation properties assertThat(result.getVariables().keySet(), not(hasItem("key1"))); assertThat(result.getVariables().get("key2").getValue(), equalTo("value2")); PrivilegedEvent privilegedResult = (PrivilegedEvent) result; assertThat(privilegedResult.getSession().getProperty("key"), equalTo("valueNEW")); assertThat(privilegedResult.getSession().getProperty("key1"), equalTo("value1")); }
private PrecalculatedExecutionContextAdapter<T> getPrecalculatedContext(CoreEvent event) { return ((InternalEvent) event).getInternalParameter(INTERCEPTION_RESOLVED_CONTEXT); }
@Override public MuleSession getSession() { return interceptedInput.getSession(); }
private SourcePolicyPointcutParametersFactory mockSourceFactory(boolean supportsIdentifier) { SourcePolicyPointcutParametersFactory factory = mock(SourcePolicyPointcutParametersFactory.class); when(factory.supportsSourceIdentifier(identifier)).thenReturn(supportsIdentifier); PolicyPointcutParameters parameters = new PolicyPointcutParameters(component); when(factory.createPolicyPointcutParameters(component, event.getMessage().getAttributes())).thenReturn(parameters); return factory; }
Message message3 = Message.of("test event C"); PrivilegedEvent event1 = InternalEvent.builder(context).message(message1).addVariable("key1", "value1", simpleDateType1).build(); MuleSession session = event1.getSession(); PrivilegedEvent event2 = InternalEvent.builder(context).message(message2).session(session) .addVariable("key2", "value2", simpleDateType1).build(); InternalEvent event3 = InternalEvent.builder(context).message(message3).session(session) .addVariable("key3", "value3", simpleDateType1).build(); event1.getSession().setProperty("key", "value"); event2.getSession().setProperty("key1", "value1"); event2.getSession().setProperty("key2", "value2"); event3.getSession().setProperty("KEY2", "value2NEW"); event3.getSession().setProperty("key3", "value3");
@Test public void createSourceParametersWhenEmptyFactory() { PolicyPointcutParameters parameters = parametersManager.createSourcePointcutParameters(component, event.getMessage().getAttributes()); Map singletonMap = singletonMap(POLICY_SOURCE_POINTCUT_PARAMETERS, parameters); when(event.getInternalParameters()).thenReturn(singletonMap); assertThat(parameters.getComponent(), is(component)); assertThat(parameters.getSourceParameters(), empty()); }
@Test public void createOperationParametersFallbacksToDeprecatedMethod() { Map<String, Object> operationParameters = new HashMap<>(); PolicyPointcutParameters sourceParameters = parametersManager.createSourcePointcutParameters(component, event.getMessage().getAttributes()); when(event.getInternalParameter(POLICY_SOURCE_POINTCUT_PARAMETERS)).thenReturn(sourceParameters); OperationPolicyPointcutParametersFactory factory = mockOperationFactory(true, sourceParameters); PolicyPointcutParameters parameters = mock(PolicyPointcutParameters.class); when(factory.createPolicyPointcutParameters(any(), any(), any())).thenThrow(new AbstractMethodError()); when(factory.createPolicyPointcutParameters(component, operationParameters)).thenReturn(parameters); operationPointcutFactories.add(factory); PolicyPointcutParameters returnedParameters = parametersManager.createOperationPointcutParameters(component, event, operationParameters); assertThat(returnedParameters, is(parameters)); verify(factory).supportsOperationIdentifier(identifier); verify(factory).createPolicyPointcutParameters(any(), any(), any()); verify(factory).createPolicyPointcutParameters(component, operationParameters); }
private boolean isInterceptedComponent(ComponentLocation location, InternalEvent event) { final Component component = event.getInternalParameter(INTERCEPTION_COMPONENT); if (component != null) { return location.equals(component.getLocation()); } return false; } }
/** * Creates the event builder from an event * * @param originalEvent Base event from where to create the new one */ public EventBuilder(Event originalEvent) { this.muleEventBuilder = PrivilegedEvent.builder((InternalEvent) originalEvent); this.muleMessageBuilder = InternalMessage.builder(originalEvent.getMessage()); this.session = new DefaultMuleSession(((InternalEvent) originalEvent).getSession()); }
@Test public void throwExceptionWhenMoreThanOneSourceFactorySupportsIdentifier() { sourcePointcutFactories.add(mockSourceFactory(true)); sourcePointcutFactories.add(mockSourceFactory(true)); expectedException.expect(MuleRuntimeException.class); parametersManager.createSourcePointcutParameters(component, event.getMessage().getAttributes()); }
@Override protected InternalEvent.Builder getEventBuilder() throws MuleException { return InternalEvent.builder(create(flow, TEST_CONNECTOR_LOCATION)); }
@Test public void secondInterceptorSkipsProcessor() throws Exception { 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.skip(); } }); startFlowWithInterceptors(interceptor1, interceptor2); CoreEvent result = process(flow, eventBuilder(muleContext).message(Message.of("")).build()); assertThat(result.getMessage().getPayload().getValue(), is("")); 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(empty())); inOrder.verify(interceptor1).after(any(), any(), eq(empty())); assertThat(((InternalEvent) result).getInternalParameters().entrySet(), hasSize(0)); verifyParametersResolvedAndDisposed(times(1)); } }
@Test public void aggregateSingleEvent() { Message message1 = Message.of("test event A"); InternalEvent event1 = InternalEvent.builder(context).message(message1).addVariable("key1", "value1").build(); event1.getSession().setProperty("key", "value"); Message message2 = Message.of("test event B"); InternalEvent event2 = InternalEvent.builder(context).message(message2).addVariable("key2", "value2").build(); event2.getSession().setProperty("key", "valueNEW"); event2.getSession().setProperty("key1", "value1"); CoreEvent result = resultsHandler.aggregateResults(singletonList(event2), event1); assertSame(event2, result); // Because same event instance is returned rather than MessageCollection // don't copy invocation properties assertThat(result.getVariables().keySet(), not(hasItem("key1"))); assertThat(result.getVariables().get("key2").getValue(), equalTo("value2")); PrivilegedEvent privilegedResult = (PrivilegedEvent) result; assertThat(privilegedResult.getSession().getProperty("key"), equalTo("valueNEW")); assertThat(privilegedResult.getSession().getProperty("key1"), equalTo("value1")); }
@Test public void createSourceParametersWhenOneFactorySupportsIdentifier() { SourcePolicyPointcutParametersFactory factory = mockSourceFactory(true); sourcePointcutFactories.add(factory); PolicyPointcutParameters parameters = parametersManager.createSourcePointcutParameters(component, event.getMessage().getAttributes()); Map singletonMap = singletonMap(POLICY_SOURCE_POINTCUT_PARAMETERS, parameters); when(event.getInternalParameters()).thenReturn(singletonMap); assertThat(parameters.getComponent(), is(component)); assertThat(parameters.getSourceParameters(), empty()); verify(factory).supportsSourceIdentifier(identifier); verify(factory).createPolicyPointcutParameters(component, event.getMessage().getAttributes()); }