Package org.apache.sandesha2.storage.beans

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


    SenderBeanMgr senderMgr = storageManager.getSenderBeanMgr();
   
    String seqID = SandeshaUtil.getUUID();
   
    // Mockup an RMSBean
    RMSBean rmsBean = new RMSBean();
    rmsBean.setCreateSeqMsgID(SandeshaUtil.getUUID());
    rmsBean.setSequenceID(seqID);
    rmsBean.setInternalSequenceID(SandeshaUtil.getInternalSequenceID(seqID, null));
    rmsBean.setToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
    rmsBean.setAcksToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
    rmsBean.setReplyToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
    rmsBean.setRMVersion(Sandesha2Constants.SPEC_VERSIONS.v1_1);
    rmsBean.setClientCompletedMessages(new RangeString());
    rmsBean.setNextMessageNumber(4);
    rmsBean.setHighestOutMessageNumber(3);
   
    SenderBean bean1 = getSenderBean(seqID, 1, 1);
    SenderBean bean2 = getSenderBean(seqID, 0, 2);
    SenderBean bean3 = getSenderBean(seqID, 1, 3);   
View Full Code Here


     
      Transaction transaction = storageManager.getTransaction();
     
      RMSBeanMgr rmsBeanMgr = storageManager.getRMSBeanMgr();
     
      RMSBean rmsBean = new RMSBean ();
      RMSBean duplicateRMSBean = new RMSBean ();
     
      rmsBean.setCreateSeqMsgID(SandeshaUtil.getUUID());
      duplicateRMSBean.setCreateSeqMsgID(SandeshaUtil.getUUID());
     
      String sequenceId = SandeshaUtil.getUUID();
     
      //we duplicate this sequenceID in both RMSBeans.
      rmsBean.setSequenceID(sequenceId);
      duplicateRMSBean.setSequenceID(sequenceId);
     
      rmsBeanMgr.insert(rmsBean);
     
      boolean exceptionThrown = false;
      try {
View Full Code Here

    public void tearDown() throws Exception {
      transaction.commit();
    }

    public void testDelete() throws SandeshaStorageException {
      RMSBean rMSBean = new RMSBean ();
      rMSBean.setInternalSequenceID("TmpSeqId1");
      rMSBean.setCreateSeqMsgID("CreateSeqMsgId1");
      rMSBean.setSequenceID("SeqId1");
        mgr.insert(rMSBean);
        mgr.delete("CreateSeqMsgId1");
        assertNull(mgr.retrieve("CreateSeqMsgId1"));
    }
View Full Code Here

        mgr.delete("CreateSeqMsgId1");
        assertNull(mgr.retrieve("CreateSeqMsgId1"));
    }

    public void testFind() throws SandeshaStorageException {
      RMSBean createSeqBean1 = new RMSBean ();
      createSeqBean1.setInternalSequenceID("TmpSeqId1");
      createSeqBean1.setCreateSeqMsgID("CreateSeqMsgId1");
      createSeqBean1.setSequenceID("SeqId1");
     
      RMSBean createSeqBean2 = new RMSBean ();
      createSeqBean2.setInternalSequenceID("TmpSeqId1");
      createSeqBean2.setCreateSeqMsgID("CreateSeqMsgId2");
      createSeqBean2.setSequenceID("SeqId2");
     
        mgr.insert(createSeqBean1);
        mgr.insert(createSeqBean2);

        RMSBean target = new RMSBean();
        target.setInternalSequenceID("TmpSeqId1");

        Iterator iter = mgr.find(target).iterator();
        RMSBean tmp = (RMSBean) iter.next();
        if (tmp.getCreateSeqMsgID().equals("CreateSeqMsgId1")) {
            tmp = (RMSBean) iter.next();
            assertTrue(tmp.getCreateSeqMsgID().equals("CreateSeqMsgId2"));

        }   else {
            tmp = (RMSBean) iter.next();
            assertTrue(tmp.getCreateSeqMsgID().equals("CreateSeqMsgId1"));
        }
    }
View Full Code Here

            assertTrue(tmp.getCreateSeqMsgID().equals("CreateSeqMsgId1"));
        }
    }

    public void testInsert() throws SandeshaStorageException{
      RMSBean rMSBean = new RMSBean ();
      rMSBean.setInternalSequenceID("TmpSeqId4");
      rMSBean.setCreateSeqMsgID("CreateSeqMsgId4");
      rMSBean.setSequenceID("SeqId4");
        mgr.insert(rMSBean);
        RMSBean tmpbean = mgr.retrieve("CreateSeqMsgId4");
        assertTrue(tmpbean.getCreateSeqMsgID().equals("CreateSeqMsgId4"));
        assertTrue(tmpbean.getSequenceID().equals("SeqId4"));
        assertTrue(tmpbean.getInternalSequenceID().equals("TmpSeqId4"));
    }
View Full Code Here


    public void testRetrieve() throws SandeshaStorageException{
        assertNull(mgr.retrieve("CreateSeqMsgId5"));

      RMSBean rMSBean = new RMSBean ();
      rMSBean.setInternalSequenceID("TmpSeqId5");
      rMSBean.setCreateSeqMsgID("CreateSeqMsgId5");
      rMSBean.setSequenceID("SeqId5");
        mgr.insert(rMSBean);
        RMSBean tmp = mgr.retrieve("CreateSeqMsgId5");
        assertTrue(tmp.getCreateSeqMsgID().equals("CreateSeqMsgId5"));
    }
View Full Code Here

        RMSBean tmp = mgr.retrieve("CreateSeqMsgId5");
        assertTrue(tmp.getCreateSeqMsgID().equals("CreateSeqMsgId5"));
    }

    public void testUpdate() throws SandeshaStorageException {
      RMSBean rMSBean = new RMSBean ();
      rMSBean.setInternalSequenceID("TmpSeqId6");
      rMSBean.setCreateSeqMsgID("CreateSeqMsgId6");
      rMSBean.setSequenceID("SeqId6");
       
        mgr.insert(rMSBean);
        rMSBean.setInternalSequenceID("TmpSeqId7");
        mgr.update(rMSBean);
        RMSBean tmp = mgr.retrieve("CreateSeqMsgId6");
        assertTrue(tmp.getInternalSequenceID().equals("TmpSeqId7"));
    }
View Full Code Here

    RMDBeanMgr rmdMgr = storageManager.getRMDBeanMgr();
    RMDBean rmdBean = rmdMgr.retrieve(sequenceId);
    String outBoundInternalSequence = rmdBean.getOutboundInternalSequence();
   
    RMSBeanMgr rmsBeanMgr = storageManager.getRMSBeanMgr();
    RMSBean findBean = new RMSBean ();
    findBean.setInternalSequenceID(outBoundInternalSequence);
    RMSBean rmsBean = rmsBeanMgr.findUnique (findBean);
   
    if (rmsBean!=null && rmsBean.getLastOutMessage()<=0) {
      //there is a RMS sequence without a LastMsg entry
     
      MessageContext msgContext = rmMsgCtx.getMessageContext();
     
      AxisOperation operation = SpecSpecificConstants.getWSRMOperation(Sandesha2Constants.MessageTypes.LAST_MESSAGE,
View Full Code Here

        if (size > 0) {
          //select one at random: TODO better method?
          Random random = new Random();
          possibleBeanIndex = random.nextInt(size);
          RMSequenceBean selectedSequence = (RMSequenceBean) possibleBeans.get(possibleBeanIndex);
          findSenderBean.setSequenceID(selectedSequence.getSequenceID());
          if (LoggingControl.isAnyTracingEnabled() && log.isDebugEnabled())
            log.debug("sequence selected " + findSenderBean.getSequenceID());
        } else {
          //we cannot match a RMD with the correct security credentials so we cannot process this msg under RSP
          if (LoggingControl.isAnyTracingEnabled() && log.isDebugEnabled())
            log.debug("Exit: MakeConnectionProcessor::processInMessage : no RM sequence bean with security credentials");
          return false;
        }

        // Commit this transaction to clear up held RMS/RMDBeans
        if (transaction != null && transaction.isActive())
          transaction.commit();

        // Get a new transaction
        transaction = storageManager.getTransaction();
      }

      //lookup a sender bean
      SenderBeanMgr senderBeanMgr = storageManager.getSenderBeanMgr();

      //selecting the set of SenderBeans that suit the given criteria.
      findSenderBean.setSend(true);
      findSenderBean.setTransportAvailable(false);

      if (address != null)
        findSenderBean.setToAddress(address);

      if (identifier != null) {
        if (LoggingControl.isAnyTracingEnabled() && log.isDebugEnabled())
          log.debug("identifier set, this violates RSP " + identifier);
        findSenderBean.setSequenceID(identifier.getIdentifier());
      }

      SenderBean senderBean = null;
      boolean pending = false;
      while (true) {
        // 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<SenderBean> collection = senderBeanMgr.find(findSenderBean);

        //removing beans that does not pass the resend test
        for (Iterator<SenderBean> 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;

        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<SenderBean> it = collection.iterator();

        senderBean = null;
        for (int item = 0; item < size; item++) {
          senderBean = (SenderBean) it.next();
          if (item == itemToPick)
            break;
        }

        if (senderBean == null) {
          //If secured try another sequence
          //Remove old one from the list and pick another random one
          if (secured) {
            possibleBeans.remove(possibleBeanIndex);
            int possBeansSize = possibleBeans.size();

            if (possBeansSize > 0) {
              //select one at random: TODO better method?
              Random random = new Random();
              possibleBeanIndex = random.nextInt(possBeansSize);
              RMSequenceBean selectedSequence = (RMSequenceBean) possibleBeans.get(possibleBeanIndex);
              findSenderBean.setSequenceID(selectedSequence.getSequenceID());
              if (LoggingControl.isAnyTracingEnabled() && log.isDebugEnabled())
                log.debug("sequence selected " + findSenderBean.getSequenceID());
            } else {
              if (LoggingControl.isAnyTracingEnabled() && log.isDebugEnabled())
                log.debug("Exit: MakeConnectionProcessor::processInMessage, no matching message found");
View Full Code Here

    String sequenceId = closeSequence.getIdentifier().getIdentifier();
   
    StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(configCtx, configCtx
        .getAxisConfiguration());

    RMSequenceBean rmBean = SandeshaUtil.getRMDBeanFromSequenceId(storageManager, sequenceId);
    if(rmBean==null){
      rmBean = SandeshaUtil.getRMSBeanFromSequenceId(storageManager, sequenceId);
    }
   
    //check the security credentials
    SandeshaUtil.assertProofOfPossession(rmBean, msgCtx, msgCtx.getEnvelope().getBody());

    if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager, false)) {
      if (log.isDebugEnabled())
        log.debug("Exit: CloseSequenceProcessor::processInMessage, Unknown sequence " + sequenceId);
      return false;
    }
   
    // throwing a fault if the sequence is terminated
    if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, rmBean, false)) {
      if (log.isDebugEnabled())
        log.debug("Exit: CloseSequenceProcessor::processInMessage, Sequence terminated");
      return false;
    }

    rmBean.setClosed(true);

    RMMsgContext closeSeqResponseRMMsg = RMMsgCreator.createCloseSeqResponseMsg(rmMsgCtx, rmBean);
    MessageContext closeSequenceResponseMsg = closeSeqResponseRMMsg.getMessageContext();   
    if(rmBean instanceof RMDBean){
      storageManager.getRMDBeanMgr().update((RMDBean)rmBean);
      //Piggyback an ack for the sequence being closed on the closeSequenceResponse
      RMMsgCreator.addAckMessage(closeSeqResponseRMMsg, sequenceId, (RMDBean)rmBean, false, true);
    }
    else{
      storageManager.getRMSBeanMgr().update((RMSBean)rmBean);
    }

    closeSeqResponseRMMsg.setFlow(MessageContext.OUT_FLOW);
    closeSeqResponseRMMsg.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true");
    closeSequenceResponseMsg.setResponseWritten(true);
    if(rmBean instanceof RMSBean && rmBean.getRMVersion().equals(Sandesha2Constants.SPEC_VERSIONS.v1_1)){
      //we expect a response
      closeSequenceResponseMsg.setReplyTo(rmBean.getReplyToEndpointReference());
    }
    closeSeqResponseRMMsg.addSOAPEnvelope();
   
    //
    // Now that we have generated the message we can commit the transaction
View Full Code Here

TOP

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

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.