Author: gatfora
Date: Mon Feb  5 06:58:46 2007
New Revision: 503712

URL: http://svn.apache.org/viewvc?view=rev&rev=503712
Log:
Update code to generate wsrm:SequenceTerminated Faults

Added:
    
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java
Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=503712&r1=503711&r2=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
 Mon Feb  5 06:58:46 2007
@@ -324,6 +324,8 @@
                        public static final int LAST_MESSAGE_NO_EXCEEDED = 5;
 
                        public static final int SEQUENCE_CLOSED = 6;
+
+                       public static final int SEQUENCE_TERMINATED = 7;
                }
        }
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=503712&r1=503711&r2=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 Mon Feb  5 06:58:46 2007
@@ -34,6 +34,7 @@
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.engine.Handler.InvocationResponse;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
@@ -130,6 +131,13 @@
                if (FaultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, 
storageManager)) {
                        if (log.isDebugEnabled())
                                log.debug("Exit: 
AckRequestedProcessor::processAckRequestedHeader, Unknown sequence ");
+                       return false;
+               }
+
+               // throwing a fault if the sequence is terminated
+               if (FaultManager.checkForSequenceTerminated(rmMsgCtx, 
sequenceId, rmdBean)) {
+                       if (log.isDebugEnabled())
+                               log.debug("Exit: 
AckRequestedProcessor::processAckRequestedHeader, Sequence terminated");
                        return false;
                }
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java?view=diff&rev=503712&r1=503711&r2=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
 Mon Feb  5 06:58:46 2007
@@ -90,6 +90,13 @@
                        return false;
                }
                
+               // throwing a fault if the sequence is terminated
+               if (FaultManager.checkForSequenceTerminated(rmMsgCtx, 
sequenceId, rmdBean)) {
+                       if (log.isDebugEnabled())
+                               log.debug("Exit: 
CloseSequenceProcessor::processInMessage, Sequence terminated");
+                       return false;
+               }
+
                rmdBean.setClosed(true);
                storageManager.getRMDBeanMgr().update(rmdBean);
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=503712&r1=503711&r2=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 Mon Feb  5 06:58:46 2007
@@ -135,6 +135,13 @@
                sequence.setMustUnderstand(false);
                rmMsgCtx.addSOAPEnvelope();
 
+               // throwing a fault if the sequence is terminated
+               if (FaultManager.checkForSequenceTerminated(rmMsgCtx, 
sequenceId, bean)) {
+                       if (log.isDebugEnabled())
+                               log.debug("Exit: 
SequenceProcessor::processReliableMessage, Sequence terminated");
+                       return InvocationResponse.ABORT;
+               }
+               
                // throwing a fault if the sequence is closed.
                if (FaultManager.checkForSequenceClosed(rmMsgCtx, sequenceId, 
bean)) {
                        if (log.isDebugEnabled())

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=503712&r1=503711&r2=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java 
Mon Feb  5 06:58:46 2007
@@ -327,6 +327,52 @@
                getOrSendFault(rmMessageContext, data);
        }
        
+       /**
+        * Checks if a sequence is terminated and returns a SequenceTerminated 
fault.
+        * @param referenceRMMessage
+        * @param sequenceID
+        * @param rmdBean
+        * @return
+        * @throws AxisFault 
+        */
+       public static boolean checkForSequenceTerminated(RMMsgContext 
referenceRMMessage, String sequenceID, RMDBean rmdBean) 
+       
+       throws AxisFault {
+               if (log.isDebugEnabled())
+                       log.debug("Enter: FaultManager::checkForSequenceClosed, 
" + sequenceID);
+
+               if (rmdBean.isTerminated()) {
+                       MessageContext referenceMessage = 
referenceRMMessage.getMessageContext();
+                       FaultData data = new FaultData();
+                       int SOAPVersion = 
SandeshaUtil.getSOAPVersion(referenceMessage.getEnvelope());
+                       if (SOAPVersion == Sandesha2Constants.SOAPVersion.v1_1)
+                               data.setCode(SOAP11Constants.FAULT_CODE_SENDER);
+                       else
+                               data.setCode(SOAP12Constants.FAULT_CODE_SENDER);
+
+                       
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.SEQUENCE_TERMINATED);
+                       
data.setReason(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotSendMsgAsSequenceTerminated,
 sequenceID));
+                       
data.setType(Sandesha2Constants.SOAPFaults.FaultType.SEQUENCE_TERMINATED);
+                       
+                       SOAPFactory factory = 
SOAPAbstractFactory.getSOAPFactory(SOAPVersion);
+                       String rmNamespaceValue = 
referenceRMMessage.getRMNamespaceValue();
+                       OMElement identifierElement = 
factory.createOMElement(Sandesha2Constants.WSRM_COMMON.IDENTIFIER,
+                                       rmNamespaceValue, 
Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+                       identifierElement.setText(sequenceID);
+                       
+                       data.setDetail(identifierElement);
+
+                       if (log.isDebugEnabled())
+                               log.debug("Exit: 
FaultManager::checkForSequenceClosed, sequence closed");
+                       getOrSendFault(referenceRMMessage, data);
+                       return true;
+               }
+
+               if (log.isDebugEnabled())
+                       log.debug("Exit: FaultManager::checkForSequenceClosed");
+               return false;
+  }
+
        public static boolean checkForSequenceClosed(RMMsgContext 
referenceRMMessage, String sequenceID,
                        RMDBean rmdBean) throws AxisFault {
                if (log.isDebugEnabled())
@@ -580,5 +626,4 @@
                }
          return false;
   }
-
 }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java?view=diff&rev=503712&r1=503711&r2=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SOAPFaultEnvelopeCreator.java
 Mon Feb  5 06:58:46 2007
@@ -98,6 +98,8 @@
                        sequenceFault = true;
                else if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.SEQUENCE_CLOSED)
                        sequenceFault = true;
+               else if (faultType == 
Sandesha2Constants.SOAPFaults.FaultType.SEQUENCE_TERMINATED)
+                       sequenceFault = true;
 
                return sequenceFault;
 

Added: 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java?view=auto&rev=503712
==============================================================================
--- 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java
 (added)
+++ 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java
 Mon Feb  5 06:58:46 2007
@@ -0,0 +1,413 @@
+/*
+ * Copyright 2007 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.sandesha2.faulttests;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaTestCase;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
+import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.Transaction;
+import org.apache.sandesha2.storage.beanmanagers.RMDBeanMgr;
+import org.apache.sandesha2.storage.beans.RMDBean;
+import org.apache.sandesha2.util.RangeString;
+import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SpecSpecificConstants;
+import org.apache.sandesha2.wsrm.AckRequested;
+import org.apache.sandesha2.wsrm.CloseSequence;
+import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.MessageNumber;
+import org.apache.sandesha2.wsrm.Sequence;
+
+
+public class SequenceTerminatedFaultTest extends SandeshaTestCase {
+
+       private static final String server_repoPath = "target" + File.separator
+           + "repos" + File.separator + "server";
+
+       private static final String server_axis2_xml = "target" + File.separator
+           + "repos" + File.separator + "server" + File.separator
+           + "server_axis2.xml";
+       
+       private static ConfigurationContext serverConfigContext;
+       
+       private static boolean serverStarted = false;
+       
+       public SequenceTerminatedFaultTest() {
+               super("SequenceTerminatedFaultTest");
+       }
+
+       public void setUp() throws Exception {
+               super.setUp();
+               if (!serverStarted) {
+                       serverConfigContext = startServer(server_repoPath, 
server_axis2_xml);
+               }
+               serverStarted = true;
+       }
+
+       public void tearDown () {
+       }
+
+       /**
+        * Sends an application message to the RMD.
+        * The RMD should reject the message with a sequence terminated fault
+        * 
+        * @throws Exception
+        */
+       public void testSequenceTerminatedFault() throws Exception {
+    // Open a connection to the endpoint
+               HttpURLConnection connection = 
+                       FaultTestUtils.getHttpURLConnection("http://127.0.0.1:"; 
+ serverPort + "/axis2/services/RMSampleService",
+                                       pingAction);
+
+               StorageManager storageManager = 
+                       
SandeshaUtil.getSandeshaStorageManager(serverConfigContext, 
serverConfigContext.getAxisConfiguration());
+               
+               RMDBeanMgr rmdBeanMgr = storageManager.getRMDBeanMgr();
+               
+               String seqID = SandeshaUtil.getUUID();
+               
+               // Mockup an RMDBean
+               RMDBean rmdBean = new RMDBean();
+               rmdBean.setSequenceID(seqID);
+               rmdBean.setToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               
rmdBean.setAcksToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               
rmdBean.setReplyToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               rmdBean.setRMVersion(Sandesha2Constants.SPEC_VERSIONS.v1_1);
+               rmdBean.setServerCompletedMessages(new RangeString());
+               // Flag that the sequence is terminated.
+               rmdBean.setTerminated(true);
+               
+               // Create a transaction and insert the RMSBean
+               Transaction tran = storageManager.getTransaction();
+               
+               rmdBeanMgr.insert(rmdBean);
+               
+               tran.commit();
+
+               
+               OutputStream tmpOut2 = connection.getOutputStream();
+
+               byte ar[] = getAppMessageAsBytes(seqID);
+               // Send the message to the socket.
+               tmpOut2.write(ar);
+               tmpOut2.flush();
+
+               // Get the response message from the connection
+               String message = 
FaultTestUtils.retrieveResponseMessage(connection);
+    
+    // Check that the fault message isn't null
+    assertNotNull(message);
+    
+    // Check that the response contains the Sequence Terminated tag    
+    assertTrue(message.indexOf("wsrm:SequenceTerminated") > -1);
+    
+    // Check that the <wsrm:Identifier>seqID</wsrm:Identifier> matches the 
sequence ID specified
+    String faultID = message.substring(message.indexOf("<wsrm:Identifier>") + 
17, message.indexOf("</wsrm:Identifier>"));
+    assertEquals(seqID, faultID);
+    
+    // Disconnect at the end of the test
+    connection.disconnect();
+       }
+       
+       /**
+        * Sends a Close message to the RMD.
+        * The RMD should reject the message with a sequence terminated fault
+        * 
+        * @throws Exception
+        */
+       public void testSequenceTerminatedOnCloseFault() throws Exception {
+    // Open a connection to the endpoint
+               HttpURLConnection connection = 
+                       FaultTestUtils.getHttpURLConnection("http://127.0.0.1:"; 
+ serverPort + "/axis2/services/RMSampleService",
+                                       
Sandesha2Constants.SPEC_2006_08.Actions.ACTION_CLOSE_SEQUENCE);
+
+               StorageManager storageManager = 
+                       
SandeshaUtil.getSandeshaStorageManager(serverConfigContext, 
serverConfigContext.getAxisConfiguration());
+               
+               RMDBeanMgr rmdBeanMgr = storageManager.getRMDBeanMgr();
+               
+               String seqID = SandeshaUtil.getUUID();
+               
+               // Mockup an RMDBean
+               RMDBean rmdBean = new RMDBean();
+               rmdBean.setSequenceID(seqID);
+               rmdBean.setToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               
rmdBean.setAcksToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               
rmdBean.setReplyToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               rmdBean.setRMVersion(Sandesha2Constants.SPEC_VERSIONS.v1_1);
+               rmdBean.setServerCompletedMessages(new RangeString());
+               // Flag that the sequence is terminated.
+               rmdBean.setTerminated(true);
+               
+               // Create a transaction and insert the RMSBean
+               Transaction tran = storageManager.getTransaction();
+               
+               rmdBeanMgr.insert(rmdBean);
+               
+               tran.commit();
+
+               
+               OutputStream tmpOut2 = connection.getOutputStream();
+
+               byte ar[] = getCloseMessageAsBytes(seqID);
+               // Send the message to the socket.
+               tmpOut2.write(ar);
+               tmpOut2.flush();
+
+               // Get the response message from the connection
+               String message = 
FaultTestUtils.retrieveResponseMessage(connection);
+    
+    // Check that the fault message isn't null
+    assertNotNull(message);
+    
+    // Check that the response contains the Sequence Terminated tag    
+    assertTrue(message.indexOf("wsrm:SequenceTerminated") > -1);
+    
+    // Check that the <wsrm:Identifier>seqID</wsrm:Identifier> matches the 
sequence ID specified
+    String faultID = message.substring(message.indexOf("<wsrm:Identifier>") + 
17, message.indexOf("</wsrm:Identifier>"));
+    assertEquals(seqID, faultID);
+    
+    // Disconnect at the end of the test
+    connection.disconnect();
+       }
+
+       /**
+        * Sends a AckRequest message to the RMD.
+        * The RMD should reject the message with a sequence terminated fault
+        * 
+        * @throws Exception
+        */
+       public void testSequenceTerminatedOnAckRequestFault() throws Exception {
+    // Open a connection to the endpoint
+               HttpURLConnection connection = 
+                       FaultTestUtils.getHttpURLConnection("http://127.0.0.1:"; 
+ serverPort + "/axis2/services/RMSampleService",
+                                       
Sandesha2Constants.SPEC_2006_08.Actions.ACTION_ACK_REQUEST);
+
+               StorageManager storageManager = 
+                       
SandeshaUtil.getSandeshaStorageManager(serverConfigContext, 
serverConfigContext.getAxisConfiguration());
+               
+               RMDBeanMgr rmdBeanMgr = storageManager.getRMDBeanMgr();
+               
+               String seqID = SandeshaUtil.getUUID();
+               
+               // Mockup an RMDBean
+               RMDBean rmdBean = new RMDBean();
+               rmdBean.setSequenceID(seqID);
+               rmdBean.setToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               
rmdBean.setAcksToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               
rmdBean.setReplyToEPR(AddressingConstants.Final.WSA_ANONYMOUS_URL);
+               rmdBean.setRMVersion(Sandesha2Constants.SPEC_VERSIONS.v1_1);
+               rmdBean.setServerCompletedMessages(new RangeString());
+               // Flag that the sequence is terminated.
+               rmdBean.setTerminated(true);
+               
+               // Create a transaction and insert the RMSBean
+               Transaction tran = storageManager.getTransaction();
+               
+               rmdBeanMgr.insert(rmdBean);
+               
+               tran.commit();
+
+               
+               OutputStream tmpOut2 = connection.getOutputStream();
+
+               byte ar[] = getAckRequestMessageAsBytes(seqID);
+               // Send the message to the socket.
+               tmpOut2.write(ar);
+               tmpOut2.flush();
+
+               // Get the response message from the connection
+               String message = 
FaultTestUtils.retrieveResponseMessage(connection);
+    
+    // Check that the fault message isn't null
+    assertNotNull(message);
+    
+    // Check that the response contains the Sequence Terminated tag    
+    assertTrue(message.indexOf("wsrm:SequenceTerminated") > -1);
+    
+    // Check that the <wsrm:Identifier>seqID</wsrm:Identifier> matches the 
sequence ID specified
+    String faultID = message.substring(message.indexOf("<wsrm:Identifier>") + 
17, message.indexOf("</wsrm:Identifier>"));
+    assertEquals(seqID, faultID);
+    
+    // Disconnect at the end of the test
+    connection.disconnect();
+       }
+
+       /**
+        * Get an application message as bytes
+        * 
+        * @return
+        */
+       private byte[] getAppMessageAsBytes(String uuid) throws Exception
+       {
+               SOAPFactory factory = new SOAP11Factory();
+               SOAPEnvelope dummyEnvelope = factory.getDefaultEnvelope();
+               
+               // Create a "new" application message
+               MessageContext messageContext = new MessageContext();
+               messageContext.setConfigurationContext(serverConfigContext);
+               
messageContext.setAxisService(serverConfigContext.getAxisConfiguration().getService("RMSampleService"));
                
+               messageContext.setEnvelope(dummyEnvelope);
+               
+               RMMsgContext applicationRMMsg = new 
RMMsgContext(messageContext);
+               
+               // Generate the Sequence field.
+               // -------------------------------
+               String rmNamespaceValue = 
SpecSpecificConstants.getRMNamespaceValue(Sandesha2Constants.SPEC_VERSIONS.v1_1);
+
+               Sequence sequence = new Sequence(rmNamespaceValue);
+               MessageNumber msgNumber = new MessageNumber(rmNamespaceValue);
+               msgNumber.setMessageNumber(1);
+               sequence.setMessageNumber(msgNumber);
+               Identifier id1 = new Identifier(rmNamespaceValue);
+               id1.setIndentifer(uuid);
+               sequence.setIdentifier(id1);
+               
applicationRMMsg.setMessagePart(Sandesha2Constants.MessageParts.SEQUENCE, 
sequence);
+               applicationRMMsg.addSOAPEnvelope();
+
+               // --------------------------------------------
+               // Finished generating Sequence part
+               
+               // Create an RMSBean so the create sequence message can be 
created
+               messageContext.setWSAAction(pingAction);
+
+               // Set the AxisOperation to be InOut
+               AxisOperation operation = 
messageContext.getAxisService().getOperation(new QName("RMInOutOperation"));
+               operation.setMessageReceiver(new RMMessageReceiver());
+               messageContext.setAxisOperation(operation);
+
+               ByteArrayOutputStream outputStream = new 
ByteArrayOutputStream();
+               
+               // Serialize the application message
+               
applicationRMMsg.getMessageContext().getEnvelope().serialize(outputStream);
+               
+               return outputStream.toByteArray();
+       }
+       
+       /**
+        * Get a close message as bytes
+        * 
+        * @return
+        */
+       private byte[] getCloseMessageAsBytes(String uuid) throws Exception
+       {
+               SOAPFactory factory = new SOAP11Factory();
+               SOAPEnvelope dummyEnvelope = factory.getDefaultEnvelope();
+               
+               // Create a "new" application message
+               MessageContext messageContext = new MessageContext();
+               messageContext.setConfigurationContext(serverConfigContext);
+               
messageContext.setAxisService(serverConfigContext.getAxisConfiguration().getService("RMSampleService"));
                
+               messageContext.setEnvelope(dummyEnvelope);
+               
+               RMMsgContext applicationRMMsg = new 
RMMsgContext(messageContext);
+               
+               // Generate the Close field.
+               // -------------------------------
+               String rmNamespaceValue = 
SpecSpecificConstants.getRMNamespaceValue(Sandesha2Constants.SPEC_VERSIONS.v1_1);
+
+               CloseSequence sequence = new CloseSequence(rmNamespaceValue);
+               Identifier id1 = new Identifier(rmNamespaceValue);
+               id1.setIndentifer(uuid);
+               sequence.setIdentifier(id1);
+               
applicationRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE, 
sequence);
+               applicationRMMsg.addSOAPEnvelope();
+
+               // --------------------------------------------
+               // Finished generating Close part
+               
+               // Create an RMSBean so the create sequence message can be 
created
+               messageContext.setWSAAction(pingAction);
+
+               // Set the AxisOperation to be InOut
+               AxisOperation operation = 
messageContext.getAxisService().getOperation(new QName("RMInOutOperation"));
+               operation.setMessageReceiver(new RMMessageReceiver());
+               messageContext.setAxisOperation(operation);
+
+               ByteArrayOutputStream outputStream = new 
ByteArrayOutputStream();
+               
+               // Serialize the application message
+               
applicationRMMsg.getMessageContext().getEnvelope().serialize(outputStream);
+               
+               return outputStream.toByteArray();
+       }
+
+       /**
+        * Get a close message as bytes
+        * 
+        * @return
+        */
+       private byte[] getAckRequestMessageAsBytes(String uuid) throws Exception
+       {
+               SOAPFactory factory = new SOAP11Factory();
+               SOAPEnvelope dummyEnvelope = factory.getDefaultEnvelope();
+               
+               // Create a "new" application message
+               MessageContext messageContext = new MessageContext();
+               messageContext.setConfigurationContext(serverConfigContext);
+               
messageContext.setAxisService(serverConfigContext.getAxisConfiguration().getService("RMSampleService"));
                
+               messageContext.setEnvelope(dummyEnvelope);
+               
+               RMMsgContext applicationRMMsg = new 
RMMsgContext(messageContext);
+               
+               // Generate the Close field.
+               // -------------------------------
+               String rmNamespaceValue = 
SpecSpecificConstants.getRMNamespaceValue(Sandesha2Constants.SPEC_VERSIONS.v1_1);
+
+               AckRequested sequence = new AckRequested(rmNamespaceValue);
+               Identifier id1 = new Identifier(rmNamespaceValue);
+               id1.setIndentifer(uuid);
+               sequence.setIdentifier(id1);
+               
applicationRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE, 
sequence);
+               applicationRMMsg.addSOAPEnvelope();
+
+               // --------------------------------------------
+               // Finished generating Close part
+               
+               // Create an RMSBean so the create sequence message can be 
created
+               messageContext.setWSAAction(pingAction);
+
+               // Set the AxisOperation to be InOut
+               AxisOperation operation = 
messageContext.getAxisService().getOperation(new QName("RMInOutOperation"));
+               operation.setMessageReceiver(new RMMessageReceiver());
+               messageContext.setAxisOperation(operation);
+
+               ByteArrayOutputStream outputStream = new 
ByteArrayOutputStream();
+               
+               // Serialize the application message
+               
applicationRMMsg.getMessageContext().getEnvelope().serialize(outputStream);
+               
+               return outputStream.toByteArray();
+       }
+
+}
+



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to