Author: mlovett
Date: Mon Dec 4 02:33:32 2006
New Revision: 482127
URL: http://svn.apache.org/viewvc?view=rev&rev=482127
Log:
Andy's patch to store protocol messages for later processing when the sequence
is not yet running, see SANDESHA2-58
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.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/CreateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
Mon Dec 4 02:33:32 2006
@@ -428,13 +428,12 @@
String rmNamespaceValue =
SpecSpecificConstants.getRMNamespaceValue(rmSpecVersion);
+ String oldAction = options.getAction();
+
SOAPEnvelope terminateEnvelope =
configureTerminateSequence(options, serviceContext.getConfigurationContext());
OMElement terminateBody =
terminateEnvelope.getBody().getFirstChildWithName(
new QName(rmNamespaceValue,
Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE));
- String oldAction = options.getAction();
-
options.setAction(SpecSpecificConstants.getTerminateSequenceAction(rmSpecVersion));
-
try {
//to inform the Sandesha2 out handler.
serviceClient.fireAndForget (terminateBody);
@@ -584,6 +583,15 @@
long timeNow = System.currentTimeMillis();
if (timeNow > (startTime + maxWaitingTime))
done = true;
+ else
+ {
+ // Wait for half a second to stop 100
CPU
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ // Ignore the exception
+ }
+ }
}
}
}
@@ -1131,15 +1139,6 @@
internalSequenceID =
SandeshaUtil.getInternalSequenceID(to, sequenceKey);
}
- SequenceReport sequenceReport =
SandeshaClient.getOutgoingSequenceReport(internalSequenceID,
- configurationContext);
- if (sequenceReport == null)
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.cannotGenerateReport, internalSequenceID));
- if (sequenceReport.getSequenceStatus() !=
SequenceReport.SEQUENCE_STATUS_ESTABLISHED)
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.noSequenceEstablished, internalSequenceID));
-
StorageManager storageManager =
SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
// Get a transaction to obtain sequence information
@@ -1152,23 +1151,18 @@
SequencePropertyBeanMgr seqPropMgr =
storageManager.getSequencePropertyBeanMgr();
sequenceIDBean = seqPropMgr.retrieve(internalSequenceID,
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID);
- if (sequenceIDBean == null)
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.sequenceIdBeanNotSet));
-
}
finally
{
transaction.commit();
}
- String sequenceID = sequenceIDBean.getValue();
-
+ String sequenceID = null;
+ if (sequenceIDBean != null)
+ sequenceID = sequenceIDBean.getValue();
+ else
+ sequenceID = Sandesha2Constants.TEMP_SEQUENCE_ID;
- if (sequenceID == null)
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.cannotFindSequenceID, sequenceIDBean.toString()));
-
String rmSpecVersion = (String)
options.getProperty(SandeshaClientConstants.RM_SPEC_VERSION);
if (rmSpecVersion == null)
rmSpecVersion =
SpecSpecificConstants.getDefaultSpecVersion();
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=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
Mon Dec 4 02:33:32 2006
@@ -23,6 +23,7 @@
public static final String msgError="msgError";
public static final String sendMsgError="sendMsgError";
public static final String
cannotSendMsgAsSequenceClosed="cannotSendMsgAsSequenceClosed";
+ public static final String
cannotSendMsgAsSequenceTerminated="cannotSendMsgAsSequenceTerminated";
public static final String noValidSyncResponse="noValidSyncResponse";
public static final String generalError="generalError";
public static final String classLoaderNotFound="classLoaderNotFound";
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=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
Mon Dec 4 02:33:32 2006
@@ -40,6 +40,7 @@
msgError=Sandesha2 got an exception when processing a message: {0}
sendMsgError=Sandesha2 got an exception when sending a message: {0}
cannotSendMsgAsSequenceClosed=Sandesha2 could not send the message on sequence
{0} as the sequence has been closed.
+cannotSendMsgAsSequenceTerminated=Sandesha2 could not send the message on
sequence {0} as the sequence has been terminated.
noValidSyncResponse=Sandesha2 sender thread has not received a valid
synchronous response...
generalError=Sandesha2 Internal Error: sandesha2 encountered the following
exception {0}
classLoaderNotFound=Module class loader not found.
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=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
Mon Dec 4 02:33:32 2006
@@ -256,7 +256,7 @@
// CreateSeqBeanMgr createSeqBeanMgr =
storageManager.getCreateSeqBeanMgr();
// CreateSeqBean createSeqBean =
createSeqBeanMgr.retrieve(msgId);
//
-
TerminateManager.addTerminateSequenceMessage(rmMsgCtx, outSequenceId,
sequencePropertyKey,
+
TerminateManager.addTerminateSequenceMessage(rmMsgCtx, internalSequenceId,
outSequenceId, sequencePropertyKey,
storageManager);
}
}
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=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
Mon Dec 4 02:33:32 2006
@@ -226,6 +226,12 @@
throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotSendMsgAsSequenceClosed,
internalSequenceId));
}
+ //see if the sequence is terminated
+ SequencePropertyBean sequenceTerminated =
seqPropMgr.retrieve(internalSequenceId,
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
+ if(sequenceTerminated!=null){
+ throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotSendMsgAsSequenceTerminated,
internalSequenceId));
+ }
+
// saving the used message number
if (!dummyMessage)
setNextMsgNo(configContext, sequencePropertyKey,
messageNumber, storageManager);
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?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
Mon Dec 4 02:33:32 2006
@@ -53,6 +53,7 @@
import org.apache.sandesha2.wsrm.CreateSequenceResponse;
import org.apache.sandesha2.wsrm.Identifier;
import org.apache.sandesha2.wsrm.Sequence;
+import org.apache.sandesha2.wsrm.TerminateSequence;
/**
* Responsible for processing an incoming Create Sequence Response message.
@@ -168,7 +169,7 @@
throw new SandeshaException(message);
}
- String offeredSequenceId = (String)
offeredSequenceBean.getValue();
+ String offeredSequenceId =
offeredSequenceBean.getValue();
EndpointReference acksToEPR =
accept.getAcksTo().getEPR();
SequencePropertyBean acksToBean = new
SequencePropertyBean();
@@ -271,7 +272,6 @@
SenderBean target = new SenderBean();
target.setInternalSequenceID(internalSequenceId);
target.setSend(false);
- target.setReSend(true);
Iterator iterator = retransmitterMgr.find(target).iterator();
while (iterator.hasNext()) {
@@ -294,18 +294,35 @@
RMMsgContext applicaionRMMsg =
MsgInitializer.initializeMessage(applicationMsg);
- Sequence sequencePart = (Sequence)
applicaionRMMsg.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
- if (sequencePart == null) {
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqPartIsNull);
- log.debug(message);
- throw new SandeshaException(message);
+ if (tempBean.getMessageType() ==
Sandesha2Constants.MessageTypes.APPLICATION) {
+
+ Sequence sequencePart = (Sequence)
applicaionRMMsg.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+ if (sequencePart == null) {
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqPartIsNull);
+ log.debug(message);
+ throw new SandeshaException(message);
+ }
+
+ Identifier identifier = new
Identifier(assumedRMNamespace);
+ identifier.setIndentifer(newOutSequenceId);
+
+ sequencePart.setIdentifier(identifier);
+
+ } else if (tempBean.getMessageType() ==
Sandesha2Constants.MessageTypes.TERMINATE_SEQ) {
+
+ TerminateSequence sequencePart =
(TerminateSequence)
applicaionRMMsg.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
+ if (sequencePart == null) {
+ String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqPartIsNull);
+ log.debug(message);
+ throw new SandeshaException(message);
+ }
+
+ Identifier identifier = new
Identifier(assumedRMNamespace);
+ identifier.setIndentifer(newOutSequenceId);
+
+ sequencePart.setIdentifier(identifier);
}
- Identifier identifier = new
Identifier(assumedRMNamespace);
- identifier.setIndentifer(newOutSequenceId);
-
- sequencePart.setIdentifier(identifier);
-
try {
applicaionRMMsg.addSOAPEnvelope();
} catch (AxisFault e) {
@@ -314,6 +331,7 @@
// asking to send the application msssage
tempBean.setSend(true);
+ tempBean.setSequenceID(newOutSequenceId);
retransmitterMgr.update(tempBean);
// updating the message. this will correct the SOAP
envelope string.
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=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
Mon Dec 4 02:33:32 2006
@@ -21,11 +21,11 @@
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.MessageContextConstants;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.context.OperationContextFactory;
import org.apache.axis2.description.AxisOperation;
@@ -45,17 +45,16 @@
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.SenderBean;
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.RMMsgCreator;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.util.SequenceManager;
import org.apache.sandesha2.util.SpecSpecificConstants;
import org.apache.sandesha2.util.TerminateManager;
-import org.apache.sandesha2.wsrm.Sequence;
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
import org.apache.sandesha2.wsrm.TerminateSequence;
@@ -234,16 +233,21 @@
// If all the out message have been acked, add the
outgoing
// terminate seq msg.
- String outgoingSqunceID =
SandeshaUtil.getSequenceProperty(responseSideSequencePropertyKey,
+ String outgoingSequnceID =
SandeshaUtil.getSequenceProperty(responseSideSequencePropertyKey,
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID, storageManager);
if (addResponseSideTerminate && highestOutMsgNo > 0 &&
responseSideSequencePropertyKey != null
- && outgoingSqunceID != null) {
+ && outgoingSequnceID != null) {
boolean allAcked =
SandeshaUtil.isAllMsgsAckedUpto(highestOutMsgNo,
responseSideSequencePropertyKey,
storageManager);
if (allAcked)
-
TerminateManager.addTerminateSequenceMessage(terminateRMMsg, outgoingSqunceID,
+ {
+ String internalSequenceID =
SandeshaUtil.getSequenceProperty(outgoingSequnceID,
+
Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID, storageManager);
+
+
TerminateManager.addTerminateSequenceMessage(terminateRMMsg,
internalSequenceID, outgoingSequnceID,
responseSideSequencePropertyKey, storageManager);
+ }
}
} catch (AxisFault e) {
throw new SandeshaException(e);
@@ -319,18 +323,37 @@
String toAddress = rmMsgCtx.getTo().getAddress();
String sequenceKey = (String)
options.getProperty(SandeshaClientConstants.SEQUENCE_KEY);
- String internalSeqenceID =
SandeshaUtil.getInternalSequenceID(toAddress, sequenceKey);
-
- String outSequenceID =
SandeshaUtil.getSequenceProperty(internalSeqenceID,
-
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID, storageManager);
- if (outSequenceID == null)
- throw new
SandeshaException(SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.couldNotSendTerminateSeqNotFound, internalSeqenceID));
+ String internalSequenceID =
SandeshaUtil.getInternalSequenceID(toAddress, sequenceKey);
- // / Transaction addTerminateSeqTransaction =
- // storageManager.getTransaction();
+ // Does the sequence exist ?
+ boolean sequenceExists = false;
+ String outSequenceID = null;
+
+ // Get the Create sequence bean with the matching internal
sequenceid
+ CreateSeqBean createSeqFindBean = new CreateSeqBean();
+ createSeqFindBean.setInternalSequenceID(internalSequenceID);
- String terminated =
SandeshaUtil.getSequenceProperty(outSequenceID,
+ CreateSeqBean createSeqBean =
storageManager.getCreateSeqBeanMgr().findUnique(createSeqFindBean);
+
+ if (createSeqBean == null)
+ {
+ if (log.isDebugEnabled())
+ log.debug("Exit:
TerminateSeqMsgProcessor::processOutMessage Sequence doesn't exist");
+
+ throw new
SandeshaException(SandeshaMessageHelper.getMessage(
+
SandeshaMessageKeys.couldNotSendTerminateSeqNotFound, internalSequenceID));
+ }
+
+ if (createSeqBean.getSequenceID() != null)
+ {
+ sequenceExists = true;
+ outSequenceID = createSeqBean.getSequenceID();
+ }
+ else
+ outSequenceID = Sandesha2Constants.TEMP_SEQUENCE_ID;
+
+ // Check if the sequence is already terminated (stored on the
internal sequenceid)
+ String terminated =
SandeshaUtil.getSequenceProperty(internalSequenceID,
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED, storageManager);
if (terminated != null && "true".equals(terminated)) {
@@ -363,23 +386,22 @@
rmMsgCtx.setTo(new EndpointReference(toAddress));
- String rmVersion = SandeshaUtil.getRMVersion(internalSeqenceID,
storageManager);
+ String rmVersion =
SandeshaUtil.getRMVersion(internalSequenceID, storageManager);
if (rmVersion == null)
throw new
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotDecideRMVersion));
rmMsgCtx.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
rmMsgCtx.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));
- String transportTo =
SandeshaUtil.getSequenceProperty(internalSeqenceID,
+ String transportTo =
SandeshaUtil.getSequenceProperty(internalSequenceID,
Sandesha2Constants.SequenceProperties.TRANSPORT_TO, storageManager);
if (transportTo != null) {
-
rmMsgCtx.setProperty(MessageContextConstants.TRANSPORT_URL, transportTo);
- }
-
+
rmMsgCtx.setProperty(Constants.Configuration.TRANSPORT_URL, transportTo);
+ }
//setting msg context properties
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID,
outSequenceID);
-
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,
internalSeqenceID);
+
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,
internalSequenceID);
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_PROPERTY_KEY
, sequenceKey);
try {
@@ -391,6 +413,7 @@
String key = SandeshaUtil.getUUID();
SenderBean terminateBean = new SenderBean();
+
terminateBean.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
terminateBean.setMessageContextRefKey(key);
// Set a retransmitter lastSentTime so that terminate will be
send with
@@ -402,15 +425,19 @@
terminateBean.setMessageID(msgContext.getMessageID());
// Set the internal sequence id and outgoing sequence id for
the terminate message
- terminateBean.setInternalSequenceID(internalSeqenceID);
- terminateBean.setSequenceID(outSequenceID);
+ terminateBean.setInternalSequenceID(internalSequenceID);
+ if (sequenceExists)
+ terminateBean.setSequenceID(outSequenceID);
EndpointReference to = msgContext.getTo();
if (to!=null)
terminateBean.setToAddress(to.getAddress());
// this will be set to true at the sender.
- terminateBean.setSend(true);
+ if (sequenceExists)
+ terminateBean.setSend(true);
+ else
+ terminateBean.setSend(false);
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,
Sandesha2Constants.VALUE_FALSE);
@@ -420,7 +447,7 @@
SequencePropertyBean terminateAdded = new
SequencePropertyBean();
terminateAdded.setName(Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
- terminateAdded.setSequencePropertyKey(outSequenceID);
+ terminateAdded.setSequencePropertyKey(internalSequenceID);
terminateAdded.setValue("true");
seqPropMgr.insert(terminateAdded);
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
Mon Dec 4 02:33:32 2006
@@ -522,28 +522,7 @@
// / Transaction transaction = storageManager.getTransaction();
SequencePropertyBeanMgr seqPropBeanMgr =
storageManager.getSequencePropertyBeanMgr();
- SequencePropertyBean findSeqIDBean = new SequencePropertyBean();
- findSeqIDBean.setValue(internalSequenceID);
-
findSeqIDBean.setName(Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
- Collection seqIDBeans = seqPropBeanMgr.find(findSeqIDBean);
-
- if (seqIDBeans.size() == 0) {
- String message =
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.noSequenceEstablished);
- log.debug(message);
- throw new SandeshaException(message);
- }
-
- if (seqIDBeans.size() > 1) {
- String message = SandeshaMessageHelper.getMessage(
-
SandeshaMessageKeys.cannotGenerateReportNonUniqueSequence, internalSequenceID);
- log.debug(message);
- throw new SandeshaException(message);
- }
-
- SequencePropertyBean seqIDBean = (SequencePropertyBean)
seqIDBeans.iterator().next();
- String sequenceID = seqIDBean.getSequencePropertyKey();
-
- SequencePropertyBean terminateAddedBean =
seqPropBeanMgr.retrieve(sequenceID,
+ SequencePropertyBean terminateAddedBean =
seqPropBeanMgr.retrieve(internalSequenceID,
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
if (terminateAddedBean == null)
return false;
@@ -551,7 +530,6 @@
if ("true".equals(terminateAddedBean.getValue()))
return true;
- // / transaction.commit();
return false;
}
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=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
(original)
+++
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
Mon Dec 4 02:33:32 2006
@@ -340,14 +340,14 @@
}
}
- public static void addTerminateSequenceMessage(RMMsgContext
referenceMessage, String outSequenceId,
+ public static void addTerminateSequenceMessage(RMMsgContext
referenceMessage, String internalSequenceID, String outSequenceId,
String sequencePropertyKey, StorageManager
storageManager) throws AxisFault {
if(log.isDebugEnabled())
- log.debug("Enter:
TerminateManager::addTerminateSequenceMessage " + outSequenceId);
+ log.debug("Enter:
TerminateManager::addTerminateSequenceMessage " + outSequenceId + ", " +
internalSequenceID);
SequencePropertyBeanMgr seqPropMgr =
storageManager.getSequencePropertyBeanMgr();
- SequencePropertyBean terminated =
seqPropMgr.retrieve(outSequenceId,
+ SequencePropertyBean terminated =
seqPropMgr.retrieve(internalSequenceID,
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
if (terminated != null && terminated.getValue() != null &&
"true".equals(terminated.getValue())) {
@@ -438,7 +438,7 @@
SequencePropertyBean terminateAdded = new
SequencePropertyBean();
terminateAdded.setName(Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
- terminateAdded.setSequencePropertyKey(outSequenceId);
+ terminateAdded.setSequencePropertyKey(internalSequenceID);
terminateAdded.setValue("true");
seqPropMgr.insert(terminateAdded);
Modified:
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
URL:
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
---
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
(original)
+++
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
Mon Dec 4 02:33:32 2006
@@ -43,11 +43,7 @@
public SandeshaClientTest () {
super ("SandeshaClientTest");
}
-
- public void setUp () throws Exception {
- super.setUp();
- }
-
+
public void testCreateSequenceWithOffer () throws Exception {
String to = "http://127.0.0.1:" + serverPort +
"/axis2/services/RMSampleService";
@@ -216,10 +212,75 @@
// public void testCreateSequenceWithSequenceKey () {
//
// }
-//
-// public void testTerminateSequence () {
-//
-// }
+//
+ /**
+ * Checks the following scenario
+ *
+ * Don't start the server
+ * 1) send an application message (will generate the create sequence)
+ * 2) terminate the sequence
+ * 3) send another application message (this should fail)
+ * 4) start the server
+ * 5) Issue wait until sequence completed (with a wait time)
+ * 6) Ensure that the sequence was terminated
+ *
+ */
+ public void testTerminateSequenceWithWait () throws Exception {
+ String to = "http://127.0.0.1:" + serverPort +
"/axis2/services/RMSampleService";
+
+ String repoPath = "target" + File.separator + "repos" +
File.separator + "client";
+ String axis2_xml = "target" + File.separator + "repos" +
File.separator + "client" + File.separator + "client_axis2.xml";
+
+ ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(repoPath,axis2_xml);
+
+ Options clientOptions = new Options ();
+
clientOptions.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ clientOptions.setProperty(SandeshaClientConstants.RM_SPEC_VERSION,
+ Sandesha2Constants.SPEC_VERSIONS.v1_1);
+ clientOptions.setTo(new EndpointReference (to));
+
+ ServiceClient serviceClient = new ServiceClient
(configContext,null);
+
+ String acksTo =
serviceClient.getMyEPR(Constants.TRANSPORT_HTTP).getAddress();
+
clientOptions.setProperty(SandeshaClientConstants.AcksTo,acksTo);
+ clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+ //serviceClient.
+ serviceClient.setOptions(clientOptions);
+
+ try{
+ // 1) Send the application message
+ serviceClient.fireAndForget(getPingOMBlock("ping1"));
+
+ // 2) Terminate the sequence
+ SandeshaClient.terminateSequence(serviceClient);
+
+ // 3) Send the second application message (this should
fail)
+ try{
+
serviceClient.fireAndForget(getPingOMBlock("ping2"));
+ fail(); //this should have failed
+ }
+ catch(Exception e){
+ //good
+ }
+
+ // 4) Start the server
+ startServer(server_repoPath, server_axis2_xml);
+
+ // 5) wait for the sequence completion (30 second wait)
+
SandeshaClient.waitUntilSequenceCompleted(serviceClient, 30000);
+
+ // 6) Check that the sequence has terminated
+ SequenceReport report =
SandeshaClient.getOutgoingSequenceReport(serviceClient);
+ assertNotNull(report);
+ assertEquals(SequenceReport.SEQUENCE_STATUS_TERMINATED,
report.getSequenceStatus());
+
+ }
+ finally {
+ configContext.getListenerManager().stop();
+ serviceClient.cleanup();
+ }
+
+ }
//
// public void testCloseSequence () {
//
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]