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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]