org.springframework.integration.store
Class SimpleMessageStore

java.lang.Object
  extended by org.springframework.integration.store.AbstractMessageGroupStore
      extended by org.springframework.integration.store.SimpleMessageStore
All Implemented Interfaces:
java.lang.Iterable<MessageGroup>, MessageGroupStore, MessageStore

@ManagedResource
public class SimpleMessageStore
extends AbstractMessageGroupStore
implements MessageStore, MessageGroupStore

Map-based implementation of MessageStore and MessageGroupStore. Enforces a maximum capacity for the store.

Since:
2.0

Field Summary
 
Fields inherited from class org.springframework.integration.store.AbstractMessageGroupStore
logger
 
Constructor Summary
SimpleMessageStore()
          Creates a SimpleMessageStore with unlimited capacity
SimpleMessageStore(int capacity)
          Creates a SimpleMessageStore with the same capacity for individual and grouped messages.
SimpleMessageStore(int individualCapacity, int groupCapacity)
          Creates a SimpleMessageStore with a maximum size limited by the given capacity, or unlimited size if the given capacity is less than 1.
 
Method Summary
<T> Message<T>
addMessage(Message<T> message)
          Put the provided Message into the MessageStore.
 MessageGroup addMessageToGroup(java.lang.Object groupId, Message<?> message)
          Store a message with an association to a group id.
 Message<?> getMessage(java.util.UUID key)
          Return the Message with the given id, or null if no Message with that id exists in the MessageStore.
 int getMessageCount()
          Optional attribute giving the number of messages in the store.
 MessageGroup getMessageGroup(java.lang.Object groupId)
          Return all Messages currently in the MessageStore that were stored using MessageGroupStore.addMessageToGroup(Object, Message) with this group id.
 java.util.Iterator<MessageGroup> iterator()
           
 MessageGroup markMessageFromGroup(java.lang.Object groupId, Message<?> messageToMark)
          Persist a mark on a single message from the group.
 MessageGroup markMessageGroup(MessageGroup group)
          Persist the mark on all the messages from the group.
 Message<?> removeMessage(java.util.UUID key)
          Remove the Message with the given id from the MessageStore, if present, and return it.
 MessageGroup removeMessageFromGroup(java.lang.Object groupId, Message<?> messageToRemove)
          Persist a deletion on a single message from the group.
 void removeMessageGroup(java.lang.Object groupId)
          Remove the message group with this id.
 
Methods inherited from class org.springframework.integration.store.AbstractMessageGroupStore
expireMessageGroups, getMarkedMessageCountForAllMessageGroups, getMessageCountForAllMessageGroups, getMessageGroupCount, registerMessageGroupExpiryCallback, setExpiryCallbacks
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.springframework.integration.store.MessageGroupStore
expireMessageGroups, getMarkedMessageCountForAllMessageGroups, getMessageCountForAllMessageGroups, getMessageGroupCount, registerMessageGroupExpiryCallback
 

Constructor Detail

SimpleMessageStore

public SimpleMessageStore(int individualCapacity,
                          int groupCapacity)
Creates a SimpleMessageStore with a maximum size limited by the given capacity, or unlimited size if the given capacity is less than 1. The capacities are applied independently to messages stored via addMessage(Message) and to those stored via addMessageToGroup(Object, Message). In both cases the capacity applies to the number of messages that can be stored, and once that limit is reached attempting to store another will result in an exception.


SimpleMessageStore

public SimpleMessageStore(int capacity)
Creates a SimpleMessageStore with the same capacity for individual and grouped messages.


SimpleMessageStore

public SimpleMessageStore()
Creates a SimpleMessageStore with unlimited capacity

Method Detail

getMessageCount

@ManagedAttribute
public int getMessageCount()
Description copied from interface: MessageStore
Optional attribute giving the number of messages in the store. Implementations may decline to respond by throwing an exception.

Specified by:
getMessageCount in interface MessageStore
Returns:
the number of messages

addMessage

public <T> Message<T> addMessage(Message<T> message)
Description copied from interface: MessageStore
Put the provided Message into the MessageStore. The store may need to mutate the message internally, and if it does then the return value can be different than the input. The id of the return value will be used as an index so that the MessageStore.getMessage(UUID) and MessageStore.removeMessage(UUID) behave properly. Since messages are immutable, putting the same message more than once is a no-op.

Specified by:
addMessage in interface MessageStore
Returns:
the message that was stored

getMessage

public Message<?> getMessage(java.util.UUID key)
Description copied from interface: MessageStore
Return the Message with the given id, or null if no Message with that id exists in the MessageStore.

Specified by:
getMessage in interface MessageStore

removeMessage

public Message<?> removeMessage(java.util.UUID key)
Description copied from interface: MessageStore
Remove the Message with the given id from the MessageStore, if present, and return it. If no Message with that id is present in the store, this will return null.

Specified by:
removeMessage in interface MessageStore

getMessageGroup

public MessageGroup getMessageGroup(java.lang.Object groupId)
Description copied from interface: MessageGroupStore
Return all Messages currently in the MessageStore that were stored using MessageGroupStore.addMessageToGroup(Object, Message) with this group id.

Specified by:
getMessageGroup in interface MessageGroupStore
Returns:
a group of messages, empty if none exists for this key

addMessageToGroup

public MessageGroup addMessageToGroup(java.lang.Object groupId,
                                      Message<?> message)
Description copied from interface: MessageGroupStore
Store a message with an association to a group id. This can be used to group messages together.

Specified by:
addMessageToGroup in interface MessageGroupStore
Parameters:
groupId - the group id to store the message under
message - a message

markMessageGroup

public MessageGroup markMessageGroup(MessageGroup group)
Description copied from interface: MessageGroupStore
Persist the mark on all the messages from the group. The group is modified in the process as all its unmarked messages become marked.

Specified by:
markMessageGroup in interface MessageGroupStore
Parameters:
group - a MessageGroup with no unmarked messages

removeMessageGroup

public void removeMessageGroup(java.lang.Object groupId)
Description copied from interface: MessageGroupStore
Remove the message group with this id.

Specified by:
removeMessageGroup in interface MessageGroupStore
Parameters:
groupId - the id of the group to remove

removeMessageFromGroup

public MessageGroup removeMessageFromGroup(java.lang.Object groupId,
                                           Message<?> messageToRemove)
Description copied from interface: MessageGroupStore
Persist a deletion on a single message from the group. The group is modified to reflect that 'messageToRemove' is no longer present in the group.

Specified by:
removeMessageFromGroup in interface MessageGroupStore
Parameters:
groupId - the groupId for the group containing the message
messageToRemove - the message to be removed

markMessageFromGroup

public MessageGroup markMessageFromGroup(java.lang.Object groupId,
                                         Message<?> messageToMark)
Description copied from interface: MessageGroupStore
Persist a mark on a single message from the group. The group is modified to reflect that 'messageToMark' is no longer unmarked but became marked instead.

Specified by:
markMessageFromGroup in interface MessageGroupStore
Parameters:
groupId - the groupId for the group containing the message
messageToMark - the message to be marked

iterator

public java.util.Iterator<MessageGroup> iterator()
Specified by:
iterator in interface java.lang.Iterable<MessageGroup>
Specified by:
iterator in class AbstractMessageGroupStore