@Override public CoreEvent getEvent() { return decorated.getEvent(); }
@Override public Supplier<Error> resolve(ExecutionContext executionContext) { return () -> ((ExecutionContextAdapter) executionContext).getEvent().getError().orElse(null); } }
@Override public Supplier<VoidCompletionCallback> resolve(ExecutionContext executionContext) { return () -> { ExecutionContextAdapter adapter = (ExecutionContextAdapter) executionContext; CompletionCallback completionCallback = (CompletionCallback) adapter.getVariable(COMPLETION_CALLBACK_CONTEXT_PARAM); final CoreEvent event = adapter.getEvent(); return new VoidCompletionCallback() { @Override public void success() { completionCallback.success(EventedResult.from(event)); } @Override public void error(Throwable e) { completionCallback.error(e); } }; }; } }
@Override public Supplier<ExtensionsClient> resolve(ExecutionContext executionContext) { return () -> { ExecutionContextAdapter cxt = (ExecutionContextAdapter) executionContext; return new DefaultExtensionsClient(cxt.getMuleContext(), cxt.getEvent(), registry, policyManager); }; } }
/** * {@inheritDoc} */ @Override public Supplier<StreamingHelper> resolve(ExecutionContext executionContext) { return () -> { ExecutionContextAdapter<OperationModel> context = (ExecutionContextAdapter<OperationModel>) executionContext; return new DefaultStreamingHelper(context.getCursorProviderFactory(), context.getStreamingManager(), context.getEvent()); }; } }
@Override public Supplier<CorrelationInfo> resolve(ExecutionContext executionContext) { return () -> { CoreEvent event = ((ExecutionContextAdapter) executionContext).getEvent(); return new ImmutableCorrelationInfo(event.getContext().getId(), true, event.getCorrelationId(), event.getItemSequenceInfo().orElse(null)); }; } }
@Override public Supplier<BackPressureContext> resolve(ExecutionContext executionContext) { return new LazyValue<>(() -> { ExecutionContextAdapter ctx = (ExecutionContextAdapter) executionContext; BackPressureAction action = (BackPressureAction) ctx.getVariable(BACK_PRESSURE_ACTION_CONTEXT_PARAM); if (action == null) { action = FAIL; } return new ImmutableBackPressureContext(ctx.getEvent(), action, callbackContextResolver.resolve(ctx).get()); }); } }
/** * {@inheritDoc} * * @return {@link ExecutionContextAdapter#getEvent()} */ @Override public CoreEvent asReturnValue(Object value, ExecutionContextAdapter operationContext) { return CoreEvent.builder(operationContext.getEvent()).securityContext(operationContext.getSecurityContext()).build(); } }
@Override public Supplier<MediaType> resolve(ExecutionContext executionContext) { return () -> ((ExecutionContextAdapter) executionContext).getEvent().getMessage().getPayload().getDataType().getMediaType(); } }
@Override public Supplier<NotificationEmitter> resolve(ExecutionContext executionContext) { return () -> { ExecutionContextAdapter adaptedExecutionContext = (ExecutionContextAdapter) executionContext; return new DefaultNotificationEmitter(adaptedExecutionContext.getMuleContext().getNotificationManager(), adaptedExecutionContext.getEvent(), adaptedExecutionContext.getComponent(), adaptedExecutionContext.getComponentModel()); }; }
@Test public void returnsMuleEvent() throws MuleException { CoreEvent event = newEvent(); ExecutionContextAdapter operationContext = mock(ExecutionContextAdapter.class); when(operationContext.getEvent()).thenReturn(event); Object returnValue = VoidReturnDelegate.INSTANCE.asReturnValue(new Object(), operationContext); assertThat(event, is(sameInstance(returnValue))); } }
@Test public void operationContextIsWellFormed() throws Exception { ArgumentCaptor<ExecutionContext> operationContextCaptor = ArgumentCaptor.forClass(ExecutionContext.class); messageProcessor.process(event); verify(operationExecutor).execute(operationContextCaptor.capture()); ExecutionContext<ComponentModel> executionContext = operationContextCaptor.getValue(); assertThat(executionContext, is(instanceOf(ExecutionContextAdapter.class))); ExecutionContextAdapter<ComponentModel> executionContextAdapter = (ExecutionContextAdapter) executionContext; assertThat(executionContextAdapter.getEvent(), is(sameInstance(event))); assertThat(executionContextAdapter.getConfiguration().get().getValue(), is(sameInstance(configuration))); }
@Before public void before() throws MuleException { expressionManager = muleContext.getExpressionManager(); event = eventBuilder(muleContext).message(Message.builder().value("").attributesValue(attributes).build()).build(); when(operationContext.getEvent()).thenReturn(event); when(operationContext.getMuleContext()).thenReturn(muleContext); when(componentModel.getModelProperty(MediaTypeModelProperty.class)).thenReturn(empty()); }
@Before public void before() throws MuleException { streamingManager = new DefaultStreamingManager(); LifecycleUtils.initialiseIfNeeded(streamingManager, muleContext); event = eventBuilder(muleContext).message(Message.builder().value("").attributesValue(attributes).build()).build(); when(outputModel.getType()).thenReturn(BaseTypeBuilder.create(JAVA).voidType().build()); when(outputModel.getModelProperty(any())).thenReturn(empty()); when(outputModel.getModelProperties()).thenReturn(emptySet()); when(outputModel.getDescription()).thenReturn(""); when(componentModel.getModelProperty(MediaTypeModelProperty.class)).thenReturn(empty()); when(componentModel.getOutput()).thenReturn(outputModel); delegate = createReturnDelegate(); when(operationContext.getEvent()).thenReturn(event); when(operationContext.getMuleContext()).thenReturn(muleContext); when(operationContext.getComponentModel()).thenReturn(componentModel); when(operationContext.getVariable(contains(CONNECTION_PARAM))).thenReturn(connectionHandler); }
@Override public CoreEvent asReturnValue(Object value, ExecutionContextAdapter operationContext) { TypedValue result = expressionManager .evaluate(targetValue, getTargetBindingContext(toMessage(value, operationContext))); return CoreEvent.builder(operationContext.getEvent()) .securityContext(operationContext.getSecurityContext()) .addVariable(this.target, result.getValue(), result.getDataType()) .build(); } }
/** * If the {@code value} is a {@link Message}, then a new one is created merging the contents of the returned value with the ones * of the input message. The merging criteria is as follows: * <li> * <ul> * The {@code value}'s payload and DataType is set on the output message * </ul> * <ul> * If the {@code value} has a not {@code null} output for {@link Message#getAttributes()}, then that value is set on the * outbound message. Otherwise, whatever value the input message had is maintained * </ul> * </li> * <p> * If the {@code value} is of any other type, then it's set as the payload of the outgoing message {@inheritDoc} */ @Override public CoreEvent asReturnValue(Object value, ExecutionContextAdapter operationContext) { return value instanceof EventedResult ? ((EventedResult) value).getEvent() : CoreEvent.builder(operationContext.getEvent()) .securityContext(operationContext.getSecurityContext()) .message(toMessage(value, operationContext)).build(); } }
/** * {@inheritDoc} * * @return {@link ExecutionContextAdapter#getEvent()} */ @Override public CoreEvent asReturnValue(Object value, ExecutionContextAdapter operationContext) { return CoreEvent.builder(operationContext.getEvent()).securityContext(operationContext.getSecurityContext()).build(); } }
@Override public LazyValue<CorrelationInfo> resolve(ExecutionContext executionContext) { return new LazyValue<>(() -> { CoreEvent event = ((ExecutionContextAdapter) executionContext).getEvent(); return new ImmutableCorrelationInfo(event.getContext().getId(), true, event.getCorrelationId(), event.getItemSequenceInfo().orElse(null)); }); } }
Optional<Charset> contextEncodingParam = getContextEncoding(params); final MediaType mediaType = resolveMediaType(value, contextMimeTypeParam, contextEncodingParam); final CoreEvent event = operationContext.getEvent();
@Override public LazyValue<BackPressureContext> resolve(ExecutionContext executionContext) { return new LazyValue<>(() -> { ExecutionContextAdapter ctx = (ExecutionContextAdapter) executionContext; BackPressureAction action = (BackPressureAction) ctx.getVariable(BACK_PRESSURE_ACTION_CONTEXT_PARAM); if (action == null) { action = FAIL; } return new ImmutableBackPressureContext(ctx.getEvent(), action, callbackContextResolver.resolve(ctx).get()); }); } }