Package org.apache.sandesha2.storage.beans

Examples of org.apache.sandesha2.storage.beans.SenderBean


    StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
   
    SenderBeanMgr senderBeanMgr = storageManager.getSenderBeanMgr();
   
    //selecting the set of SenderBeans that suit the given criteria.
    SenderBean findSenderBean = new SenderBean ();
    findSenderBean.setSend(true);
    findSenderBean.setTransportAvailable(false);
   
    if (address!=null)
      findSenderBean.setToAddress(address.getAddress());
   
    if (identifier!=null)
      findSenderBean.setSequenceID(identifier.getIdentifier());
   
    // Set the time to send field to be now
    findSenderBean.setTimeToSend(System.currentTimeMillis());
   
    //finding the beans that go with the criteria of the passed SenderBean
    //The reSend flag is ignored for this selection, so there is no need to
    //set it.
    Collection collection = senderBeanMgr.find(findSenderBean);
   
    //removing beans that does not pass the resend test
    for (Iterator it=collection.iterator();it.hasNext();) {
      SenderBean bean = (SenderBean) it.next();
      if (!bean.isReSend() && bean.getSentCount()>0)
        it.remove();
    }
   
    //selecting a bean to send RANDOMLY. TODO- Should use a better mechanism.
    int size = collection.size();
    int itemToPick=-1;
   
    boolean pending = false;
    if (size>0) {
      Random random = new Random ();
      itemToPick = random.nextInt(size);
    }

    if (size>1)
      pending = true//there are more than one message to be delivered using the makeConnection.
               //So the MessagePending header should have value true;
   
    Iterator it = collection.iterator();
   
    SenderBean senderBean = null;
    for (int item=0;item<size;item++) {
        senderBean = (SenderBean) it.next();
      if (item==itemToPick)
        break;
    }
View Full Code Here


        for (int rangeIndex=0; rangeIndex < newRanges.length; rangeIndex++) {
          //now work on each newly acked message in this range
          for(long messageNo = newRanges[rangeIndex].lowerValue; messageNo<=newRanges[rangeIndex].upperValue; messageNo++){
           
            numberOfNewMessagesAcked++;
            SenderBean matcher = new SenderBean();
            matcher.setSequenceID(outSequenceId);
           
            matcher.setMessageNumber(messageNo);
           
            SenderBean retransmitterBean = retransmitterMgr.findUnique(matcher);
            if (retransmitterBean != null) {
              // Check we haven't got an Ack for a message that hasn't been sent yet !
              if (retransmitterBean.getSentCount() == 0) {
                FaultManager.makeInvalidAcknowledgementFault(rmMsgCtx, sequenceAck, ackRange,
                    storageManager, piggybackedAck);
                if (log.isDebugEnabled())
                  log.debug("Exit: AcknowledgementProcessor::processAckHeader, Invalid Ack");
                return;
              }
             
              String storageKey = retransmitterBean.getMessageContextRefKey();
             
              boolean syncResponseNeeded = false;
              if (Sandesha2Constants.SPEC_VERSIONS.v1_0.equals(rmVersion) && anonReplyTo) {
                MessageContext applicationMessage = storageManager.retrieveMessageContext(storageKey, configCtx);
                AxisOperation operation = applicationMessage.getAxisOperation();
                if(operation!= null) {
                  int mep = operation.getAxisSpecifMEPConstant();
                  syncResponseNeeded = (mep == WSDLConstants.MEP_CONSTANT_OUT_IN);
                }
              }

              if (!syncResponseNeeded) {
                // removing the application message from the storage.
                retransmitterMgr.delete(retransmitterBean.getMessageID());
                storageManager.removeMessageContext(storageKey);
              }
            }
          }//end for
        }//end for
View Full Code Here

      return arrayList;
   
    Iterator iterator = table.keySet().iterator();
   
    while (iterator.hasNext()) {
      SenderBean senderBean = (SenderBean) table.get(iterator.next());
      if (internalSequenceID.equals(senderBean.getInternalSequenceID()))
          arrayList.add(senderBean);
    }
   
    return arrayList;
  }
View Full Code Here

  public synchronized List find(SenderBean bean) {
    ArrayList beans = new ArrayList();
    Iterator iterator = ((Hashtable) table).values().iterator();

    SenderBean temp;
    while (iterator.hasNext()) {

      temp = (SenderBean) iterator.next();

     
      boolean add = true;

      if (bean.getMessageContextRefKey() != null && !bean.getMessageContextRefKey().equals(temp.getMessageContextRefKey()))
        add = false;

      if (bean.getTimeToSend() > 0
          && bean.getTimeToSend() != temp.getTimeToSend())
        add = false;

      if (bean.getMessageID() != null
          && !bean.getMessageID().equals(temp.getMessageID()))
        add = false;

      if (bean.getInternalSequenceID() != null
          && !bean.getInternalSequenceID().equals(
              temp.getInternalSequenceID()))
        add = false;

      if (bean.getMessageNumber() > 0
          && bean.getMessageNumber() != temp.getMessageNumber())
        add = false;

      if (bean.getMessageType() != Sandesha2Constants.MessageTypes.UNKNOWN
          && bean.getMessageType() != temp.getMessageType())
        add = false;
     
      if (bean.isSend() != temp.isSend())
        add = false;

      if (bean.isReSend() != temp.isReSend())
        add = false;
     
      if (add)
        beans.add(temp);
    }
View Full Code Here

   
   
    long lowestAppMsgNo = 0;
    while (iterator.hasNext()) {
      Object key = iterator.next();
      SenderBean temp = (SenderBean) table.get(key);
      if (temp.isSend()) {
        long timeToSend = temp.getTimeToSend();
        long timeNow = System.currentTimeMillis();
        if ((timeNow >= timeToSend)) {
          if (temp.getMessageType()==Sandesha2Constants.MessageTypes.APPLICATION) {
            long msgNo = temp.getMessageNumber();
            if (lowestAppMsgNo==0) {
              lowestAppMsgNo=msgNo;
            }else {
              if (msgNo<lowestAppMsgNo)
                lowestAppMsgNo = msgNo;
            }
          }
        }
      }
    }
   
    iterator = table.keySet().iterator()
    while (iterator.hasNext()) {
      Object key = iterator.next();
      SenderBean temp = (SenderBean) table.get(key);

      if (temp.isSend()) {

        long timeToSend = temp.getTimeToSend();
        long timeNow = System.currentTimeMillis();
        if ((timeNow >= timeToSend)) {
          boolean valid = false;
          if (temp.getMessageType()==Sandesha2Constants.MessageTypes.APPLICATION) {
            if (temp.getMessageNumber()==lowestAppMsgNo)
              valid = true;
          }else {
            valid = true;
          }
         
View Full Code Here

  private synchronized ArrayList findBeansWithMsgNo(ArrayList list, long msgNo) {
    ArrayList beans = new ArrayList();

    Iterator it = list.iterator();
    while (it.hasNext()) {
      SenderBean bean = (SenderBean) it.next();
      if (bean.getMessageNumber() == msgNo)
        beans.add(bean);
    }

    return beans;
  }
View Full Code Here

  public synchronized SenderBean retrieveFromMessageRefKey(String messageContextRefKey) {
   
    Iterator iter = table.keySet().iterator();
    while (iter.hasNext()) {
      Object key = iter.next();
      SenderBean bean = (SenderBean) table.get(key);
      if (bean.getMessageContextRefKey().equals(messageContextRefKey)) {
        return bean;
      }
    }
   
    return null;
View Full Code Here

    }

    // updating the last activated time of the sequence.
    SequenceManager.updateLastActivatedTime(sequencePropertyKey, storageManager);

    SenderBean input = new SenderBean();
    input.setSend(true);
    input.setReSend(true);
    Collection retransmitterEntriesOfSequence = senderBeanMgr.find(input);

    ArrayList ackedMessagesList = new ArrayList();
    while (ackRangeIterator.hasNext()) {
      AcknowledgementRange ackRange = (AcknowledgementRange) ackRangeIterator.next();
      long lower = ackRange.getLowerValue();
      long upper = ackRange.getUpperValue();

      for (long messageNo = lower; messageNo <= upper; messageNo++) {
        SenderBean retransmitterBean = getSenderEntry(retransmitterEntriesOfSequence, messageNo);
        if (retransmitterBean != null) {
          senderBeanMgr.delete(retransmitterBean.getMessageID());

          // removing the application message from the storage.
          String storageKey = retransmitterBean.getMessageContextRefKey();
          storageManager.removeMessageContext(storageKey);
        }

        ackedMessagesList.add(new Long(messageNo));
      }
View Full Code Here

  }

  private SenderBean getSenderEntry(Collection collection, long msgNo) {
    Iterator it = collection.iterator();
    while (it.hasNext()) {
      SenderBean bean = (SenderBean) it.next();
      if (bean.getMessageNumber() == msgNo)
        return bean;
    }

    return null;
  }
View Full Code Here

    ConfigurationContext configurationContext = rmMessageContext.getConfigurationContext();

    SenderBeanMgr senderBeanMgr = storageManager.getSenderBeanMgr();

    SenderBean findBean = new SenderBean();

    findBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);
    findBean.setSend(true);
    findBean.setReSend(false);

    String carrietTo = rmMessageContext.getTo().getAddress();

    Collection collection = senderBeanMgr.find(findBean);

    Iterator it = collection.iterator();

    piggybackLoop: while (it.hasNext()) {
      SenderBean ackBean = (SenderBean) it.next();

      long timeNow = System.currentTimeMillis();
      if (ackBean.getTimeToSend() > timeNow) {
        // //Piggybacking will happen only if the end of ack interval
        // (timeToSend) is not reached.

        MessageContext ackMsgContext = storageManager.retrieveMessageContext(ackBean.getMessageContextRefKey(),
            configurationContext);

        // wsa:To has to match for piggybacking.
        String to = ackMsgContext.getTo().getAddress();
        if (!carrietTo.equals(to)) {
          continue piggybackLoop;
        }

        if (log.isDebugEnabled()) log.debug("Adding ack headers");

        // deleting the ack entry.
        senderBeanMgr.delete(ackBean.getMessageID());

        // Adding the ack(s) to the application message
        boolean acks = false;
        SOAPHeader appMsgHeaders = rmMessageContext.getMessageContext().getEnvelope().getHeader();
       
View Full Code Here

TOP

Related Classes of org.apache.sandesha2.storage.beans.SenderBean

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.