/**
* Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.synapse.message.processor;
import org.apache.synapse.ManagedLifecycle;
import org.apache.synapse.Nameable;
import org.apache.synapse.SynapseArtifact;
import org.apache.synapse.message.MessageConsumer;
import java.util.List;
import java.util.Map;
public interface MessageProcessor extends ManagedLifecycle, Nameable, SynapseArtifact {
/**
* This method is used to start the message processor. Once the message processor is started
* it will start receiving messages
* @return {@code true} if successful, {@code false} otherwise
*/
boolean start();
/**
* This method is used to stop the message processor. Once the the message processor is stopped
* it will no longer receive messages. A stopped message processor cannot re restarted without
* re-instantiating.
* @return {@code true} if successful, {@code false} otherwise
*/
boolean stop();
/**
* This method is used to deactivate the message processor. This will temporarily halt executing services.
* @return {@code true} if successful, {@code false} otherwise
*/
boolean deactivate();
/**
* This method is used to activate a deactivated message processor. Activating message processor
* will cause the services to start
* @return {@code true} if successful, {@code false} otherwise
*/
boolean activate();
/**
* This method is used to see if the message processor is deactivated.
* @return {@code true} if successful, {@code false} otherwise
*/
boolean isDeactivated();
/**
* This method is used to set the associated message store of the message processor. Every message processor
* has to be bound to a message store
* @param messageStoreName Name of this message store.
*/
void setMessageStoreName(String messageStoreName);
/**
* This method returns the associated message store name of the message processor.
* @return Name of this message store.
*/
String getMessageStoreName();
/**
* This method is used to set configuration parameters of the message processor. For example, triggering interval
* retrying interval, and etc.
* @param parameters Message processor parameters.
*/
void setParameters(Map<String,Object> parameters);
/**
* This method is used to retrieve the configuration parameters of message processor.
* @return the extracted parameters of the message processor configuration
*/
Map<String , Object> getParameters();
/**
* This method is used to set the actual configuration file. This file has all the configuration related
* to particular message processor.
* @param fileName is the name of the file
*/
void setFileName(String fileName);
/**
* This method is used to retrieve the configuration file name of the message processor.
* @return the file name
*/
String getFileName();
/**
* This method is used to set the message consumer of message processor. Consumer is the one who is
* responsible for retrieving messages from a store.
* @param messageConsumer is the name of the associated message consumer
* @return is true if the message if the message consumer is returned successfully. Otherwise false.
*/
boolean setMessageConsumer(MessageConsumer messageConsumer);
/**
* This method retrieves the message consumer of message processor.
* @return the message consumer
*/
List<MessageConsumer> getMessageConsumer();
/**
* This method set the target endpoint associated with the message processor. Without a target endpoint
* a message processor could not operated successfully.
* @param targetEndpoint is the name of the associated endpoint
*/
void setTargetEndpoint(String targetEndpoint);
/**
* This method is used to retrieve the associated target endpoint name of the message processor.
* @return The name of the endpoint
*/
String getTargetEndpoint();
/**
* This method is only used by the associated forwarding services of message processors.
* When the service fails to send the message to the backend it pauses the message processor and
* starts retrying. Pausing the message processor avoids re-triggering new services till the existing
* service succeed.
*/
void pauseService();
/**
* This is the opposite of pauseService method. This method resumes a paused method.
*/
void resumeService();
/**
* This method is used to check if the state is in paused mode.
* @return returns true on success.
*/
boolean isPaused();
/**
* This method is used to cleanup local resources such as JMS connections
* used by the message processor.
*/
void cleanupLocalResources();
/**
* Whether the message processor edited through the management console
* @return isEdited
*/
public boolean isEdited();
/**
* Set whether the message processor edited through the management console
* @param isEdited
*/
public void setIsEdited(boolean isEdited);
/**
* Get the name of the artifact container from which the message processor deployed
* @return artifactContainerName
*/
public String getArtifactContainerName();
/**
* Set the name of the artifact container from which the message processor deployed
* @param artifactContainerName
*/
public void setArtifactContainerName(String artifactContainerName);
}