/** * 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.store; import org.apache.synapse.ManagedLifecycle; import org.apache.synapse.MessageContext; import org.apache.synapse.Nameable; import org.apache.synapse.SynapseArtifact; import org.apache.synapse.message.MessageConsumer; import org.apache.synapse.message.MessageProducer; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; public interface MessageStore extends ManagedLifecycle, Nameable, SynapseArtifact { /** * Returns a Message Producer for this message store. <br/> * @return A non-null message producer that can produce messages to this message store. */ MessageProducer getProducer(); /** * Returns a Message Consumer for this message store. <br/> * @return A non-null message consumer that can read messages from this message store.<br/> */ MessageConsumer getConsumer(); /** * set the implementation specific parameters * @param parameters A map of parameters or null */ public void setParameters(Map<String,Object> parameters); /** * get the implementation specific parameters of the Message store * @return a properties map */ public Map<String,Object> getParameters(); /** * Set the name of the file that the Message store is configured * * @param filename Name of the file where this artifact is defined */ public void setFileName(String filename); /** * get the file name that the message store is configured * * @return Name of the file where this artifact is defined */ public String getFileName(); /** * Returns the type of this message store. <br/> * The type of a message store can be one of following types, <br/> * {@link Constants#JMS_MS}, {@link Constants#INMEMORY_MS}, * or {@link Constants#JDBC_MS} * @return Type of the message store. */ public int getType(); /** * Retrieves and removes the first Message in this store. * Message ordering will depend on the underlying implementation * * @return first message context in the store * @throws java.util.NoSuchElementException * if store is empty */ public MessageContext remove() throws NoSuchElementException; /** * Delete all the Messages in the Message Store */ public void clear(); /** * Delete and return the MessageContext with given Message id * * @param messageID message id of the Message * @return MessageContext instance */ public MessageContext remove(String messageID); /** * Returns the number of Messages in this store. * * @return the number of Messages in this Store */ public int size(); /** * Return the Message in given index position * (this may depend on the implementation) * * @param index position of the message * @return Message in given index position */ public MessageContext get(int index); /** * Get the All messages in the Message store without removing them from the queue * * @return List of all Messages */ public List<MessageContext> getAll(); /** * Get the Message with the given ID from the Message store without removing it * * @param messageId A message ID string * @return Message with given ID */ public MessageContext get(String messageId); /** * Whether the message store edited through the management console * @return */ public boolean isEdited(); /** * Set whether the message store edited through the management console * @param isEdited */ public void setIsEdited(boolean isEdited); /** * Get the name of the artifact container from which the message store deployed * @return */ public String getArtifactContainerName(); /** * Set the name of the artifact container from which the message store deployed * @param artifactContainerName */ public void setArtifactContainerName(String artifactContainerName); }