Author: chamikara
Date: Sat Oct 7 01:06:23 2006
New Revision: 453855
URL: http://svn.apache.org/viewvc?view=rev&rev=453855
Log:
Corrected the fault handling logic. Now instead of creating a
FaultMessageContext we do it the correct way. I.e. we set nevessary
properties (e.g. FaultCode) in the MessageContext and throw an dummy
SandeshaException. AxisEngine catches this and sends
the fault.
Added the code to actually terminate a sequence of a WSRM 1.1 sequence to the
TerminateSequenceResponseMsgProcessor.
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaException.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
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/CloseSequenceProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.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=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
Sat Oct 7 01:06:23 2006
@@ -162,6 +162,7 @@
String PENDING = "pending";
String USES_SEQUENCE_STR = "UsesSequenceSTR";
+
}
public interface WSA {
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaException.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaException.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaException.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaException.java
Sat Oct 7 01:06:23 2006
@@ -17,6 +17,9 @@
package org.apache.sandesha2;
+import javax.xml.namespace.QName;
+
+import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
/**
@@ -32,9 +35,11 @@
public SandeshaException (Exception e) {
super (e);
}
-
+
public SandeshaException (String message,Exception e) {
super (message,e);
}
+
+
}
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?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
Sat Oct 7 01:06:23 2006
@@ -132,12 +132,10 @@
if (msgProcessor != null)
msgProcessor.processInMessage(rmMsgCtx);
} catch (SandeshaException se) {
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.msgError, se.toString());
- log.debug(message, se);
- throw new AxisFault(message, se);
+ throw se;
}
- } catch (Exception e) {
+ } catch (AxisFault e) {
// message should not be sent in a exception situation.
msgCtx.pause();
@@ -152,8 +150,7 @@
}
}
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.inMsgError, e.toString());
- throw new AxisFault(message, e);
+ throw e;
} finally {
if (!withinTransaction && !rolebacked) {
try {
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
Sat Oct 7 01:06:23 2006
@@ -25,6 +25,7 @@
public static final String classLoaderNotFound="classLoaderNotFound";
public static final String
defaultPropertyBeanNotSet="defaultPropertyBeanNotSet";
+ public static final String propertyBeanNotSet="propertyBeanNotSet";
public static final String optionsObjectNotSet="optionsObjectNotSet";
public static final String serviceContextNotSet="serviceContextNotSet";
public static final String sequenceIdBeanNotSet="sequenceIdBeanNotSet";
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
Sat Oct 7 01:06:23 2006
@@ -42,6 +42,7 @@
classLoaderNotFound=Module class loader not found.
defaultPropertyBeanNotSet=Sandesha2 Internal Error: ''DefaultPropertyBean'' is
not set.
+propertyBeanNotSet=Sandesha2 Internal Error: ''PropertyBean'' is not set.
optionsObjectNotSet=Sandesha2 Internal Error: ''Options'' object is not set.
serviceContextNotSet=Sandesha2 Internal Error: ''ServiceContext'' is not set
sequenceIdBeanNotSet=Sandesha2 Internal Error: ''SequenceIdBean'' is not set
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?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
Sat Oct 7 01:06:23 2006
@@ -138,27 +138,13 @@
Iterator nackIterator = sequenceAck.getNackList().iterator();
FaultManager faultManager = new FaultManager();
- RMMsgContext faultMessageContext = faultManager
+ SandeshaException fault = faultManager
.checkForUnknownSequence(rmMsgCtx,
outSequenceId, storageManager);
- if(faultMessageContext == null) {
- faultMessageContext =
faultManager.checkForInvalidAcknowledgement(rmMsgCtx, storageManager);
+ if(fault == null) {
+ fault =
faultManager.checkForInvalidAcknowledgement(rmMsgCtx, 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()),
- e);
- }
-
- // TODO: Should a bad ack stop processing of the
message?
- msgCtx.pause();
- return;
+ if (fault != null) {
+ throw fault;
}
// updating the last activated time of the sequence.
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?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
Sat Oct 7 01:06:23 2006
@@ -134,20 +134,9 @@
}
FaultManager faultManager = new FaultManager();
- RMMsgContext faultMessageContext =
faultManager.checkForLastMsgNumberExceeded(rmMsgCtx, 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;
+ SandeshaException fault =
faultManager.checkForLastMsgNumberExceeded(rmMsgCtx, storageManager);
+ if (fault != null) {
+ throw fault;
}
// setting acked msg no range
@@ -158,20 +147,9 @@
throw new SandeshaException(message);
}
- faultMessageContext =
faultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager);
- if (faultMessageContext != null) {
- ConfigurationContext configurationContext =
msgCtx.getConfigurationContext();
- AxisEngine engine = new
AxisEngine(configurationContext);
-
- try {
-
engine.send(faultMessageContext.getMessageContext());
- } catch (AxisFault e) {
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFault,
e
- .toString()));
- }
-
- msgCtx.pause();
- return;
+ fault = faultManager.checkForUnknownSequence(rmMsgCtx,
sequenceId, storageManager);
+ if (fault != null) {
+ throw fault;
}
// setting mustUnderstand to false.
@@ -179,19 +157,9 @@
rmMsgCtx.addSOAPEnvelope();
// throwing a fault if the sequence is closed.
- faultMessageContext =
faultManager.checkForSequenceClosed(rmMsgCtx, sequenceId, 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()));
- }
-
- return;
+ fault = faultManager.checkForSequenceClosed(rmMsgCtx,
sequenceId, storageManager);
+ if (fault != null) {
+ throw fault;
}
// updating the last activated time of the sequence.
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=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
Sat Oct 7 01:06:23 2006
@@ -83,20 +83,9 @@
}
FaultManager faultManager = new FaultManager();
- RMMsgContext faultMessageContext =
faultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, 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()), e);
- }
-
- msgCtx.pause();
- return;
+ SandeshaException fault =
faultManager.checkForUnknownSequence(rmMsgCtx, sequenceId, storageManager);
+ if (fault != null) {
+ throw fault;
}
SequencePropertyBean sequenceClosedBean = new
SequencePropertyBean();
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
Sat Oct 7 01:06:23 2006
@@ -65,7 +65,7 @@
private static final Log log =
LogFactory.getLog(CreateSeqMsgProcessor.class);
- public void processInMessage(RMMsgContext createSeqRMMsg) throws
SandeshaException {
+ public void processInMessage(RMMsgContext createSeqRMMsg) throws
AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
CreateSeqMsgProcessor::processInMessage");
@@ -82,19 +82,9 @@
StorageManager storageManager =
SandeshaUtil.getSandeshaStorageManager(context, context.getAxisConfiguration());
FaultManager faultManager = new FaultManager();
- RMMsgContext faultMessageContext =
faultManager.checkForCreateSequenceRefused(createSeqMsg, storageManager);
- if (faultMessageContext != null) {
- ConfigurationContext configurationContext =
createSeqMsg.getConfigurationContext();
- AxisEngine engine = new
AxisEngine(configurationContext);
-
- try {
-
engine.sendFault(faultMessageContext.getMessageContext());
- } catch (AxisFault e) {
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFault),
e);
- }
-
- createSeqMsg.pause();
- return;
+ SandeshaException fault =
faultManager.checkForCreateSequenceRefused(createSeqMsg, storageManager);
+ if (fault != null) {
+ throw fault;
}
// If the inbound CreateSequence includes a
SecurityTokenReference then
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?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
Sat Oct 7 01:06:23 2006
@@ -112,21 +112,10 @@
}
FaultManager faultManager = new FaultManager();
- RMMsgContext faultMessageContext =
faultManager.checkForUnknownSequence(terminateSeqRMMsg, sequenceId,
+ SandeshaException fault =
faultManager.checkForUnknownSequence(terminateSeqRMMsg, sequenceId,
storageManager);
- if (faultMessageContext != null) {
- ConfigurationContext configurationContext =
terminateSeqMsg.getConfigurationContext();
- AxisEngine engine = new
AxisEngine(configurationContext);
-
- try {
-
engine.sendFault(faultMessageContext.getMessageContext());
- } catch (AxisFault e) {
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.couldNotSendFault,
e
- .toString()), e);
- }
-
- terminateSeqMsg.pause();
- return;
+ if (fault != null) {
+ throw fault;
}
@@ -299,7 +288,7 @@
terminateSeqResponseRMMsg.setFlow(MessageContext.OUT_FLOW);
terminateSeqResponseRMMsg.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,
"true");
- EndpointReference toEPR = terminateSeqMsg.getTo();
+ EndpointReference toEPR = terminateSeqResponseRMMsg.getTo();
outMessage.setResponseWritten(true);
@@ -369,6 +358,7 @@
throw new SandeshaException(messge);
}
+ outInAxisOp.setParent(msgContext.getAxisService());
// setting flows
//
outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation.getRemainingPhasesInFlow());
outInAxisOp.setRemainingPhasesInFlow(referenceInOutOperation
@@ -381,7 +371,9 @@
configurationContext.registerOperationContext(rmMsgCtx.getMessageId(),
opcontext);
-
+ msgContext.setOperationContext(opcontext);
+ msgContext.setAxisOperation(outInAxisOp);
+
if (terminated != null && "true".equals(terminated)) {
String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.terminateAddedPreviously);
log.debug(message);
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
Sat Oct 7 01:06:23 2006
@@ -33,6 +33,7 @@
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.util.TerminateManager;
+import org.apache.sandesha2.wsrm.TerminateSequence;
import org.apache.sandesha2.wsrm.TerminateSequenceResponse;
/**
@@ -56,6 +57,9 @@
terminateResRMMsg.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE);
String sequenceId = tsResponse.getIdentifier().getIdentifier();
+ String internalSequenceID =
SandeshaUtil.getSequenceProperty(sequenceId,
+
Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID, storageManager);
+
msgContext.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,internalSequenceID);
String sequencePropertyKey =
SandeshaUtil.getSequencePropertyKey(terminateResRMMsg);
// Check that the sender of this TerminateSequence holds the
correct token
@@ -67,10 +71,11 @@
secManager.checkProofOfPossession(token, body,
msgContext);
}
- //doing the termination
-// TODO - do termination correctly.
-// TerminateManager.terminateSendingSide(configContext,
sequencePropertyKey, msgCtx.isServerSide(),
-// storageManager);
+ ConfigurationContext configContext =
msgContext.getConfigurationContext();
+
+
+ TerminateManager.terminateSendingSide (configContext,
sequencePropertyKey,internalSequenceID, msgContext.isServerSide(),
+ storageManager);
// Stop this message travelling further through the Axis runtime
terminateResRMMsg.pause();
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=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
Sat Oct 7 01:06:23 2006
@@ -27,6 +27,13 @@
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPFaultCode;
+import org.apache.axiom.soap.SOAPFaultDetail;
+import org.apache.axiom.soap.SOAPFaultReason;
+import org.apache.axiom.soap.SOAPFaultSubCode;
+import org.apache.axiom.soap.SOAPFaultText;
+import org.apache.axiom.soap.SOAPFaultValue;
+import org.apache.axiom.soap.impl.dom.SOAPTextImpl;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
@@ -77,8 +84,8 @@
* @return
* @throws SandeshaException
*/
- public RMMsgContext checkForCreateSequenceRefused(MessageContext
createSequenceMessage,
- StorageManager storageManager) throws SandeshaException
{
+ public SandeshaException checkForCreateSequenceRefused(MessageContext
createSequenceMessage,
+ StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
FaultManager::checkForCreateSequenceRefused");
@@ -108,6 +115,10 @@
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.CREATE_SEQUENCE_REFUSED);
data.setReason(reason);
+
+ //Adding the create sequencePart as the detail.
+
data.setDetail(createSequenceMessage.getEnvelope().getBody().getFirstElement());
+
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::checkForCreateSequenceRefused, refused sequence");
return getFault(createSequenceRMMsg, data,
createSequenceRMMsg.getAddressingNamespaceValue(),
@@ -127,8 +138,8 @@
* @param msgCtx
* @return
*/
- public RMMsgContext checkForLastMsgNumberExceeded(RMMsgContext
applicationRMMessage, StorageManager storageManager)
- throws SandeshaException {
+ public SandeshaException checkForLastMsgNumberExceeded(RMMsgContext
applicationRMMessage, StorageManager storageManager)
+ throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
FaultManager::checkForLastMsgNumberExceeded");
Sequence sequence = (Sequence)
applicationRMMessage.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
@@ -162,6 +173,15 @@
faultData.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.LAST_MESSAGE_NO_EXCEEDED);
faultData.setReason(reason);
+
+ SOAPFactory factory =
SOAPAbstractFactory.getSOAPFactory(SOAPVersion);
+ String rmNamespace =
applicationRMMessage.getRMNamespaceValue();
+ OMElement identifierElement =
factory.createOMElement(Sandesha2Constants.WSRM_COMMON.IDENTIFIER,
+ rmNamespace,
Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+ identifierElement.setText(sequenceID);
+
+ faultData.setDetail(identifierElement);
+
if (log.isDebugEnabled())
log.debug("Exit:
FaultManager::checkForLastMsgNumberExceeded, lastMessageNumberExceeded");
return getFault(applicationRMMessage, faultData,
applicationRMMessage.getAddressingNamespaceValue(),
@@ -186,8 +206,8 @@
* @return
* @throws SandeshaException
*/
- public RMMsgContext checkForUnknownSequence(RMMsgContext
rmMessageContext, String sequenceID,
- StorageManager storageManager) throws SandeshaException
{
+ public SandeshaException checkForUnknownSequence(RMMsgContext
rmMessageContext, String sequenceID,
+ StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
FaultManager::checkForUnknownSequence, " + sequenceID);
@@ -242,12 +262,11 @@
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.UNKNOWN_SEQUENCE);
SOAPFactory factory =
SOAPAbstractFactory.getSOAPFactory(SOAPVersion);
- // Identifier identifier = new
Identifier(factory,rmNamespaceValue);
- // identifier.setIndentifer(sequenceID);
- // OMElement identifierOMElem =
identifier.getOMElement();
OMElement identifierElement =
factory.createOMElement(Sandesha2Constants.WSRM_COMMON.IDENTIFIER,
rmNamespaceValue,
Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
+ identifierElement.setText(sequenceID);
+
data.setDetail(identifierElement);
data.setReason(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.noSequenceEstablished,
sequenceID));
@@ -271,8 +290,8 @@
* @return
* @throws SandeshaException
*/
- public RMMsgContext checkForInvalidAcknowledgement(RMMsgContext
ackRMMessageContext, StorageManager storageManager)
- throws SandeshaException {
+ public SandeshaException checkForInvalidAcknowledgement(RMMsgContext
ackRMMessageContext, StorageManager storageManager)
+ throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
FaultManager::checkForInvalidAcknowledgement");
@@ -342,8 +361,8 @@
return null;
}
- public RMMsgContext checkForSequenceClosed(RMMsgContext
referenceRMMessage, String sequenceID,
- StorageManager storageManager) throws SandeshaException
{
+ public SandeshaException checkForSequenceClosed(RMMsgContext
referenceRMMessage, String sequenceID,
+ StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter: FaultManager::checkForSequenceClosed,
" + sequenceID);
@@ -371,6 +390,14 @@
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.SEQUENCE_CLOSED);
data.setReason(reason);
+
+ 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");
@@ -379,9 +406,54 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForSequenceClosed");
+
return null;
}
+
+
+ public SandeshaException getFault (RMMsgContext referenceRMMsgContext,
FaultData data, String addressingNamespaceURI,
+ StorageManager storageManager) throws AxisFault {
+
+ SOAPFactory factory = (SOAPFactory)
referenceRMMsgContext.getSOAPEnvelope().getOMFactory();
+
+ SOAPFaultCode faultCode = factory.createSOAPFaultCode();
+ SOAPFaultSubCode faultSubCode =
factory.createSOAPFaultSubCode(faultCode);
+
+ SOAPFaultValue faultColdValue =
factory.createSOAPFaultValue(faultCode);
+ SOAPFaultValue faultSubcodeValue =
factory.createSOAPFaultValue(faultSubCode);
+
+ faultColdValue.setText(data.getCode());
+ faultSubcodeValue.setText(data.getSubcode());
+
+ faultCode.setSubCode(faultSubCode);
+
+ SOAPFaultReason reason = factory.createSOAPFaultReason();
+ SOAPFaultText reasonText = factory.createSOAPFaultText();
+ reasonText.setText(data.getReason());
+ reason.addSOAPText(reasonText);
+
+ SOAPFaultDetail detail = factory.createSOAPFaultDetail();
+ detail.addDetailEntry(data.getDetail());
+ System.out.println("Detail:" + data.getDetail());
+
+ String SOAPNamespaceValue = factory.getSoapVersionURI();
+
+ if
(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(SOAPNamespaceValue)) {
+
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME,
faultCode);
+
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME,
reason);
+
referenceRMMsgContext.setProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME,
detail);
+ } else if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals
(SOAPNamespaceValue)) {
+
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_CODE_LOCAL_NAME,
faultCode);
+
referenceRMMsgContext.setProperty(SOAP11Constants.SOAP_FAULT_DETAIL_LOCAL_NAME,
detail);
+ } else {
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.unknownSoapVersion);
+ throw new SandeshaException (message);
+ }
+
+ SandeshaException fault = new SandeshaException("");
+ return fault;
+ }
/**
* Returns a RMMessageContext for the fault message. Data for
generating the
@@ -392,7 +464,7 @@
* @return
* @throws SandeshaException
*/
- public RMMsgContext getFault(RMMsgContext referenceRMMsgContext,
FaultData data, String addressingNamespaceURI,
+ public RMMsgContext getFaultMessage (RMMsgContext
referenceRMMsgContext, FaultData data, String addressingNamespaceURI,
StorageManager storageManager) throws SandeshaException
{
if (log.isDebugEnabled())
log.debug("Enter: FaultManager::getFault");
@@ -472,6 +544,10 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::getFault");
+
+ //setting the serverSide property
+ faultMsgContext.setServerSide(true);
+
return faultRMMsgCtx;
} catch (AxisFault e) {
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MessageRetransmissionAdjuster.java
Sat Oct 7 01:06:23 2006
@@ -17,6 +17,7 @@
package org.apache.sandesha2.util;
+import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.commons.logging.Log;
@@ -42,7 +43,7 @@
private static final Log log =
LogFactory.getLog(MessageRetransmissionAdjuster.class);
public static boolean adjustRetransmittion(RMMsgContext rmMsgCtx,
SenderBean retransmitterBean, ConfigurationContext configContext,
- StorageManager storageManager) throws SandeshaException
{
+ StorageManager storageManager) throws AxisFault {
if (log.isDebugEnabled())
log.debug("Enter:
MessageRetransmissionAdjuster::adjustRetransmittion");
@@ -50,6 +51,11 @@
String internalSequenceID =
retransmitterBean.getInternalSequenceID();
String sequenceID = retransmitterBean.getSequenceID();
+
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,internalSequenceID);
+
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID,
sequenceID);
+
+ String sequencePropertyKey =
SandeshaUtil.getSequencePropertyKey(rmMsgCtx);
+
// operation is the lowest level Sandesha2 could be attached.
SandeshaPolicyBean propertyBean =
SandeshaUtil.getPropertyBean(rmMsgCtx.getMessageContext().getAxisOperation());
@@ -72,7 +78,8 @@
// Only messages of outgoing sequences get
retransmitted. So named
// following method according to that.
- finalizeTimedOutSequence(internalSequenceID,
sequenceID, rmMsgCtx.getMessageContext(), storageManager);
+
+
finalizeTimedOutSequence(sequencePropertyKey,internalSequenceID, sequenceID,
rmMsgCtx.getMessageContext(), storageManager);
continueSending = false;
}
@@ -126,14 +133,14 @@
return interval;
}
- private static void finalizeTimedOutSequence(String internalSequenceID,
String sequenceID, MessageContext messageContext,
+ private static void finalizeTimedOutSequence(String sequencePropertyKey
,String internalSequenceID, String sequenceID, MessageContext messageContext,
StorageManager storageManager) throws SandeshaException
{
ConfigurationContext configurationContext =
messageContext.getConfigurationContext();
configurationContext.setProperty(Sandesha2Constants.WITHIN_TRANSACTION,
messageContext
.getProperty(Sandesha2Constants.WITHIN_TRANSACTION));
SequenceReport report =
SandeshaClient.getOutgoingSequenceReport(internalSequenceID,
configurationContext);
-
TerminateManager.timeOutSendingSideSequence(configurationContext,
internalSequenceID, false, storageManager);
+
TerminateManager.timeOutSendingSideSequence(configurationContext,sequencePropertyKey
,internalSequenceID, false, storageManager);
SandeshaListener listener = (SandeshaListener) messageContext
.getProperty(SandeshaClientConstants.SANDESHA_LISTENER);
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?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
Sat Oct 7 01:06:23 2006
@@ -25,6 +25,7 @@
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
@@ -347,6 +348,11 @@
OMElement str =
secMgr.createSecurityTokenReference(token, createSeqmsgContext);
createSequencePart.setSecurityTokenReference(str);
createSeqRMMsg.setProperty(Sandesha2Constants.SequenceProperties.SECURITY_TOKEN,
token);
+
+ //adding the UseSequenceSTR header
+ SOAPFactory createSeqFactory = (SOAPFactory)
createSeqRMMsg.getSOAPEnvelope().getOMFactory();
+ OMNamespace namespace =
createSeqFactory.createOMNamespace(Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM,
createSeqRMMsg.getRMNamespaceValue());
+
createSeqFactory.createSOAPHeaderBlock(Sandesha2Constants.WSRM_COMMON.USES_SEQUENCE_STR,
namespace);
}
createSeqRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ,
createSequencePart);
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=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
Sat Oct 7 01:06:23 2006
@@ -613,6 +613,8 @@
//TODO - move these to a property file.
newMessageContext.setProperty(RampartMessageData.KEY_RAMPART_POLICY,
referenceMessage
.getProperty(RampartMessageData.KEY_RAMPART_POLICY));
+
newMessageContext.setProperty(RampartMessageData.KEY_RAMPART_POLICY,
referenceMessage
+ .getProperty(RampartMessageData.KEY_RAMPART_POLICY));
newMessageContext.setProperty(WSHandlerConstants.RECV_RESULTS,
referenceMessage.getProperty(WSHandlerConstants.RECV_RESULTS));
@@ -904,7 +906,7 @@
Parameter parameter =
axisDescription.getParameter(Sandesha2Constants.SANDESHA_PROPERTY_BEAN);
if (parameter==null)
throw new SandeshaException
(SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.defaultPropertyBeanNotSet));
+
SandeshaMessageKeys.propertyBeanNotSet));
SandeshaPolicyBean propertyBean = (SandeshaPolicyBean)
parameter.getValue();
return propertyBean;
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
Sat Oct 7 01:06:23 2006
@@ -201,7 +201,7 @@
* @param sequenceID
* @throws SandeshaException
*/
- public static void terminateSendingSide(ConfigurationContext
configContext, String internalSequenceID,
+ public static void terminateSendingSide(ConfigurationContext
configContext, String sequencePropertyKey, String internalSequenceID,
boolean serverSide, StorageManager storageManager)
throws SandeshaException {
SequencePropertyBeanMgr seqPropMgr =
storageManager.getSequencePropertyBeanMgr();
@@ -210,7 +210,7 @@
Sandesha2Constants.SequenceProperties.SEQUENCE_TERMINATED,
Sandesha2Constants.VALUE_TRUE);
seqPropMgr.insert(seqTerminatedBean);
- cleanSendingSideData(configContext, internalSequenceID,
serverSide, storageManager);
+ cleanSendingSideData (configContext, sequencePropertyKey ,
internalSequenceID, serverSide, storageManager);
}
private static void doUpdatesIfNeeded(String sequenceID,
SequencePropertyBean propertyBean,
@@ -280,33 +280,33 @@
return deleatable;
}
- public static void timeOutSendingSideSequence(ConfigurationContext
context, String internalSequenceID,
+ public static void timeOutSendingSideSequence(ConfigurationContext
context, String sequencePropertyKey,String internalSequenceId,
boolean serverside, StorageManager storageManager)
throws SandeshaException {
SequencePropertyBeanMgr seqPropMgr =
storageManager.getSequencePropertyBeanMgr();
- SequencePropertyBean seqTerminatedBean = new
SequencePropertyBean(internalSequenceID,
+ SequencePropertyBean seqTerminatedBean = new
SequencePropertyBean(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.SEQUENCE_TIMED_OUT,
Sandesha2Constants.VALUE_TRUE);
seqPropMgr.insert(seqTerminatedBean);
- cleanSendingSideData(context, internalSequenceID, serverside,
storageManager);
+ cleanSendingSideData(context,
sequencePropertyKey,internalSequenceId, serverside, storageManager);
}
- private static void cleanSendingSideData(ConfigurationContext
configContext, String internalSequenceID,
+ private static void cleanSendingSideData(ConfigurationContext
configContext, String sequencePropertyKey,String internalSequenceId,
boolean serverSide, StorageManager storageManager)
throws SandeshaException {
SequencePropertyBeanMgr sequencePropertyBeanMgr =
storageManager.getSequencePropertyBeanMgr();
SenderBeanMgr retransmitterBeanMgr =
storageManager.getRetransmitterBeanMgr();
CreateSeqBeanMgr createSeqBeanMgr =
storageManager.getCreateSeqBeanMgr();
- String outSequenceID =
SandeshaUtil.getSequenceProperty(internalSequenceID,
+ String outSequenceID =
SandeshaUtil.getSequenceProperty(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID, storageManager);
if (!serverSide) {
boolean stopListnerForAsyncAcks = false;
- SequencePropertyBean acksToBean =
sequencePropertyBeanMgr.retrieve(internalSequenceID,
+ SequencePropertyBean acksToBean =
sequencePropertyBeanMgr.retrieve(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.ACKS_TO_EPR);
- String addressingNamespace =
SandeshaUtil.getSequenceProperty(internalSequenceID,
+ String addressingNamespace =
SandeshaUtil.getSequenceProperty(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,
storageManager);
String anonymousURI =
SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
@@ -319,7 +319,7 @@
}
// removing retransmitterMgr entries and corresponding message
contexts.
- Collection collection =
retransmitterBeanMgr.find(internalSequenceID);
+ Collection collection =
retransmitterBeanMgr.find(internalSequenceId);
Iterator iterator = collection.iterator();
while (iterator.hasNext()) {
SenderBean retransmitterBean = (SenderBean)
iterator.next();
@@ -331,7 +331,7 @@
// removing the createSeqMgrEntry
CreateSeqBean findCreateSequenceBean = new CreateSeqBean();
-
findCreateSequenceBean.setInternalSequenceID(internalSequenceID);
+
findCreateSequenceBean.setInternalSequenceID(internalSequenceId);
collection = createSeqBeanMgr.find(findCreateSequenceBean);
iterator = collection.iterator();
while (iterator.hasNext()) {
@@ -341,7 +341,7 @@
// removing sequence properties
SequencePropertyBean findSequencePropertyBean1 = new
SequencePropertyBean();
-
findSequencePropertyBean1.setSequencePropertyKey(internalSequenceID);
+
findSequencePropertyBean1.setSequencePropertyKey(sequencePropertyKey);
collection =
sequencePropertyBeanMgr.find(findSequencePropertyBean1);
iterator = collection.iterator();
while (iterator.hasNext()) {
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java?view=diff&rev=453855&r1=453854&r2=453855
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/SenderWorker.java
Sat Oct 7 01:06:23 2006
@@ -200,11 +200,8 @@
}
if ((rmMsgCtx.getMessageType() ==
Sandesha2Constants.MessageTypes.TERMINATE_SEQ)
- /*&&
-
(Sandesha2Constants.SPEC_2005_02.NS_URI.equals(rmMsgCtx.getRMNamespaceValue()))*/)
{
-
- //TODO - cant do below due to a bug. Since
CreateSequenceResponsMsgProcessor does not get called
- //currently. To fix this fix the 'todo' in the
processOutMessage method of the TerminateSeqMsgProcesser.
+ &&
+
(Sandesha2Constants.SPEC_2005_02.NS_URI.equals(rmMsgCtx.getRMNamespaceValue())))
{
//terminate message sent using the
SandeshaClient. Since the terminate message will simply get the
//InFlow of the reference message get called
which could be zero sized (OutOnly operations).
@@ -219,7 +216,8 @@
String internalSequenceID =
SandeshaUtil.getSequenceProperty(sequenceID,
Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID, storageManager);
-
TerminateManager.terminateSendingSide(configContext, internalSequenceID,
msgCtx.isServerSide(),
+ String sequencePropertyKey =
internalSequenceID; //property key of the sending side is the internal sequence
Id.
+
TerminateManager.terminateSendingSide(configContext, sequencePropertyKey
,internalSequenceID, msgCtx.isServerSide(),
storageManager);
}
@@ -228,10 +226,12 @@
if (transaction!=null && transaction.isActive())
transaction.rollback();
} catch (SandeshaException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
} catch (MissingResourceException e) {
- // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (AxisFault e) {
+ e.printStackTrace();
+ } catch (Exception e) {
e.printStackTrace();
} finally {
if (transaction!=null && transaction.isActive())
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]