private SimpleMessageGroup buildMessageGroup(Object groupId, boolean raw) {
    Assert.notNull(groupId, "'groupId' must not be null");
    Object mgm = this.doRetrieve(MESSAGE_GROUP_KEY_PREFIX + groupId);
    if (mgm != null) {
      Assert.isInstanceOf(MessageGroupMetadata.class, mgm);
      MessageGroupMetadata messageGroupMetadata = (MessageGroupMetadata) mgm;
      ArrayList<Message<?>> messages = new ArrayList<Message<?>>();

      Iterator<UUID> messageIds = messageGroupMetadata.messageIdIterator();
      while (messageIds.hasNext()) {
        if (raw) {
          messages.add(this.getRawMessage(messageIds.next()));
        } else {
          messages.add(this.getMessage(messageIds.next()));
        }
      }

      SimpleMessageGroup messageGroup =
          new SimpleMessageGroup(
              messages,
              groupId,
              messageGroupMetadata.getTimestamp(),
              messageGroupMetadata.isComplete());
      messageGroup.setLastReleasedMessageSequenceNumber(
          messageGroupMetadata.getLastReleasedMessageSequenceNumber());
      return messageGroup;
    } else {
      return new SimpleMessageGroup(groupId);
    }
  }
 public void setLastReleasedSequenceNumberForGroup(Object groupId, int sequenceNumber) {
   Assert.notNull(groupId, "'groupId' must not be null");
   SimpleMessageGroup messageGroup = this.buildMessageGroup(groupId, true);
   messageGroup.setLastReleasedMessageSequenceNumber(sequenceNumber);
   this.doStore(MESSAGE_GROUP_KEY_PREFIX + groupId, new MessageGroupMetadata(messageGroup));
 }
 public void setLastReleasedSequenceNumberForGroup(Object groupId, int sequenceNumber) {
   SimpleMessageGroup group = getMessageGroupInternal(groupId);
   group.setLastReleasedMessageSequenceNumber(sequenceNumber);
 }