Search in sources :

Example 1 with MessagingExceptionResolver

use of org.mule.runtime.core.internal.util.MessagingExceptionResolver in project mule by mulesoft.

the class MessagingExceptionResolverTestCase method resolveCorrectConnectionException.

@Test
public void resolveCorrectConnectionException() {
    ErrorType expected = ErrorTypeBuilder.builder().namespace("NS").identifier("CONNECTION").parentErrorType(CONNECTION).build();
    ErrorTypeLocator locator = ErrorTypeLocator.builder(repository).addComponentExceptionMapper(ci, ExceptionMapper.builder().addExceptionMapping(ConnectionException.class, expected).build()).defaultExceptionMapper(ExceptionMapper.builder().build()).defaultError(UNKNOWN).build();
    when(((PrivilegedMuleContext) context).getErrorTypeLocator()).thenReturn(locator);
    MessagingException me = newMessagingException(CONNECTION_EXCEPTION, event, processor);
    MessagingExceptionResolver anotherResolver = new MessagingExceptionResolver(new TestProcessor());
    MessagingException resolved = anotherResolver.resolve(me, context);
    assertExceptionErrorType(resolved, expected);
    assertExceptionMessage(resolved.getMessage(), "CONNECTION PROBLEM");
}
Also used : ErrorType(org.mule.runtime.api.message.ErrorType) MessagingException(org.mule.runtime.core.internal.exception.MessagingException) ErrorTypeLocator(org.mule.runtime.core.privileged.exception.ErrorTypeLocator) MessagingExceptionResolver(org.mule.runtime.core.internal.util.MessagingExceptionResolver) PrivilegedMuleContext(org.mule.runtime.core.privileged.PrivilegedMuleContext) ConnectionException(org.mule.runtime.api.connection.ConnectionException) SmallTest(org.mule.tck.size.SmallTest) Test(org.junit.Test)

Example 2 with MessagingExceptionResolver

use of org.mule.runtime.core.internal.util.MessagingExceptionResolver in project mule by mulesoft.

the class ReactiveInterceptorAdapter method createMessagingException.

protected MessagingException createMessagingException(CoreEvent event, Throwable cause, Component processor) {
    MessagingExceptionResolver exceptionResolver = new MessagingExceptionResolver(processor);
    MessagingException me = new MessagingException(event, cause, processor);
    return exceptionResolver.resolve(me, muleContext);
}
Also used : MessagingException(org.mule.runtime.core.internal.exception.MessagingException) MessagingExceptionResolver(org.mule.runtime.core.internal.util.MessagingExceptionResolver)

Example 3 with MessagingExceptionResolver

use of org.mule.runtime.core.internal.util.MessagingExceptionResolver in project mule by mulesoft.

the class ModuleFlowProcessingPhase method runPhase.

@Override
public void runPhase(final ModuleFlowProcessingPhaseTemplate template, final MessageProcessContext messageProcessContext, final PhaseResultNotifier phaseResultNotifier) {
    try {
        final MessageSource messageSource = messageProcessContext.getMessageSource();
        final FlowConstruct flowConstruct = (FlowConstruct) componentLocator.find(messageSource.getRootContainerLocation()).get();
        final ComponentLocation sourceLocation = messageSource.getLocation();
        final Consumer<Either<MessagingException, CoreEvent>> terminateConsumer = getTerminateConsumer(messageSource, template);
        final CompletableFuture<Void> responseCompletion = new CompletableFuture<>();
        final CoreEvent templateEvent = createEvent(template, sourceLocation, responseCompletion, flowConstruct);
        try {
            FlowProcessor flowExecutionProcessor = new FlowProcessor(template, flowConstruct.getExceptionListener(), templateEvent);
            flowExecutionProcessor.setAnnotations(flowConstruct.getAnnotations());
            final SourcePolicy policy = policyManager.createSourcePolicyInstance(messageSource, templateEvent, flowExecutionProcessor, template);
            final PhaseContext phaseContext = new PhaseContext(template, messageProcessContext, phaseResultNotifier, terminateConsumer);
            just(templateEvent).doOnNext(onMessageReceived(template, messageProcessContext, flowConstruct)).flatMap(request -> from(policy.process(request))).flatMap(policyResult -> policyResult.reduce(policyFailure(phaseContext, flowConstruct, messageSource), policySuccess(phaseContext, flowConstruct, messageSource))).doOnSuccess(aVoid -> phaseResultNotifier.phaseSuccessfully()).doOnError(onFailure(flowConstruct, messageSource, phaseResultNotifier, terminateConsumer)).doAfterTerminate(() -> responseCompletion.complete(null)).subscribe();
        } catch (Exception e) {
            from(template.sendFailureResponseToClient(new MessagingExceptionResolver(messageProcessContext.getMessageSource()).resolve(new MessagingException(templateEvent, e), muleContext), template.getFailedExecutionResponseParametersFunction().apply(templateEvent))).doOnTerminate(() -> phaseResultNotifier.phaseFailure(e)).subscribe();
        }
    } catch (Exception t) {
        phaseResultNotifier.phaseFailure(t);
    }
}
Also used : Message(org.mule.runtime.api.message.Message) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) ErrorTypeRepository(org.mule.runtime.api.exception.ErrorTypeRepository) CoreEvent.builder(org.mule.runtime.core.api.event.CoreEvent.builder) FunctionalUtils.safely(org.mule.runtime.core.internal.util.FunctionalUtils.safely) Map(java.util.Map) SOURCE_ERROR_RESPONSE_GENERATE(org.mule.runtime.core.api.exception.Errors.ComponentIdentifiers.Handleable.SOURCE_ERROR_RESPONSE_GENERATE) Mono.just(reactor.core.publisher.Mono.just) MessagingException(org.mule.runtime.core.internal.exception.MessagingException) Mono.empty(reactor.core.publisher.Mono.empty) PolicyManager(org.mule.runtime.core.internal.policy.PolicyManager) SOURCE_ERROR_RESPONSE_SEND(org.mule.runtime.core.api.exception.Errors.ComponentIdentifiers.Handleable.SOURCE_ERROR_RESPONSE_SEND) PrivilegedMuleContext(org.mule.runtime.core.privileged.PrivilegedMuleContext) MessagingExceptionResolver(org.mule.runtime.core.internal.util.MessagingExceptionResolver) Collection(java.util.Collection) NullExceptionHandler(org.mule.runtime.core.api.exception.NullExceptionHandler) FlowExceptionHandler(org.mule.runtime.core.api.exception.FlowExceptionHandler) Message.of(org.mule.runtime.api.message.Message.of) Either.left(org.mule.runtime.core.api.functional.Either.left) ErrorBuilder.builder(org.mule.runtime.core.internal.message.ErrorBuilder.builder) Either.right(org.mule.runtime.core.api.functional.Either.right) MessageProcessors.processWithChildContext(org.mule.runtime.core.privileged.processor.MessageProcessors.processWithChildContext) MESSAGE_RESPONSE(org.mule.runtime.api.notification.ConnectorMessageNotification.MESSAGE_RESPONSE) MessageUtils.toMessage(org.mule.runtime.core.internal.util.message.MessageUtils.toMessage) ErrorType(org.mule.runtime.api.message.ErrorType) Optional(java.util.Optional) FlowConstruct(org.mule.runtime.core.api.construct.FlowConstruct) SourcePolicy(org.mule.runtime.core.internal.policy.SourcePolicy) SOURCE_RESPONSE_SEND(org.mule.runtime.core.api.exception.Errors.ComponentIdentifiers.Handleable.SOURCE_RESPONSE_SEND) SourcePolicySuccessResult(org.mule.runtime.core.internal.policy.SourcePolicySuccessResult) MessageSource(org.mule.runtime.core.api.source.MessageSource) MessageProcessContext(org.mule.runtime.core.privileged.execution.MessageProcessContext) CompletableFuture(java.util.concurrent.CompletableFuture) InternalExceptionUtils.createErrorEvent(org.mule.runtime.core.internal.util.InternalExceptionUtils.createErrorEvent) Processor(org.mule.runtime.core.api.processor.Processor) Function(java.util.function.Function) MessageUtils.toMessageCollection(org.mule.runtime.core.internal.util.message.MessageUtils.toMessageCollection) ConfigurationComponentLocator(org.mule.runtime.api.component.location.ConfigurationComponentLocator) MuleException(org.mule.runtime.api.exception.MuleException) SourcePolicyFailureResult(org.mule.runtime.core.internal.policy.SourcePolicyFailureResult) Mono.from(reactor.core.publisher.Mono.from) SOURCE_RESPONSE_GENERATE(org.mule.runtime.core.api.exception.Errors.ComponentIdentifiers.Handleable.SOURCE_RESPONSE_GENERATE) Mono.error(reactor.core.publisher.Mono.error) Mono.fromCallable(reactor.core.publisher.Mono.fromCallable) MESSAGE_RECEIVED(org.mule.runtime.api.notification.ConnectorMessageNotification.MESSAGE_RECEIVED) MessageProcessors.processToApply(org.mule.runtime.core.privileged.processor.MessageProcessors.processToApply) MESSAGE_ERROR_RESPONSE(org.mule.runtime.api.notification.ConnectorMessageNotification.MESSAGE_ERROR_RESPONSE) CoreEvent(org.mule.runtime.core.api.event.CoreEvent) Publisher(org.reactivestreams.Publisher) EventContextFactory.create(org.mule.runtime.core.api.event.EventContextFactory.create) Mono(reactor.core.publisher.Mono) Initialisable(org.mule.runtime.api.lifecycle.Initialisable) Result(org.mule.runtime.extension.api.runtime.operation.Result) AbstractComponent(org.mule.runtime.api.component.AbstractComponent) Mono.when(reactor.core.publisher.Mono.when) TypedValue(org.mule.runtime.api.metadata.TypedValue) Consumer(java.util.function.Consumer) Either(org.mule.runtime.core.api.functional.Either) MessageProcessTemplate(org.mule.runtime.core.privileged.execution.MessageProcessTemplate) DefaultMuleException(org.mule.runtime.api.exception.DefaultMuleException) Builder(org.mule.runtime.core.internal.message.InternalEvent.Builder) ANY(org.mule.runtime.api.metadata.MediaType.ANY) ComponentLocation(org.mule.runtime.api.component.location.ComponentLocation) InternalEvent(org.mule.runtime.core.internal.message.InternalEvent) SourcePolicy(org.mule.runtime.core.internal.policy.SourcePolicy) MessagingException(org.mule.runtime.core.internal.exception.MessagingException) FlowConstruct(org.mule.runtime.core.api.construct.FlowConstruct) MessageSource(org.mule.runtime.core.api.source.MessageSource) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) MessagingException(org.mule.runtime.core.internal.exception.MessagingException) MuleException(org.mule.runtime.api.exception.MuleException) DefaultMuleException(org.mule.runtime.api.exception.DefaultMuleException) ComponentLocation(org.mule.runtime.api.component.location.ComponentLocation) CompletableFuture(java.util.concurrent.CompletableFuture) CoreEvent(org.mule.runtime.core.api.event.CoreEvent) Either(org.mule.runtime.core.api.functional.Either) MessagingExceptionResolver(org.mule.runtime.core.internal.util.MessagingExceptionResolver)

Example 4 with MessagingExceptionResolver

use of org.mule.runtime.core.internal.util.MessagingExceptionResolver in project mule by mulesoft.

the class ErrorHandler method apply.

@Override
public Publisher<CoreEvent> apply(Exception exception) {
    if (exception instanceof MessagingException) {
        CoreEvent event = addExceptionPayload(exception, ((MessagingException) exception).getEvent());
        ((MessagingException) exception).setProcessedEvent(event);
        try {
            for (MessagingExceptionHandlerAcceptor exceptionListener : exceptionListeners) {
                if (exceptionListener.accept(event)) {
                    return exceptionListener.apply(exception);
                }
            }
            throw new MuleRuntimeException(createStaticMessage(MUST_ACCEPT_ANY_EVENT_MESSAGE));
        } catch (Exception e) {
            return error(new MessagingExceptionResolver(this).resolve(new MessagingException(event, e, this), muleContext));
        }
    } else {
        // This should never occur since all exceptions at this point are ME
        return error(exception);
    }
}
Also used : CoreEvent(org.mule.runtime.core.api.event.CoreEvent) MessagingExceptionHandlerAcceptor(org.mule.runtime.core.privileged.exception.MessagingExceptionHandlerAcceptor) MuleRuntimeException(org.mule.runtime.api.exception.MuleRuntimeException) MessagingExceptionResolver(org.mule.runtime.core.internal.util.MessagingExceptionResolver) InitialisationException(org.mule.runtime.api.lifecycle.InitialisationException) MuleRuntimeException(org.mule.runtime.api.exception.MuleRuntimeException)

Example 5 with MessagingExceptionResolver

use of org.mule.runtime.core.internal.util.MessagingExceptionResolver in project mule by mulesoft.

the class IdempotentRedeliveryPolicy method createMessagingException.

private MessagingException createMessagingException(CoreEvent event, Throwable cause, Component processor) {
    MessagingExceptionResolver exceptionResolver = new MessagingExceptionResolver(processor);
    MessagingException me = new MessagingException(event, cause, processor);
    return exceptionResolver.resolve(me, muleContext);
}
Also used : MessagingException(org.mule.runtime.core.internal.exception.MessagingException) MessagingExceptionResolver(org.mule.runtime.core.internal.util.MessagingExceptionResolver)

Aggregations

MessagingExceptionResolver (org.mule.runtime.core.internal.util.MessagingExceptionResolver)6 MessagingException (org.mule.runtime.core.internal.exception.MessagingException)4 CoreEvent (org.mule.runtime.core.api.event.CoreEvent)3 InitialisationException (org.mule.runtime.api.lifecycle.InitialisationException)2 ErrorType (org.mule.runtime.api.message.ErrorType)2 PrivilegedMuleContext (org.mule.runtime.core.privileged.PrivilegedMuleContext)2 Collection (java.util.Collection)1 Map (java.util.Map)1 Optional (java.util.Optional)1 CompletableFuture (java.util.concurrent.CompletableFuture)1 Consumer (java.util.function.Consumer)1 Function (java.util.function.Function)1 Test (org.junit.Test)1 AbstractComponent (org.mule.runtime.api.component.AbstractComponent)1 ComponentLocation (org.mule.runtime.api.component.location.ComponentLocation)1 ConfigurationComponentLocator (org.mule.runtime.api.component.location.ConfigurationComponentLocator)1 ConnectionException (org.mule.runtime.api.connection.ConnectionException)1 DefaultMuleException (org.mule.runtime.api.exception.DefaultMuleException)1 ErrorTypeRepository (org.mule.runtime.api.exception.ErrorTypeRepository)1 MuleException (org.mule.runtime.api.exception.MuleException)1