Author: chamikara
Date: Thu Aug 10 03:02:50 2006
New Revision: 430344
URL: http://svn.apache.org/viewvc?rev=430344&view=rev
Log:
Applied the patch from Matt on refactoring the SequenceAcknowledgement header
processing.
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/SequenceAcknowledgementTest.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?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
Thu Aug 10 03:02:50 2006
@@ -505,4 +505,8 @@
String SECURITY_MANAGER = "Sandesha2SecurityManager";
+ String [] SPEC_NS_URIS = {
+ SPEC_2005_02.NS_URI,
+ SPEC_2005_10.NS_URI
+ };
}
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
Thu Aug 10 03:02:50 2006
@@ -365,14 +365,6 @@
}
private void doGlobalProcessing(RMMsgContext rmMsgCtx) throws
SandeshaException {
- switch (rmMsgCtx.getMessageType()) {
- case Sandesha2Constants.MessageTypes.ACK:
-
- // //rmMsgCtx.addRelatesTo(null);
- // rmMsgCtx.getMessageContext().getre
- // //Removing the relatesTo part from ackMessageIf present. Some
- // Frameworks tend to send this.
- }
}
public QName getName() {
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
Thu Aug 10 03:02:50 2006
@@ -32,6 +32,7 @@
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+import org.apache.sandesha2.msgprocessors.AcknowledgementProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
import org.apache.sandesha2.storage.StorageManager;
@@ -77,6 +78,10 @@
return; // Reinjected messages are not processed by
Sandesha2 inflow
// handlers
}
+
+ // Process Ack headers in the message
+ AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor();
+ ackProcessor.processAckHeaders(msgCtx);
StorageManager storageManager =
SandeshaUtil.getSandeshaStorageManager(context, context.getAxisConfiguration());
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
Thu Aug 10 03:02:50 2006
@@ -21,6 +21,11 @@
import java.util.Collection;
import java.util.Iterator;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPHeader;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
@@ -41,6 +46,7 @@
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
import org.apache.sandesha2.util.AcknowledgementManager;
import org.apache.sandesha2.util.FaultManager;
+import org.apache.sandesha2.util.MsgInitializer;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.util.SequenceManager;
import org.apache.sandesha2.util.TerminateManager;
@@ -49,35 +55,53 @@
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
/**
- * Responsible for processing an incoming acknowledgement message.
+ * Responsible for processing acknowledgement headers on incoming messages.
*/
-public class AcknowledgementProcessor implements MsgProcessor {
+public class AcknowledgementProcessor {
private static final Log log =
LogFactory.getLog(AcknowledgementProcessor.class);
- public void processInMessage(RMMsgContext rmMsgCtx) throws
SandeshaException {
+ public void processAckHeaders(MessageContext message) throws
SandeshaException {
if (log.isDebugEnabled())
- log.debug("Enter:
AcknowledgementProcessor::processInMessage");
+ log.debug("Enter:
AcknowledgementProcessor::processAckHeaders");
- SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement)
rmMsgCtx
-
.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
- if (sequenceAck == null) {
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqAckPartIsNull);
- log.debug(message);
- throw new SandeshaException(message);
+ SOAPEnvelope envelope = message.getEnvelope();
+ SOAPHeader header = envelope.getHeader();
+
+ for(int i = 0; i < Sandesha2Constants.SPEC_NS_URIS.length; i++)
{
+ QName headerName = new
QName(Sandesha2Constants.SPEC_NS_URIS[i],
Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK);
+
+ Iterator acks = header.getChildrenWithName(headerName);
+ while(acks.hasNext()) {
+ OMElement ack = (OMElement) acks.next();
+ SequenceAcknowledgement seqAck = new
SequenceAcknowledgement(null, headerName.getNamespaceURI());
+ seqAck.fromOMElement(ack);
+ processAckHeader(message, seqAck);
+ }
}
- MessageContext msgCtx = rmMsgCtx.getMessageContext();
+ if (log.isDebugEnabled())
+ log.debug("Exit:
AcknowledgementProcessor::processAckHeaders");
+ }
+
+ private void processAckHeader(MessageContext msgCtx,
SequenceAcknowledgement sequenceAck)
+ throws SandeshaException
+ {
+ if (log.isDebugEnabled())
+ log.debug("Enter:
AcknowledgementProcessor::processAckHeader");
+
+ // TODO: Note that this RMMessageContext is not really any use
- but we need to create it
+ // so that it can be passed to the fault handling chain. It's
really no more than a
+ // container for the correct addressing and RM spec levels, so
we'd be better off passing
+ // them in directly. Unfortunately that change ripples through
the codebase...
+ RMMsgContext rmMsgCtx =
MsgInitializer.initializeMessage(msgCtx);
+
ConfigurationContext configCtx =
msgCtx.getConfigurationContext();
StorageManager storageManager =
SandeshaUtil.getSandeshaStorageManager(configCtx, configCtx
.getAxisConfiguration());
- // setting mustUnderstand to false.
- sequenceAck.setMustUnderstand(false);
- rmMsgCtx.addSOAPEnvelope();
-
SenderBeanMgr retransmitterMgr =
storageManager.getRetransmitterBeanMgr();
SequencePropertyBeanMgr seqPropMgr =
storageManager.getSequencePropertyBeanMgr();
@@ -102,23 +126,9 @@
FaultManager faultManager = new FaultManager();
RMMsgContext faultMessageContext = faultManager
.checkForUnknownSequence(rmMsgCtx,
outSequenceId, storageManager);
- if (faultMessageContext != null) {
-
- ConfigurationContext configurationContext =
msgCtx.getConfigurationContext();
- AxisEngine engine = new
AxisEngine(configurationContext);
-
- try {
-
engine.sendFault(faultMessageContext.getMessageContext());
- } catch (AxisFault e) {
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFault,
e
- .toString()));
- }
-
- msgCtx.pause();
- return;
+ if(faultMessageContext == null) {
+ faultMessageContext =
faultManager.checkForInvalidAcknowledgement(rmMsgCtx, storageManager);
}
-
- faultMessageContext =
faultManager.checkForInvalidAcknowledgement(rmMsgCtx, storageManager);
if (faultMessageContext != null) {
ConfigurationContext configurationContext =
msgCtx.getConfigurationContext();
@@ -127,10 +137,12 @@
try {
engine.sendFault(faultMessageContext.getMessageContext());
} catch (AxisFault e) {
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFault,
e
- .toString()));
+ throw new SandeshaException(
+
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFault,
e.toString()),
+ e);
}
+ // TODO: Should a bad ack stop processing of the
message?
msgCtx.pause();
return;
}
@@ -147,24 +159,11 @@
if (internalSequenceBean == null ||
internalSequenceBean.getValue() == null) {
String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.tempSeqIdNotSet);
log.debug(message);
-
throw new SandeshaException(message);
}
String internalSequenceId = (String)
internalSequenceBean.getValue();
- // Following happens in the SandeshaGlobal handler
-
rmMsgCtx.getMessageContext().setProperty(Sandesha2Constants.ACK_PROCSSED,
"true");
-
- // Removing relatesTo - Some v1_0 endpoints tend to set
relatesTo value
- // for ack messages.
- // Because of this dispatching may go wrong. So we set
relatesTo value
- // to null for ackMessages.
- // (this happens in the SandeshaGlobal handler). Do this only
if this is
- // a standalone ACK.
- // if (rmMsgCtx.getMessageType() ==
Sandesha2Constants.MessageTypes.ACK)
- // rmMsgCtx.setRelatesTo(null);
-
SenderBean input = new SenderBean();
input.setSend(true);
input.setReSend(true);
@@ -253,11 +252,12 @@
}
}
+ // TODO - surely this is only appropriate for standalone ack
messages?
// stopping the progress of the message further.
rmMsgCtx.pause();
if (log.isDebugEnabled())
- log.debug("Exit:
AcknowledgementProcessor::processInMessage");
+ log.debug("Exit:
AcknowledgementProcessor::processAckHeader");
}
private SenderBean getRetransmitterEntry(Collection collection, long
msgNo) {
@@ -286,11 +286,4 @@
return noOfMsgs;
}
- public void processOutMessage(RMMsgContext rmMsgCtx) throws
SandeshaException {
- if (log.isDebugEnabled()) {
- log.debug("Enter:
AcknowledgementProcessor::processOutMessage");
- log.debug("Exit:
AcknowledgementProcessor::processOutMessage");
- }
-
- }
}
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
Thu Aug 10 03:02:50 2006
@@ -90,23 +90,6 @@
if (log.isDebugEnabled())
log.debug("Enter:
ApplicationMsgProcessor::processInMessage");
- // Processing for ack if any
- SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement)
rmMsgCtx
-
.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
- if (sequenceAck != null) {
- AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor();
-
- // setting message type temporarily as ack message. so
that the ack
- // processor would not be confused
- int messageType = rmMsgCtx.getMessageType();
-
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK);
-
- ackProcessor.processInMessage(rmMsgCtx);
-
- // resetting the correct message type.
- rmMsgCtx.setMessageType(messageType);
- }
-
// TODO process embedded ack requests
AckRequested ackRequested = (AckRequested)
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);
if (ackRequested != null) {
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
Thu Aug 10 03:02:50 2006
@@ -77,24 +77,6 @@
StorageManager storageManager =
SandeshaUtil.getSandeshaStorageManager(configCtx, configCtx
.getAxisConfiguration());
- // Processing for ack if available
-
- SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement)
createSeqResponseRMMsgCtx
-
.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
- if (sequenceAck != null) {
- AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor();
-
- // setting message type temporarily as ack message. so
that the ack
- // processor would not be confused
- int messageType =
createSeqResponseRMMsgCtx.getMessageType();
-
createSeqResponseRMMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK);
-
-
ackProcessor.processInMessage(createSeqResponseRMMsgCtx);
-
- // resetting the correct message type.
- createSeqResponseRMMsgCtx.setMessageType(messageType);
- }
-
// Processing the create sequence response.
CreateSequenceResponse createSeqResponsePart =
(CreateSequenceResponse) createSeqResponseRMMsgCtx
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
Thu Aug 10 03:02:50 2006
@@ -41,8 +41,6 @@
return new ApplicationMsgProcessor();
case (Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE):
return new CreateSeqResponseMsgProcessor();
- case (Sandesha2Constants.MessageTypes.ACK):
- return new AcknowledgementProcessor();
case (Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE):
return new CloseSequenceProcessor();
case (Sandesha2Constants.MessageTypes.ACK_REQUEST):
@@ -51,4 +49,4 @@
return null;
}
}
-}
\ No newline at end of file
+}
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
Thu Aug 10 03:02:50 2006
@@ -76,22 +76,6 @@
log.debug("Enter:
TerminateSeqMsgProcessor::processInMessage");
MessageContext terminateSeqMsg =
terminateSeqRMMsg.getMessageContext();
- // Processing for ack if any
- SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement)
terminateSeqRMMsg
-
.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
- if (sequenceAck != null) {
- AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor();
-
- // setting message type temporarily as ack message. so
that the ack
- // processor would not be confused
- int messageType = terminateSeqRMMsg.getMessageType();
-
terminateSeqRMMsg.setMessageType(Sandesha2Constants.MessageTypes.ACK);
-
- ackProcessor.processInMessage(terminateSeqRMMsg);
-
- // resetting the correct message type.
- terminateSeqRMMsg.setMessageType(messageType);
- }
// Processing the terminate message
// TODO Add terminate sequence message logic.
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
Thu Aug 10 03:02:50 2006
@@ -22,8 +22,12 @@
import java.util.HashMap;
import java.util.Iterator;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.AddressingConstants;
@@ -71,12 +75,9 @@
ConfigurationContext configurationContext =
rmMessageContext.getConfigurationContext();
SenderBeanMgr retransmitterBeanMgr =
storageManager.getRetransmitterBeanMgr();
- SequencePropertyBeanMgr sequencePropertyBeanMgr =
storageManager.getSequencePropertyBeanMgr();
SenderBean findBean = new SenderBean();
- String sequnceID =
SandeshaUtil.getSequenceIDFromRMMessage(rmMessageContext);
-
findBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);
findBean.setSend(true);
findBean.setReSend(false);
@@ -95,10 +96,6 @@
// //Piggybacking will happen only if the end
of ack interval
// (timeToSend) is not reached.
- boolean disablePiggybacking = false;
- if (disablePiggybacking)
- continue piggybackLoop;
-
MessageContext ackMsgContext =
storageManager.retrieveMessageContext(ackBean.getMessageContextRefKey(),
configurationContext);
@@ -108,32 +105,29 @@
continue piggybackLoop;
}
- // String ackSequenceID =
ackBean.getSequenceID();
-
- // //sequenceID has to match for piggybacking
- // if (!ackSequenceID.equals(sequnceID)) {
- // continue piggybackLoop;
- // }
-
// deleting the ack entry.
retransmitterBeanMgr.delete(ackBean.getMessageID());
- // Adding the ack to the application message
- RMMsgContext ackRMMsgContext =
MsgInitializer.initializeMessage(ackMsgContext);
- if (ackRMMsgContext.getMessageType() !=
Sandesha2Constants.MessageTypes.ACK) {
+ // Adding the ack(s) to the application message
+ boolean acks = false;
+ SOAPHeader appMsgHeaders =
rmMessageContext.getMessageContext().getEnvelope().getHeader();
+ SOAPHeader headers =
ackMsgContext.getEnvelope().getHeader();
+ if(headers != null) {
+ for(int i = 0; i <
Sandesha2Constants.SPEC_NS_URIS.length; i++) {
+ QName name = new
QName(Sandesha2Constants.SPEC_NS_URIS[i],
Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK);
+ Iterator iter =
headers.getChildrenWithName(name);
+ while(iter.hasNext()) {
+
appMsgHeaders.addChild((OMElement) iter.next());
+ acks = true;
+ }
+ }
+ }
+ if (!acks) {
String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.invalidAckMessageEntry,
-
ackRMMsgContext.toString());
+
ackMsgContext.getEnvelope().toString());
log.debug(message);
throw new SandeshaException(message);
}
-
- SequenceAcknowledgement sequenceAcknowledgement
= (SequenceAcknowledgement) ackRMMsgContext
-
.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
-
rmMessageContext.setMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT,
- sequenceAcknowledgement);
-
- rmMessageContext.addSOAPEnvelope();
- break piggybackLoop;
}
}
}
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?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
Thu Aug 10 03:02:50 2006
@@ -196,38 +196,31 @@
CreateSeqBeanMgr createSeqMgr =
storageManager.getCreateSeqBeanMgr();
int type = rmMessageContext.getMessageType();
- boolean validSequence = true;
+ boolean validSequence = false;
- if (type == Sandesha2Constants.MessageTypes.ACK || type ==
Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE
- || type ==
Sandesha2Constants.MessageTypes.TERMINATE_SEQ_RESPONSE
- || type ==
Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE_RESPONSE) {
-
- CreateSeqBean createSeqFindBean = new CreateSeqBean();
- createSeqFindBean.setSequenceID(sequenceID);
-
- Collection coll = createSeqMgr.find(createSeqFindBean);
- if (coll.size() == 0) {
- validSequence = false;
- }
+ // Look for an outbound sequence
+ CreateSeqBean createSeqFindBean = new CreateSeqBean();
+ createSeqFindBean.setSequenceID(sequenceID);
+
+ Collection coll = createSeqMgr.find(createSeqFindBean);
+ if (!coll.isEmpty()) {
+ validSequence = true;
} else {
+ // Look for an inbound sequence
NextMsgBeanMgr mgr = storageManager.getNextMsgBeanMgr();
- Collection coll = mgr.retrieveAll();
+ coll = mgr.retrieveAll();
Iterator it = coll.iterator();
- boolean contains = false;
while (it.hasNext()) {
NextMsgBean nextMsgBean = (NextMsgBean)
it.next();
String tempId = nextMsgBean.getSequenceID();
if (tempId.equals(sequenceID)) {
- contains = true;
+ validSequence = true;
break;
}
}
-
- if (!contains)
- validSequence = false;
}
String rmNamespaceValue =
rmMessageContext.getRMNamespaceValue();
@@ -470,7 +463,7 @@
return faultRMMsgCtx;
} catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
+ throw new SandeshaException(e.getMessage(), e);
}
}
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
Thu Aug 10 03:02:50 2006
@@ -679,39 +679,4 @@
applicationMsg.setMessageId(SandeshaUtil.getUUID());
}
- /**
- * Create a new Acknowledgement message.
- *
- * @param applicationRMMsgCtx
- * @return
- * @throws SandeshaException
- */
- public static RMMsgContext createAckMessage(RMMsgContext
relatedRMMessage, String sequenceID,
- String rmNamespaceValue, StorageManager storageManager)
throws SandeshaException {
-
- try {
- MessageContext applicationMsgCtx =
relatedRMMessage.getMessageContext();
-
- AxisOperation ackOperation = AxisOperationFactory
-
.getAxisOperation(WSDL20_2004Constants.MEP_CONSTANT_OUT_ONLY);
-
- MessageContext ackMsgCtx =
SandeshaUtil.createNewRelatedMessageContext(relatedRMMessage, ackOperation);
-
- RMMsgContext ackRMMsgCtx =
MsgInitializer.initializeMessage(ackMsgCtx);
-
- initializeCreation(applicationMsgCtx, ackMsgCtx);
-
- addAckMessage(ackRMMsgCtx, sequenceID, storageManager);
-
- ackMsgCtx.setProperty(MessageContext.TRANSPORT_IN,
null);
-
- finalizeCreation(applicationMsgCtx, ackMsgCtx);
-
- ackRMMsgCtx.getMessageContext().setServerSide(true);
- return ackRMMsgCtx;
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
- }
-
}
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/Sender.java
Thu Aug 10 03:02:50 2006
@@ -224,14 +224,14 @@
updateMessage(msgCtx);
- int messageType = rmMsgCtx.getMessageType();
+ int messageType = senderBean.getMessageType();
if (messageType ==
Sandesha2Constants.MessageTypes.APPLICATION) {
Sequence sequence = (Sequence)
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
String sequenceID =
sequence.getIdentifier().getIdentifier();
}
// checking weather this message can carry
piggybacked acks
- if (isAckPiggybackableMsgType(messageType) &&
!isAckAlreadyPiggybacked(rmMsgCtx)) {
+ if (isAckPiggybackableMsgType(messageType)) {
// piggybacking if an ack if available
for the same
// sequence.
// TODO do piggybacking based on wsa:To
@@ -456,13 +456,6 @@
if (log.isDebugEnabled())
log.debug("Exit: Sender::isAckPiggybackableMsgType, " +
piggybackable);
return piggybackable;
- }
-
- private boolean isAckAlreadyPiggybacked(RMMsgContext rmMessageContext) {
- if
(rmMessageContext.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT)
!= null)
- return true;
-
- return false;
}
private boolean isFaultEnvelope(SOAPEnvelope envelope) throws
SandeshaException {
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?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
Thu Aug 10 03:02:50 2006
@@ -91,7 +91,7 @@
if (addressingNamespaceValue==null) {
String message = SandeshaMessageHelper.getMessage(
- SandeshaMessageKeys.unknownWSAVersion);
+ SandeshaMessageKeys.unknownWSAVersion,
envelope.toString());
throw new SandeshaException (message);
// return;
}
@@ -104,15 +104,6 @@
if (sequenceElement != null) {
sequence = new Sequence(factory,rmNamespaceValue);
sequence.fromOMElement(envelope.getHeader());
- }
-
- OMElement sequenceAckElement = envelope.getHeader()
- .getFirstChildWithName(
- new QName(rmNamespaceValue,
-
Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK));
- if (sequenceAckElement != null) {
- sequenceAcknowledgement = new
SequenceAcknowledgement(factory,rmNamespaceValue);
-
sequenceAcknowledgement.fromOMElement(envelope.getHeader());
}
OMElement createSeqElement =
envelope.getBody().getFirstChildWithName(
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?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
Thu Aug 10 03:02:50 2006
@@ -71,14 +71,7 @@
public Object fromOMElement(OMElement element) throws
OMException,SandeshaException {
- if (element == null || !(element instanceof SOAPHeader))
- throw new OMException(SandeshaMessageHelper.getMessage(
- SandeshaMessageKeys.seqAckNonHeader));
-
- SOAPHeader header = (SOAPHeader) element;
- OMElement sequenceAckPart = header.getFirstChildWithName(new
QName(
- namespaceValue,
Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK));
-
+ OMElement sequenceAckPart = element;
if (sequenceAckPart == null)
throw new OMException(SandeshaMessageHelper.getMessage(
SandeshaMessageKeys.seqAckPartIsNull));
Modified:
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/SequenceAcknowledgementTest.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/SequenceAcknowledgementTest.java?rev=430344&r1=430343&r2=430344&view=diff
==============================================================================
---
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/SequenceAcknowledgementTest.java
(original)
+++
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/SequenceAcknowledgementTest.java
Thu Aug 10 03:02:50 2006
@@ -37,9 +37,10 @@
}
public void testFromOMElement() throws SandeshaException {
+ QName name = new QName(rmNamespace, "SequenceAcknowledgement");
SequenceAcknowledgement sequenceAck = new
SequenceAcknowledgement(factory,rmNamespace);
SOAPEnvelope env = getSOAPEnvelope("", "SequenceAcknowledgement.xml");
- sequenceAck.fromOMElement(env.getHeader());
+ sequenceAck.fromOMElement(env.getHeader().getFirstChildWithName(name));
Identifier identifier = sequenceAck.getIdentifier();
assertEquals("uuid:897ee740-1624-11da-a28e-b3b9c4e71445",
identifier.getIdentifier());
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]