org.mule.execution.MessageProcessPhase Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of mule-core Show documentation
Show all versions of mule-core Show documentation
Mule server and core classes
/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.execution;
/**
*
* Defines a phase that process a message using a {@link MessageProcessTemplate}
*
* The phase will be part of a chain of responsibility were the phase can define
* the end of the execution of the set of phases by calling:
* - {@link PhaseResultNotifier#phaseConsumedMessage()} which indicates that the phase has consume the message
* and it should not be longer processed
* - {@link PhaseResultNotifier#phaseFailure(Exception)} which indicates that there was a failure
* during message processing.
*
* Whenever a phase finish execution it must call {@link PhaseResultNotifier#phaseSuccessfully()} which will cause
* the next phase to be executed.
*
* Optionally a {@link MessageProcessPhase} can implement {@link Comparable}
* to define the order in which it must be positioned in the {@link MessageProcessPhase} chain
*
*/
public interface MessageProcessPhase
{
/**
* Determines if a certain phase supports a given template.
*
* If phase does not supports the template instance then the phase will be skipped.
*
* @param messageProcessTemplate template to be processed
* @return true if the phase supports this template, false otherwise
*/
boolean supportsTemplate(MessageProcessTemplate messageProcessTemplate);
/**
* Process the template through the phase.
*
* The phase execution can not throw an exception. In case of exception {@link PhaseResultNotifier#phaseFailure(Exception)} must be call.
*
* @param messageProcessTemplate template containing message source specific behavior
* @param messageProcessContext provides context information for executing the message
* @param phaseResultNotifier notifier that must be advice under certain scenarios
*/
void runPhase(Template messageProcessTemplate, MessageProcessContext messageProcessContext, PhaseResultNotifier phaseResultNotifier);
}