Examples of MessageGroup


Examples of org.jresponder.message.MessageGroup

        }
      }
     
      if (mySubscription == null) return webApiUtil.result404("Couldn't find subscription");
     
      MessageGroup myMessageGroup = messageGroupSource.getMessageGroupByName(aMessageGroupName);
     
      if (myMessageGroup == null) return webApiUtil.result404("Couldn't find message group");
     
      MessageRef myMessageRef = myMessageGroup.getMessageRefByName(aMessageName);
     
      MimeMessage myMimeMessage = javaMailSender.createMimeMessage();
     
      SendConfig mySendConfig =
          sendConfigGroup.lookupSendConfig(mySubscriber, mySubscription, myMessageGroup, myMessageRef);
View Full Code Here

Examples of org.jresponder.message.MessageGroup

        if (messageGroupSource.getMessageGroupByName(aMessageGroupName) == null) {
          throw new IllegalArgumentException("message group does not exist");
        }
       
        // get the message group
        MessageGroup myMessageGroup = messageGroupSource.getMessageGroupByName(aMessageGroupName);
      logger().debug("Using MessageGroup: {}", myMessageGroup);
     
        // the opt-in-confirm message, if it exists
        MessageRef myOptInConfirmMessageRef = myMessageGroup.getOptInConfirmMessageRef();
      logger().debug("myOptInConfirmMessageRef: {}", myOptInConfirmMessageRef);
       
        // make sure we have an attribute map, even if it's empty
        if (aSubscriberPropsMap == null) {
          aSubscriberPropsMap = new HashMap<String,Object>();
        }
       
      logger().debug("aSubscriberPropsMap: {}", aSubscriberPropsMap);

       
        // find existing subscriber
        Subscriber mySubscriber = mainDao.getSubscriberByEmail(aEmail);
      logger().debug("Looked up subscriber with email ({}) and got: {}", aEmail, mySubscriber);
       
      Subscription mySubscription = null;
     
        // doesn't exist, create it
        if (mySubscriber == null) {
         
          logger().debug("No subscriber for this email, making a new record");
         
          // create subscriber
          mySubscriber = new Subscriber();
          mySubscriber.setEmail(aEmail);
          mySubscriber.setPropsMap(aSubscriberPropsMap);
          mySubscriber.setSubscriberStatus(SubscriberStatus.OK);
          mainDao.persist(mySubscriber);
         
          logger().debug("Now making a new subscription record");

            // create subscription
            mySubscription = new Subscription(mySubscriber, aMessageGroupName);
            mySubscription.setNextSendDate(new Date());
            mySubscription.setToken(tokenUtil.generateToken());
           
            // send opt in confirm message if applicable
            if (myOptInConfirmMessageRef != null) {
              logger().debug("About to send opt-in confirm message...");
              doOptInConfirmMessage(myOptInConfirmMessageRef, myMessageGroup, mySubscriber, mySubscription);
            }
            // if no opt in, then just mark active
            else {
              logger().debug("No opt-in confirm message, just marking as active");
              mySubscription.setSubscriptionStatus(SubscriptionStatus.ACTIVE);
            }
           
          logger().debug("Saving subscription");
            mainDao.persist(mySubscription);
           
        /* ========================================================== */
        /* Make LogEntry                                              */
        /* ========================================================== */
            mainDao.logEntry
                      (
                          LogEntryType.SUBSCRIBED,
                          mySubscriber,
                          aMessageGroupName,
                          defaultLogEntryProps()
                      );
           
        }
       
        // already there, merge
        else {
         
          logger().debug("Already have a Subscriber object for email address ({}): {}", aEmail, mySubscriber);
         
          // update attributes
          mySubscriber.setPropsMap(
              (Map<String,Object>)PropUtil.getInstance().propMerge(mySubscriber.getPropsMap(), aSubscriberPropsMap)
              );
         
          if (logger().isDebugEnabled()) {
            logger().debug("Saving updated properties: {}", mySubscriber.getPropsMap());
          }
         
            mainDao.persist(mySubscriber);
         
            // see if the subscription is there
            mySubscription =
                mainDao.getSubscriptionBySubscriberAndMessageGroupName
                  (
                      mySubscriber,
                      myMessageGroup.getName()
                  );
           
        logger().debug("Looking for corresponding Subscription record for subscriber and message group ({}) found: {}", myMessageGroup.getName(), mySubscription);
           
            // no subscription, create it
            if (mySubscription == null) {
             
              mySubscription = new Subscription(mySubscriber, aMessageGroupName);
View Full Code Here

Examples of org.jresponder.message.MessageGroup

   
    // 2. for this Subscription, find last message processed in
    //    the list for that group
   
    // first make sure we have a corresponding message group
    MessageGroup myMessageGroup = messageGroupSource.getMessageGroupByName(mySubscription.getMessageGroupName());
   
    // if no such message group, then we just get rid of the
    // subscription (lose the date so it doesn't get pulled back up);
    // also catch the case where no subscriber record, should never
    // happen, but adding scenario for robustness)
    if (myMessageGroup == null || mySubscriber == null) {
     
      logger().warn(
          "Either message group or subscriber was null, " +
          "bailing out (messageGroup: {}, subscriber: {})",
          myMessageGroup, mySubscriber);
     
      /* ====================================================== */
      /* clear next send date of subscription                   */
      /* ====================================================== */
      endSubscription(mySubscription);
      return true;
    }
   
    // get the name of the last message
    String myLastMessageName = mySubscription.getLastMessageName();
    logger().debug("myLastMessageName: {}", myLastMessageName);
   
    // if last message exists
    int mySendMessageRefIndex = myMessageGroup.indexOfName(myLastMessageName);
    if (mySendMessageRefIndex >= 0) {
      // increment to next one to get the message we should send
      mySendMessageRefIndex++;
    }
    // if last message name was null, then start at zero
    if (myLastMessageName == null) {
      mySendMessageRefIndex = 0;
    }
   
    logger().debug("myLastMessageRefIndex: {}", mySendMessageRefIndex);
   
   
    // 3. get the next message
   
    List<MessageRef> myMessageRefList = myMessageGroup.getMessageRefList();
   
    // the MessageRef that we are to send
    MessageRef mySendMessageRef = null;
    if (mySendMessageRefIndex >= 0) {
      // make sure we haven't gone beyond the end of the messages
      if (myMessageRefList.size() > mySendMessageRefIndex) {
        mySendMessageRef = myMessageRefList.get(mySendMessageRefIndex);
      }
    }
    logger().debug("about to send mySendMessageRef: {}", mySendMessageRef);

   
    // no message to send (either couldn't find last message or
    // there is no next message); also check for the case where
    // the last send date is not set (should never happen, but just
    // to keep it from breaking the system we treat it like end
    // of list)
    if (mySendMessageRef == null || mySubscription.getLastSendDate() == null) {
      logger().debug("no more messages to send for this subscription");
      /* ====================================================== */
      /* clear next send date of subscription                   */
      /* ====================================================== */
      endSubscription(mySubscription);
      return true;
    }
   

    if (mySubscription.getLastSendDate() == null) {
      logger().warn("last_send_date was null on subscription, should never happen");
    }
   
    // 3a.read the time on it and recalculate, confirm that
    //    time is now past
   
    Long myWait = mySendMessageRef.getWaitAfterLastMessage();
    if (myWait == null) {
      /* ====================================================== */
      /* clear next send date of subscription                   */
      /* ====================================================== */
      logger().warn("'wait after last message' value was not set for this message, ending the subscription");
      endSubscription(mySubscription);
      return true;
    }
   
    // 3b.if not past then set next consideration date to recalced date
    //    and kick back
   
    // see if it's time to send yet
    long myLastSendDate = mySubscription.getLastSendDate().getTime();
    if (myLastSendDate + myWait > new Date().getTime()) {
      logger().debug("it is not yet time to send this message, putting it back for later");
      // not time to send (possibly message changed since
      // this subscription record was last edited - also first
      // subscription looks like this);
      // reset the nextSendDate and move on
      mySubscription.setNextSendDate(new Date(myLastSendDate + myWait));
      mainDao.persist(mySubscription);
      return true;
    }
   
   
    // 4. render and send message
   
    boolean mySendWorked = sendMessage(
            mySendMessageRef,
            myMessageGroup,
            mySubscriber,
            mySubscription,
            LogEntryType.MESSAGE_SENT
        );
   
    // if the sending was skipped...
    if (!mySendWorked) {
     
      // write a log entry for the skipping
      mainDao.logEntry
            (
                 LogEntryType.MESSAGE_SKIPPED,
                 mySubscriber,
                 myMessageGroup.getName(),
                 propUtil.mkprops(
                     "message_name", mySendMessageRef.getName()
                     )
            );

    }
   
   
   
   
    // 5. get next message in the list and recalculate date based on that,
    //    update last message name and save
   
    // update the last sent info
    mySubscription.setLastMessageName(mySendMessageRef.getName());
    mySubscription.setLastSendDate(new Date());
   
    // index of next message
    int myNextMessageRefIndex = mySendMessageRefIndex + 1;
   
   
    // 5a.if no more messages, then next consideration date is set to null
   
    if (myNextMessageRefIndex >= myMessageRefList.size()) {
      mySubscription.setNextSendDate(null);
    }
   
    // if we have a next message, then calc when it fires
    else {
     
      MessageRef myNextMessageRef = myMessageRefList.get(myNextMessageRefIndex);
      Long myNextWait = myNextMessageRef.getWaitAfterLastMessage();
      mySubscription.setNextSendDate(
            new Date(mySubscription.getLastSendDate().getTime() + myNextWait)
          );

    }
   
    // save the changes to the subscription
    mainDao.persist(mySubscription);
   
    if (mySubscription.getNextSendDate() == null) {
     
      // write a log entry for the completion of the subscription
      mainDao.logEntry
          (
               LogEntryType.SUBSCRIPTION_DONE,
               mySubscriber,
               myMessageGroup.getName(),
               propUtil.mkprops(
                   "message_name", mySendMessageRef.getName()
                   )
          );
    }
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

    Assert.assertEquals( 0, messageGroup.size() );
  }

  @Test
  public void testUpdatedDateChangesWithEachAddedMessage() throws InterruptedException {
    MessageGroup messageGroup = store.getMessageGroup( 1 );
    Message<?> message = new GenericMessage<String>( "Hello" );
    messageGroup = store.addMessageToGroup( 1, message );
    Assert.assertEquals( 1, messageGroup.size() );

    long createdTimestamp = messageGroup.getTimestamp();
    long updatedTimestamp = messageGroup.getLastModified();
    Assert.assertEquals( createdTimestamp, updatedTimestamp );
    Thread.sleep( 1000 );

    message = new GenericMessage<String>( "Hello" );
    messageGroup = store.addMessageToGroup( 1, message );
    createdTimestamp = messageGroup.getTimestamp();
    updatedTimestamp = messageGroup.getLastModified();
    Assert.assertTrue( updatedTimestamp > createdTimestamp );

    // use another message store instance
    VoldemortMessageStore newStore = createNewStoreClient();

    messageGroup = newStore.getMessageGroup( 1 );
    Assert.assertEquals( 2, messageGroup.size() );
  }
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

    Assert.assertEquals( 2, messageGroup.size() );
  }

  @Test
  public void testMessageGroupAddOperation() {
    MessageGroup messageGroup = store.getMessageGroup( 1 );
    Message<?> message = new GenericMessage<String>( "Hello" );
    messageGroup = store.addMessageToGroup( 1, message );
    Assert.assertEquals( 1, messageGroup.size() );

    // use another message store instance
    VoldemortMessageStore newStore = createNewStoreClient();

    messageGroup = newStore.getMessageGroup( 1 );
    Assert.assertEquals( 1, messageGroup.size() );
  }
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

  }

  @Test
  public void testMessageGroupWithAddedMessageUUIDGroupIdAndUUIDHeader() {
    final Object id = UUID.randomUUID();
    MessageGroup messageGroup = store.getMessageGroup( id );
    final UUID uuidA = UUID.randomUUID();
    Message<?> messageA = MessageBuilder.withPayload( "A" ).setHeader( "foo", uuidA ).build();
    final UUID uuidB = UUID.randomUUID();
    Message<?> messageB = MessageBuilder.withPayload( "B" ).setHeader( "foo", uuidB ).build();
    store.addMessageToGroup( id, messageA );
    messageGroup = store.addMessageToGroup( id, messageB );
    Assert.assertEquals( 2, messageGroup.size() );
    Message<?> retrievedMessage = store.getMessage( messageA.getHeaders().getId() );
    Assert.assertNotNull( retrievedMessage );
    Assert.assertEquals( retrievedMessage.getHeaders().getId(), messageA.getHeaders().getId() );
    Object fooHeader = retrievedMessage.getHeaders().get( "foo" );
    Assert.assertTrue( fooHeader instanceof UUID );
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

    Assert.assertEquals( 2, store.messageGroupSize( 1 ) );
  }

  @Test
  public void testRemoveMessageGroup() {
    MessageGroup messageGroup = store.getMessageGroup( 1 );
    Message<?> message = new GenericMessage<String>( "Hello" );
    messageGroup = store.addMessageToGroup( messageGroup.getGroupId(), message );
    Assert.assertEquals( 1, messageGroup.size() );

    store.removeMessageGroup( 1 );

    MessageGroup messageGroupA = store.getMessageGroup( 1 );
    Assert.assertNotSame( messageGroup, messageGroupA );
    Assert.assertEquals( 0, messageGroupA.getMessages().size() );
    Assert.assertEquals( 0, messageGroupA.size() );

    // use another message store instance
    VoldemortMessageStore newStore = createNewStoreClient();

    messageGroup = newStore.getMessageGroup( 1 );
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

    Assert.assertEquals( 0, messageGroup.size() );
  }

  @Test
  public void testCompleteMessageGroup() {
    MessageGroup messageGroup = store.getMessageGroup( 1 );
    Message<?> message = new GenericMessage<String>( "Hello" );
    messageGroup = store.addMessageToGroup( messageGroup.getGroupId(), message );
    store.completeGroup( messageGroup.getGroupId() );
    messageGroup = store.getMessageGroup( 1 );
    Assert.assertTrue( messageGroup.isComplete() );
  }
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

    Assert.assertTrue( messageGroup.isComplete() );
  }

  @Test
  public void testLastReleasedSequenceNumber() {
    MessageGroup messageGroup = store.getMessageGroup( 1 );
    Message<?> message = new GenericMessage<String>( "Hello" );
    messageGroup = store.addMessageToGroup( messageGroup.getGroupId(), message );
    store.setLastReleasedSequenceNumberForGroup( messageGroup.getGroupId(), 5 );
    messageGroup = store.getMessageGroup( 1 );
    Assert.assertEquals( 5, messageGroup.getLastReleasedMessageSequenceNumber() );
  }
View Full Code Here

Examples of org.springframework.integration.store.MessageGroup

    Assert.assertEquals( 5, messageGroup.getLastReleasedMessageSequenceNumber() );
  }

  @Test
  public void testRemoveMessageFromTheGroup() {
    MessageGroup messageGroup = store.getMessageGroup( 1 );
    Message<?> message = new GenericMessage<String>( "2" );
    store.addMessageToGroup( messageGroup.getGroupId(), new GenericMessage<String>( "1" ) );
    store.addMessageToGroup( messageGroup.getGroupId(), message );
    messageGroup = store.addMessageToGroup( messageGroup.getGroupId(), new GenericMessage<String>( "3" ) );
    Assert.assertEquals( 3, messageGroup.size() );

    messageGroup = store.removeMessageFromGroup( 1, message );
    Assert.assertEquals( 2, messageGroup.size() );

    // use another message store instance
    VoldemortMessageStore newStore = createNewStoreClient();

    messageGroup = newStore.getMessageGroup( 1 );
    Assert.assertEquals( 2, messageGroup.size() );
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.