Package org.apache.sandesha2.util

Examples of org.apache.sandesha2.util.Range


  }
 
  public void testGetAckRangesFromRangeStringGapFilling () throws SandeshaException {
    //build a range string to represent the completed messages
    RangeString rangeString = new RangeString();
    rangeString.addRange(new Range(1,3));
    rangeString.addRange(new Range(4));
    //insert a gap - number 5 is missing
    rangeString.addRange(new Range(6));
    //insert a gap - 7 and 8 are missing
    rangeString.addRange(new Range(9, 10));
   
    ArrayList list = SandeshaUtil.getAckRangeArrayList(rangeString,Sandesha2Constants.SPEC_2005_02.NS_URI);
    assertNotNull(list);
    //we expect 3 ranges: [1-4] [6] [9-10]
    assertEquals(list.size(),3);
   
    Iterator it = list.iterator();
    AcknowledgementRange ackRange = null;
   
    ackRange = (AcknowledgementRange) it.next();
    assertNotNull(ackRange);
    assertEquals(ackRange.getLowerValue(),1);
    assertEquals(ackRange.getUpperValue(),4);
   
    ackRange = null;
    ackRange = (AcknowledgementRange) it.next();
    assertNotNull(ackRange);
    assertEquals(ackRange.getLowerValue(),6);
    assertEquals(ackRange.getUpperValue(),6);
   
    ackRange = null;
    ackRange = (AcknowledgementRange) it.next();
    assertNotNull(ackRange);
    assertEquals(ackRange.getLowerValue(),9);
    assertEquals(ackRange.getUpperValue(),10);
   
    assertFalse(it.hasNext());
   
    //ok, now plug a gap at msg 5
    rangeString.addRange(new Range(5));
    list = SandeshaUtil.getAckRangeArrayList(rangeString,Sandesha2Constants.SPEC_2005_02.NS_URI);
    assertNotNull(list);
    //we expect 2 ranges: [1-6] [9-10]
    it = list.iterator();
    ackRange = null;
   
    ackRange = (AcknowledgementRange) it.next();
    assertNotNull(ackRange);
    assertEquals(ackRange.getLowerValue(),1);
    assertEquals(ackRange.getUpperValue(),6);
   
    ackRange = null;
    ackRange = (AcknowledgementRange) it.next();
    assertNotNull(ackRange);
    assertEquals(ackRange.getLowerValue(),9);
    assertEquals(ackRange.getUpperValue(),10);
   
    assertFalse(it.hasNext());
   
    //plug all of the gaps - 7 and 8
    rangeString.addRange(new Range(8));
    rangeString.addRange(new Range(7,8));
    list = SandeshaUtil.getAckRangeArrayList(rangeString,Sandesha2Constants.SPEC_2005_02.NS_URI);
    assertNotNull(list);
    //we expect 1 ranges: [1-10]
    it = list.iterator();
    ackRange = null;
View Full Code Here


   
    RangeString rString = new RangeString(msgs);
   
    //msg 2 arrives
    {
      Range ackedMsgRange = new Range(1,2);
      Range[] newRanges = rString.addRange(ackedMsgRange).getRanges();
      assertEquals(newRanges.length,1);
      assertEquals(newRanges[0],new Range(2,2));
    }
   
    //msgs 8 and 9 arrive
    {
      Range ackedMsgRange = new Range(8,9);
      Range[] newRanges = rString.addRange(ackedMsgRange).getRanges();
      assertEquals(newRanges.length,1);
      assertEquals(newRanges[0],ackedMsgRange);
    }
   
    // msg 6 arrives
    {
      Range ackedMsgRange = new Range(6,6);
      Range[] newRanges = rString.addRange(ackedMsgRange).getRanges();
      assertEquals(newRanges.length,1);
      assertEquals(newRanges[0],ackedMsgRange);
    }
   
    //msgs 3,4 and 5 arrive
    {
      Range ackedMsgRange = new Range(1,5);
      Range[] newRanges = rString.addRange(ackedMsgRange).getRanges();
      assertEquals(newRanges.length,1);
      assertEquals(newRanges[0],new Range(3,5));
    }
   
    //msgs 3,4 are duplicated
    {
      Range ackedMsgRange = new Range(3,4);
      Range[] newRanges = rString.addRange(ackedMsgRange).getRanges();
      assertEquals(newRanges.length,0); //no new information
    }
   
    //finally msg 7
    {
      Range ackedMsgRange = new Range(7,7);
      Range[] newRanges = rString.addRange(ackedMsgRange).getRanges();
      assertEquals(newRanges.length,1);
      assertEquals(newRanges[0],ackedMsgRange);
    }
   
    //all msgs have now arrived
    assertEquals("[1,10]", rString.toString());
   
    //all messages are duplicated - ensure this is detected
    assertEquals(rString.addRange(new Range(1,10)).getRanges().length, 0)
    //check we handle duplicates i.e. the string is still correct
    assertEquals("[1,10]", rString.toString());
  }
View Full Code Here

        Identifier identifier = sequenceAck.getIdentifier();
        assertEquals("uuid:897ee740-1624-11da-a28e-b3b9c4e71445", identifier.getIdentifier());

        Iterator<Range> iterator = sequenceAck.getAcknowledgementRanges().iterator();
        while (iterator.hasNext()) {
          Range ackRange = (Range) iterator.next();
            if (ackRange.lowerValue == 1){
                assertEquals(2, ackRange.upperValue);

            } else if (ackRange.lowerValue == 4) {
                assertEquals(6, ackRange.upperValue);
View Full Code Here

    rmdBean.setToEndpointReference(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
    rmdBean.setAcksToEndpointReference(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
    rmdBean.setReplyToEndpointReference(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
    rmdBean.setRMVersion(Sandesha2Constants.SPEC_VERSIONS.v1_1);
    rmdBean.setServerCompletedMessages(new RangeString());
    rmdBean.getServerCompletedMessages().addRange(new Range(1, Long.MAX_VALUE -1));
    rmdBean.getServerCompletedMessages().addRange(new Range(Long.MAX_VALUE, Long.MAX_VALUE));
   
    // Create a transaction and insert the RMSBean
    Transaction tran = storageManager.getTransaction();
   
    rmdBeanMgr.insert(rmdBean);
View Full Code Here

    // Updating the server completed message ranges list
    RangeString serverCompletedMessageRanges = bean.getServerCompletedMessages();
    // See if the message is in the list of completed ranges
    boolean msgNoPresentInList =  serverCompletedMessageRanges.isMessageNumberInRanges(msgNo);
    if (!msgNoPresentInList){
       serverCompletedMessageRanges.addRange(new Range(msgNo));
    }

    // updating the Highest_In_Msg_No property which gives the highest
    // message number retrieved from this sequence.
    long highestInMsgNo = bean.getHighestInMessageNumber();
View Full Code Here

                    element.toString()));

          try {
            long lower = Long.parseLong(lowerAttribValue);
            long upper = Long.parseLong(upperAttribValue);
            acknowledgementRangeList.add(new Range(lower, upper));
          } catch (Exception ex) {
            throw new OMException(
                SandeshaMessageHelper.getMessage(
                    SandeshaMessageKeys.ackRandDoesNotHaveCorrectValues,
                    element.toString()));
View Full Code Here

   
    identifier.toOMElement(sequenceAcknowledgementHeaderBlock, omNamespace);

    Iterator<Range> ackRangeIt = acknowledgementRangeList.iterator();
    while (ackRangeIt.hasNext()) {
      Range ackRange = (Range) ackRangeIt.next();
     
      if (ackRange.upperValue <= 0 || ackRange.lowerValue <= 0 || ackRange.lowerValue > ackRange.upperValue)
        throw new OMException(
            SandeshaMessageHelper.getMessage(
                SandeshaMessageKeys.ackRandDoesNotHaveCorrectValues,
View Full Code Here

    RangeString completedMessages = rmsBean.getClientCompletedMessages();
    long numberOfNewMessagesAcked = 0;

    boolean ackNeedsToSendInvalidFault = false; //if this ack includes a msg that we have not sent then
                          //we should try to send a fault back to the client
    Range firstInvalidRange = null;        //If there is a single invalid range then we set it here.
                          //If there is more than one we report the first invalid range

    //adding a MakeConnection for the response sequence if needed.
    if (rmsBean.getOfferedSequence() != null) {

      RMDBeanMgr rMDBeanMgr = storageManager.getRMDBeanMgr();
      RMDBean rMDBean = rMDBeanMgr.retrieve(outSequenceId);

      if (rMDBean!=null && rMDBean.isPollingMode()) {
        PollingManager manager = storageManager.getPollingManager();
        if(manager != null) manager.schedulePollingRequest(rMDBean.getSequenceID(), false);
      }
    }

    while(ackRangeIterator.hasNext()) {
      Range ackRange = (Range) ackRangeIterator.next();
      long lower = ackRange.lowerValue;
      long upper = ackRange.upperValue;
      Range ackedRange = new Range(lower, upper);
      // Quick check to see if the whole range is already covered
      if(!completedMessages.isRangeCompleted(ackedRange)) {
        //we now know that this range is complete so we update it. This should aggregate the
        //ranges together and tell us which numbers are newly acked
        Range[] newRanges = completedMessages.addRange(ackedRange).getRanges();
View Full Code Here

    Identifier id = new Identifier(rmNamespaceValue);
    id.setIndentifer(sequenceIDAck);
    sequenceAck.setIdentifier(id);
   
    // Set the Invalid range!
    Range ackRange = new Range(1,3);
    sequenceAck.addAcknowledgementRanges(ackRange);

    // Set the SequenceAcknowledgement part in the message
    applicationRMMsg.addSequenceAcknowledgement(sequenceAck);
   
View Full Code Here

    Identifier id = new Identifier(rmNamespaceValue);
    id.setIndentifer(sequenceIDAck);
    sequenceAck.setIdentifier(id);
   
    // Set the Invalid range!
    Range ackRange = new Range(1,3);
    sequenceAck.addAcknowledgementRanges(ackRange);

    // Set the SequenceAcknowledgement part in the message
    applicationRMMsg.addSequenceAcknowledgement(sequenceAck);
   
View Full Code Here

TOP

Related Classes of org.apache.sandesha2.util.Range

Copyright © 2018 www.massapicom. 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.