org.springframework.integration.aggregator
Class AbstractMessageBarrier

java.lang.Object
  extended by org.springframework.integration.aggregator.AbstractMessageBarrier
All Implemented Interfaces:
MessageBarrier
Direct Known Subclasses:
AggregationBarrier, ResequencingMessageBarrier

public abstract class AbstractMessageBarrier
extends java.lang.Object
implements MessageBarrier

Default implementation for a MessageBarrier.

Author:
Marius Bogoevici

Field Summary
protected  java.util.List<Message<?>> messages
           
 
Constructor Summary
AbstractMessageBarrier()
           
 
Method Summary
 java.util.List<Message<?>> addAndRelease(Message<?> message)
          Adds a message to the aggregation group and releases if available.
protected  void addMessage(Message<?> message)
           
 java.util.List<Message<?>> getMessages()
           
 long getTimestamp()
          Returns the creation time of this barrier as the number of milliseconds since January 1, 1970.
protected abstract  boolean hasReceivedAllMessages()
          Subclasses must implement this method to indicate if all possible messages that could be received by a given barrier have already been received (e.g.
protected  boolean isComplete()
           
protected abstract  java.util.List<Message<?>> releaseAvailableMessages()
          Subclasses must implement this method to return the messages that can be released by this barrier after the receipt of a given message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

messages

protected final java.util.List<Message<?>> messages
Constructor Detail

AbstractMessageBarrier

public AbstractMessageBarrier()
Method Detail

getTimestamp

public long getTimestamp()
Returns the creation time of this barrier as the number of milliseconds since January 1, 1970.

Specified by:
getTimestamp in interface MessageBarrier
See Also:
System.currentTimeMillis()

isComplete

protected boolean isComplete()

addAndRelease

public java.util.List<Message<?>> addAndRelease(Message<?> message)
Adds a message to the aggregation group and releases if available. Otherwise, the return value will be null.

Specified by:
addAndRelease in interface MessageBarrier

addMessage

protected void addMessage(Message<?> message)

getMessages

public java.util.List<Message<?>> getMessages()
Specified by:
getMessages in interface MessageBarrier

hasReceivedAllMessages

protected abstract boolean hasReceivedAllMessages()
Subclasses must implement this method to indicate if all possible messages that could be received by a given barrier have already been received (e.g. all messages from a given sequence).


releaseAvailableMessages

protected abstract java.util.List<Message<?>> releaseAvailableMessages()
Subclasses must implement this method to return the messages that can be released by this barrier after the receipt of a given message. It might be possible that a number of messages are released before the barrier has ended its work (partial release) and this depends completely on the implementation of the barrier. However, once hasReceivedAllMessages() is deemed true, only one call to releaseAvailableMessages() shall yield results.