Package org.apache.sandesha2.storage.beans

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


  }

  public static String getSequenceIDFromInternalSequenceID(String internalSequenceID,
      StorageManager storageManager) throws SandeshaException {

    RMSBean rMSBean = getRMSBeanFromInternalSequenceId(storageManager, internalSequenceID);

    String sequeunceID = null;
    if (rMSBean != null &&
        rMSBean.getSequenceID() != null &&
        !rMSBean.getSequenceID().equals(Sandesha2Constants.TEMP_SEQUENCE_ID))
      sequeunceID = rMSBean.getSequenceID();

    return sequeunceID;
  }
View Full Code Here


  }

  public static boolean isAllMsgsAckedUpto(long highestInMsgNo, String internalSequenceId,
      StorageManager storageManager) throws SandeshaException {

    RMSBean rmsBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceId);
   
    RangeString ackedMsgRanges = rmsBean.getClientCompletedMessages();
    long smallestMsgNo = 1;
    Range interestedRange = new Range(smallestMsgNo, highestInMsgNo);
    boolean allComplete = false;
    if(ackedMsgRanges!=null && ackedMsgRanges.isRangeCompleted(interestedRange)){
      allComplete = true;
View Full Code Here

  }

  public static void timeOutSendingSideSequence(String internalSequenceId,
      StorageManager storageManager) throws SandeshaException {

    RMSBean rmsBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceId);
    rmsBean.setTimedOut(true);
    rmsBean.setLastActivatedTime(System.currentTimeMillis());
    storageManager.getRMSBeanMgr().update(rmsBean);

    cleanSendingSideData(internalSequenceId, storageManager);
  }
View Full Code Here

  public static void addTerminateSequenceMessage(RMMsgContext referenceMessage, String internalSequenceID, String outSequenceId, StorageManager storageManager) throws AxisFault {
 
    if(log.isDebugEnabled())
      log.debug("Enter: TerminateManager::addTerminateSequenceMessage " + outSequenceId + ", " + internalSequenceID);

    RMSBean rmsBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceID);

    if (rmsBean.isTerminateAdded()) {
      if(log.isDebugEnabled())
        log.debug("Exit: TerminateManager::addTerminateSequenceMessage - terminate was added previously.");
      return;
    }

    RMMsgContext terminateRMMessage = RMMsgCreator.createTerminateSequenceMessage(referenceMessage, rmsBean, storageManager);
    terminateRMMessage.setFlow(MessageContext.OUT_FLOW);
    terminateRMMessage.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true");

   
    //setting the To EPR.
    //First try to get it from an Endpoint property.
    //If not get it from the To property.
   
    EndpointReference toEPR = null;
   
    if (rmsBean.getOfferedEndPoint() != null)
      toEPR = new EndpointReference (rmsBean.getOfferedEndPoint());
   
    if (toEPR==null) {

      if (rmsBean.getToEPR()!=null) {
        toEPR = new EndpointReference(rmsBean.getToEPR());
        if (toEPR == null) {
          String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.toEPRNotValid, null);
          throw new SandeshaException(message);
        }
      }
    }

    if (toEPR!=null)
      terminateRMMessage.setTo(toEPR);
   
    if (rmsBean.getReplyToEPR()!=null) {
      terminateRMMessage.setReplyTo(new EndpointReference (rmsBean.getReplyToEPR()));
    }
   
    String rmVersion = rmsBean.getRMVersion();
    terminateRMMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
    terminateRMMessage.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));

    if (rmsBean.getTransportTo() != null) {
      terminateRMMessage.setProperty(Constants.Configuration.TRANSPORT_URL, rmsBean.getTransportTo());
    }

    terminateRMMessage.addSOAPEnvelope();

    String key = SandeshaUtil.getUUID();

    SenderBean terminateBean = new SenderBean();
    terminateBean.setInternalSequenceID(internalSequenceID);
    terminateBean.setSequenceID(outSequenceId);
    terminateBean.setMessageContextRefKey(key);
    terminateBean.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);

    // Set a retransmitter lastSentTime so that terminate will be send with
    // some delay.
    // Otherwise this get send before return of the current request (ack).
    // TODO: refine the terminate delay.
    terminateBean.setTimeToSend(System.currentTimeMillis() + Sandesha2Constants.TERMINATE_DELAY);

    terminateBean.setMessageID(terminateRMMessage.getMessageId());

    // this will be set to true at the sender.
    terminateBean.setSend(true);

    terminateRMMessage.getMessageContext().setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,
        Sandesha2Constants.VALUE_FALSE);

    terminateBean.setReSend(false);
   
    terminateBean.setSequenceID(outSequenceId);
   
    terminateBean.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
    terminateBean.setInternalSequenceID(internalSequenceID);
   
   
    EndpointReference to = terminateRMMessage.getTo();
    if (to!=null)
      terminateBean.setToAddress(to.getAddress());

    // If this message is targetted at an anonymous address then we must not have a transport
    // ready for it, as the terminate sequence is not a reply.
    if(to == null || to.hasAnonymousAddress())
      terminateBean.setTransportAvailable(false);

    rmsBean.setTerminateAdded(true);

    storageManager.getRMSBeanMgr().update(rmsBean);

    terminateRMMessage.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE, Sandesha2Constants.VALUE_TRUE);
   
View Full Code Here

        // Update the RMDBean
        storageManager.getRMDBeanMgr().update(bean);
       
        // If an outbound message has already gone out with that relatesTo, then we can terminate
        // right away.
        RMSBean rmsBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, responseSideInternalSequenceId);

        if(rmsBean != null) {
          String highestOutRelatesTo = rmsBean.getHighestOutRelatesTo();
          if (highestOutRelatesTo != null && highestOutRelatesTo.equals(inMsgId)) {
            highestOutMsgNo = rmsBean.getHighestOutMessageNumber();
            addResponseSideTerminate = true;
           
            // It is possible that the message has gone out, but not been acked yet. In that case
            // we can store the HIGHEST_OUT_MSG_NUMBER as the LAST_OUT_MESSAGE_NO, so that when the
            // ack arrives we will terminate the sequence
            rmsBean.setLastOutMessage(highestOutMsgNo);
            storageManager.getRMSBeanMgr().update(rmsBean);
          }
        }
      }

      // If all the out message have been acked, add the outgoing
      // terminate seq msg.
      String outgoingSequnceID = SandeshaUtil.getSequenceIDFromInternalSequenceID(responseSideInternalSequenceId, storageManager);

      if (addResponseSideTerminate && highestOutMsgNo > 0 && responseSideInternalSequenceId != null
          && outgoingSequnceID != null) {
        boolean allAcked = SandeshaUtil.isAllMsgsAckedUpto(highestOutMsgNo, responseSideInternalSequenceId, storageManager);

        if (allAcked)
        {
          RMSBean rmsBean = SandeshaUtil.getRMSBeanFromSequenceId(storageManager, outgoingSequnceID);
          if (!rmsBean.isTerminateAdded()) {
            TerminateManager.addTerminateSequenceMessage(terminateRMMsg, rmsBean.getInternalSequenceID(), outgoingSequnceID , storageManager);
            String referenceMsgKey = rmsBean.getReferenceMessageStoreKey();
            if (referenceMsgKey==null) {
              String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.referenceMessageNotSetForSequence,rmsBean.getSequenceID());
              throw new SandeshaException (message);
            }
           
            MessageContext referenceMessage = storageManager.retrieveMessageContext(referenceMsgKey, configCtx);
           
            if (referenceMessage==null) {
              String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.referencedMessageNotFound, rmsBean.getSequenceID());
              throw new SandeshaException (message);
            }
           
            //RMMsgContext referenceRMMsg = MsgInitializer.initializeMessage(referenceMessage);
                 
View Full Code Here

      log.debug("Enter: TerminateSeqMsgProcessor::processOutMessage");

    // Get the parent processor to setup the out message
    setupOutMessage(rmMsgCtx);
   
    RMSBean rmsBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(getStorageManager(), getInternalSequenceID());
   
    // Check if the sequence is already terminated (stored on the internal sequenceid)
    if (rmsBean.isTerminateAdded()) {
      String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.terminateAddedPreviously);
      log.debug(message);
      if (log.isDebugEnabled())
        log.debug("Exit: TerminateSeqMsgProcessor::processOutMessage, sequence previously terminated");
      return true;
    }

    AxisOperation terminateOp = SpecSpecificConstants.getWSRMOperation(
        Sandesha2Constants.MessageTypes.TERMINATE_SEQ,
        rmMsgCtx.getRMSpecVersion(),
        getMsgContext().getAxisService());
 
    OperationContext opcontext = OperationContextFactory.createOperationContext(terminateOp.getAxisSpecificMEPConstant(), terminateOp, getMsgContext().getServiceContext());
    opcontext.setParent(getMsgContext().getServiceContext());

    getConfigurationContext().registerOperationContext(rmMsgCtx.getMessageId(),  opcontext);

    getMsgContext().setOperationContext(opcontext);
    getMsgContext().setAxisOperation(terminateOp);

    TerminateSequence terminateSequencePart = (TerminateSequence) rmMsgCtx
        .getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
    terminateSequencePart.getIdentifier().setIndentifer(getOutSequenceID());

    rmMsgCtx.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(getRMVersion()));
    rmMsgCtx.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(getRMVersion()));
   
    rmsBean.setTerminateAdded(true);

    // Update the RMSBean with the terminate added flag
    getStorageManager().getRMSBeanMgr().update(rmsBean);

    // Send the outgoing message
View Full Code Here

   
    TerminateSequenceResponse tsResponse = (TerminateSequenceResponse)
      terminateResRMMsg.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE);
   
    String sequenceId = tsResponse.getIdentifier().getIdentifier();
    RMSBean rmsBean = SandeshaUtil.getRMSBeanFromSequenceId(storageManager, sequenceId);

    // Check that the sender of this TerminateSequence holds the correct token
    if(rmsBean != null && rmsBean.getSecurityTokenData() != null) {
      SecurityManager secManager = SandeshaUtil.getSecurityManager(context);
      OMElement body = terminateResRMMsg.getSOAPEnvelope().getBody();
      SecurityToken token = secManager.recoverSecurityToken(rmsBean.getSecurityTokenData());
      secManager.checkProofOfPossession(token, body, msgContext);
    }

    msgContext.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,rmsBean.getInternalSequenceID());

    //shedulling a polling request for the response side.
    if (rmsBean.getOfferedSequence()!=null) {
      RMDBeanMgr rMDBeanMgr = storageManager.getRMDBeanMgr();
      RMDBean rMDBean = rMDBeanMgr.retrieve(sequenceId);
     
      if (rMDBean!=null && rMDBean.isPollingMode()) {
        PollingManager manager = storageManager.getPollingManager();
View Full Code Here

          // If the WSRM versoion is 1.1 termination will happen in the terminate sequence response message.
         
          TerminateSequence terminateSequence = rmMsgCtx.getTerminateSequence();
          String sequenceID = terminateSequence.getIdentifier().getIdentifier();
 
          RMSBean rmsBean = SandeshaUtil.getRMSBeanFromSequenceId(storageManager, sequenceID);
          TerminateManager.terminateSendingSide(rmsBean, storageManager, false, null);
         
          if(transaction != null && transaction.isActive()) transaction.commit();
          transaction = null;
        } finally {
View Full Code Here

     
      if(internalSequenceId != null) {
        // Create a new Transaction
        transaction = storageManager.getTransaction();
       
        RMSBean bean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceId);
     
        if (bean != null) {           
          bean.setLastSendError(e);
          bean.setLastSendErrorTimestamp(System.currentTimeMillis());

          // Update the RMSBean
          storageManager.getRMSBeanMgr().update(bean);
        }
       
View Full Code Here

  public static final RMSBean getRMSBeanFromInternalSequenceId(StorageManager storageManager, String internalSequenceID)
 
  throws SandeshaException {
    RMSBeanMgr rmsBeanMgr = storageManager.getRMSBeanMgr();
    RMSBean bean = rmsBeanMgr.retrieveByInternalSequenceID(internalSequenceID);
    return bean;
  }
View Full Code Here

TOP

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

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.