You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ga...@apache.org on 2007/03/19 17:01:14 UTC
svn commit: r519979 - in /webservices/sandesha/trunk/java:
src/org/apache/sandesha2/msgprocessors/
src/org/apache/sandesha2/storage/inmemory/ src/org/apache/sandesha2/util/
src/org/apache/sandesha2/wsrm/ test/src/org/apache/sandesha2/scenarios/
Author: gatfora
Date: Mon Mar 19 09:01:12 2007
New Revision: 519979
URL: http://svn.apache.org/viewvc?view=rev&rev=519979
Log:
MustUnderstands that have been processed are lost after message serialized/deserialized
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Sequence.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/UsesSequenceSTR.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/scenarios/SerializableScenariosTest.java
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=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java Mon Mar 19 09:01:12 2007
@@ -140,11 +140,6 @@
log.debug("Exit: SequenceProcessor::processReliableMessage, Unknown sequence");
return InvocationResponse.ABORT;
}
-
-
- // setting mustUnderstand to false.
- sequence.setMustUnderstand(false);
- rmMsgCtx.addSOAPEnvelope();
// throwing a fault if the sequence is terminated
if (FaultManager.checkForSequenceTerminated(rmMsgCtx, sequenceId, bean)) {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java Mon Mar 19 09:01:12 2007
@@ -254,6 +254,9 @@
try {
if(useSerialization) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ // Remove the MustUnderstand parts for serialized message
+
+ SandeshaUtil.removeMustUnderstand(msgContext.getEnvelope());
ObjectOutputStream s = new ObjectOutputStream(stream);
s.writeObject(msgContext);
s.close();
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java Mon Mar 19 09:01:12 2007
@@ -854,6 +854,39 @@
}
+ /**
+ * Remove the MustUnderstand header blocks.
+ * @param envelope
+ */
+ public static SOAPEnvelope removeMustUnderstand(SOAPEnvelope envelope) {
+ if (log.isDebugEnabled())
+ log.debug("Enter: SandeshaUtil::removeMustUnderstand");
+ // you have to explicitely set the 'processed' attribute for header
+ // blocks, since it get lost in the above read from the stream.
+
+ SOAPHeader header = envelope.getHeader();
+ if (header != null) {
+ Iterator childrenOfOldEnv = header.getChildElements();
+ while (childrenOfOldEnv.hasNext()) {
+
+ SOAPHeaderBlock oldEnvHeaderBlock = (SOAPHeaderBlock) childrenOfOldEnv.next();
+
+ QName oldEnvHeaderBlockQName = oldEnvHeaderBlock.getQName();
+ if (oldEnvHeaderBlockQName != null) {
+ // If we've processed the part and it has a must understand, set it as processed
+ if (oldEnvHeaderBlock.isProcessed() && oldEnvHeaderBlock.getMustUnderstand()) {
+ // Remove the MustUnderstand part
+ oldEnvHeaderBlock.setMustUnderstand(false);
+ }
+ }
+ }
+ }
+
+ if (log.isDebugEnabled())
+ log.debug("Exit: SandeshaUtil::removeMustUnderstand");
+ return envelope;
+ }
+
public static EndpointReference cloneEPR (EndpointReference epr) {
EndpointReference newEPR = new EndpointReference (epr.getAddress());
Map referenceParams = epr.getAllReferenceParameters();
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java Mon Mar 19 09:01:12 2007
@@ -189,7 +189,7 @@
element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.UsesSequenceSTR);
if (element != null) {
usesSequenceSTR = new UsesSequenceSTR(factory, Sandesha2Constants.SPEC_2007_02.NS_URI);
- usesSequenceSTR.fromOMElement(envelope.getHeader());
+ usesSequenceSTR.fromOMElement(element);
}
element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.MessagePending);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Sequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Sequence.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Sequence.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Sequence.java Mon Mar 19 09:01:12 2007
@@ -42,7 +42,6 @@
private Identifier identifier;
private MessageNumber messageNumber;
private LastMessage lastMessage = null;
- private boolean mustUnderstand = true;
private String namespaceValue = null;
public Sequence(String namespaceValue) throws SandeshaException {
@@ -86,6 +85,9 @@
lastMessage.fromOMElement(sequencePart);
}
+ // Indicate that we have processed this part of the message.
+ ((SOAPHeaderBlock)sequencePart).setProcessed();
+
return this;
}
@@ -111,7 +113,8 @@
SOAPHeaderBlock sequenceHeaderBlock = soapHeader.addHeaderBlock(
Sandesha2Constants.WSRM_COMMON.SEQUENCE, rmNamespace);
- sequenceHeaderBlock.setMustUnderstand(isMustUnderstand());
+ // Always set the MustUnderstand to true for Sequence messages
+ sequenceHeaderBlock.setMustUnderstand(true);
identifier.toOMElement(sequenceHeaderBlock);
messageNumber.toOMElement(sequenceHeaderBlock);
if (lastMessage != null)
@@ -159,14 +162,6 @@
elem.detach();
toOMElement(header);
- }
-
- public boolean isMustUnderstand() {
- return mustUnderstand;
- }
-
- public void setMustUnderstand(boolean mustUnderstand) {
- this.mustUnderstand = mustUnderstand;
}
public boolean isNamespaceSupported (String namespaceName) {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java Mon Mar 19 09:01:12 2007
@@ -47,7 +47,6 @@
private ArrayList acknowledgementRangeList;
private ArrayList nackList;
private String namespaceValue = null;
- private boolean mustUnderstand = false;
private AckNone ackNone = null;
private AckFinal ackFinal = null;
@@ -110,6 +109,10 @@
}
}
+ // Indicate that we have processed this part of the message.
+ ((SOAPHeaderBlock)sequenceAckElement).setProcessed();
+
+
return this;
}
@@ -151,7 +154,8 @@
SandeshaMessageKeys.invalidIdentifier,
header.toString()));
- sequenceAcknowledgementHeaderBlock.setMustUnderstand(isMustUnderstand());
+ // SequenceACK messages should always have the MustUnderstand flag set to true
+ sequenceAcknowledgementHeaderBlock.setMustUnderstand(true);
identifier.toOMElement(sequenceAcknowledgementHeaderBlock);
Iterator ackRangeIt = acknowledgementRangeList.iterator();
@@ -251,14 +255,6 @@
}
toOMElement(header);
- }
-
- public boolean isMustUnderstand() {
- return mustUnderstand;
- }
-
- public void setMustUnderstand(boolean mustUnderstand) {
- this.mustUnderstand = mustUnderstand;
}
public boolean isNamespaceSupported (String namespaceName) {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/UsesSequenceSTR.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/UsesSequenceSTR.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/UsesSequenceSTR.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/UsesSequenceSTR.java Mon Mar 19 09:01:12 2007
@@ -61,6 +61,9 @@
if (factory==null)
factory = defaultFactory;
+ // Set that we have processed the must understand
+ ((SOAPHeaderBlock)header).setProcessed();
+
return this;
}
Modified: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/scenarios/SerializableScenariosTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/scenarios/SerializableScenariosTest.java?view=diff&rev=519979&r1=519978&r2=519979
==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/scenarios/SerializableScenariosTest.java (original)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/scenarios/SerializableScenariosTest.java Mon Mar 19 09:01:12 2007
@@ -18,6 +18,9 @@
import java.io.File;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axis2.client.Options;
+
public class SerializableScenariosTest extends RMScenariosTest {
public SerializableScenariosTest() {
@@ -29,4 +32,14 @@
this.axis2_xmlClient = repoPathClient + File.separator + "client_axis2.xml";
}
+ public void testMustUnderstandSerialization() throws Exception {
+
+ Options clientOptions = new Options();
+ clientOptions.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ clientOptions.setProperty(org.apache.axis2.addressing.AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS,
+ Boolean.TRUE.toString());
+
+ // Run the echo test
+ runEcho(clientOptions, true, true, false);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org