jaliya 2005/05/15 23:08:17
Modified: sandesha/config WSRMPolicy.xml
sandesha/interop build.xml
sandesha/interop/org/apache/sandesha/samples/interop
EchoClientAsyncAck.java EchoClientSyncAck.java
sandesha/interop/org/apache/sandesha/samples/interop/testclient
InteropStub.java
sandesha/src/org/apache/sandesha Constants.java
EnvelopeCreator.java RMInitiator.java
sandesha/src/org/apache/sandesha/client
ClientStorageManager.java RMSender.java
sandesha/src/org/apache/sandesha/server RMInvoker.java
sandesha/src/org/apache/sandesha/server/msgprocessors
CompositeProcessor.java
sandesha/src/org/apache/sandesha/storage/queue
IncomingSequence.java SandeshaQueue.java
sandesha/src/org/apache/sandesha/ws/rm Accept.java
AcksTo.java CreateSequenceResponse.java
Identifier.java SequenceOffer.java
Log:
Some changes were made to the interop related classes, these are mainly to
handle the interop testing using the jsp
Revision Changes Path
1.3 +3 -2 ws-fx/sandesha/config/WSRMPolicy.xml
Index: WSRMPolicy.xml
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/config/WSRMPolicy.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WSRMPolicy.xml 16 Mar 2005 04:22:45 -0000 1.2
+++ WSRMPolicy.xml 16 May 2005 06:08:17 -0000 1.3
@@ -8,8 +8,9 @@
<wsp:UsingPolicy wsdl:required="true" />
<wsp:Policy wsu:Id="MyPolicy" >
<wsrm:RMAssertion>
- <wsrm:InactivityTimeout Milliseconds="600000"
/>
- <wsrm:BaseRetransmissionInterval
Milliseconds="3000" />
+ <!-- <wsrm:InactivityTimeout Milliseconds="600000"
/> -->
+ <wsrm:InactivityTimeout Milliseconds="30000" />
+ <wsrm:BaseRetransmissionInterval
Milliseconds="3000" />
<wsrm:ExponentialBackoff />
<wsrm:AcknowledgementInterval
Milliseconds="200" />
</wsrm:RMAssertion>
1.8 +12 -8 ws-fx/sandesha/interop/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/interop/build.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- build.xml 14 May 2005 06:52:30 -0000 1.7
+++ build.xml 16 May 2005 06:08:17 -0000 1.8
@@ -177,9 +177,10 @@
<echo
message="-------------------------------------------------------------------"/>
<echo message="
"/>
<echo message=" available targets are:
"/>
- <echo message=" run_async_ping -->runs interop test for AsyncPing
"/>
- <echo message=" run_sync_ping -->runs interop test for SyncPing
"/>
- <echo message=" run_echo_string -->runs interop test for
EchoStirng "/>
+ <echo message=" ping_sync -->runs interop test for AsyncPing
"/>
+ <echo message=" ping_async -->runs interop test for SyncPing
"/>
+ <echo message=" echo_sync_ack -->runs interop test for
EchoStirng "/>
+ <echo message=" echo_async_ack -->runs interop test for
EchoStirng "/>
<echo message=" compile.interop --> compiles the interop source
code "/>
<echo message=" clean --> cleans up all generated files
and "/>
<echo message=" jar --> creates the JAR file
"/>
@@ -290,7 +291,6 @@
</ant-->
<copy todir="${build.interop}">
<fileset dir="${dir.interop}" includes="client-config.wsdd"/>
- <fileset dir="${dir.config}"
includes="client-listener-config.wsdd"/>
<fileset dir="${dir.config}" includes="sandesha.properties"/>
</copy>
@@ -385,16 +385,16 @@
<target name="prepare-jar" depends="compile.library,prepare-dist"
description="prepares for creating jar">
<property name="build.temp-jar" value="${build.dir}/temp-jar" />
- <property name="sandesha.jar.name" value="sandesha.jar" />
+ <property name="sandesha.jar.name" value="sandesha-1.0.jar" />
<property name="dir.dist.jar" value="${dir.dist}/jar" />
<property name="sandesha.jar"
value="${dir.dist.jar}/${sandesha.jar.name}" />
+ <property name="axishome"
value="${env1.CATALINA_HOME}/webapps/axis/WEB-INF/lib" />
<mkdir dir="${dir.dist.jar}" />
</target>
<target name="jar" depends="prepare-jar" description="creates the
sandesha jar">
-
- <jar basedir="${build.classes}" destfile="${sandesha.jar}" />
+ <jar basedir="${build.classes}" destfile="${sandesha.jar}" />
</target>
@@ -428,7 +428,11 @@
<target name="war.copy" depends="war" >
<copy file="${sandesha.war}" todir="${webapps}" />
</target>
-
+
+ <target name="jar.copy" depends="jar" >
+ <copy file="${sandesha.jar}" todir="${axishome}" />
+ </target>
+
<target name="war" depends="create.war" description="creates the war
file" />
</project>
1.4 +4 -3
ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoClientAsyncAck.java
Index: EchoClientAsyncAck.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoClientAsyncAck.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- EchoClientAsyncAck.java 9 May 2005 12:33:14 -0000 1.3
+++ EchoClientAsyncAck.java 16 May 2005 06:08:17 -0000 1.4
@@ -20,6 +20,8 @@
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
+import org.apache.axis.components.uuid.UUIDGenFactory;
+import org.apache.axis.components.uuid.UUIDGen;
import org.apache.sandesha.Constants;
import org.apache.sandesha.RMInitiator;
import org.apache.sandesha.RMTransport;
@@ -42,10 +44,9 @@
// initClient is "false". If the service is of type
request/response the parameter value shoule be "false"
RMInitiator.initClient(false);
- //UUIDGen uuidGen = UUIDGenFactory.getUUIDGen(); //Can use this
for continuous testing.
- //String str = uuidGen.nextUUID();
+ UUIDGen uuidGen = UUIDGenFactory.getUUIDGen(); //Can use this
for continuous testing.
+ String str = uuidGen.nextUUID();
- String str = "ABCDEF1234";
Service service = new Service();
Call call = (Call) service.createCall();
1.4 +4 -4
ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoClientSyncAck.java
Index: EchoClientSyncAck.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/EchoClientSyncAck.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- EchoClientSyncAck.java 9 May 2005 12:33:14 -0000 1.3
+++ EchoClientSyncAck.java 16 May 2005 06:08:17 -0000 1.4
@@ -20,6 +20,8 @@
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
+import org.apache.axis.components.uuid.UUIDGenFactory;
+import org.apache.axis.components.uuid.UUIDGen;
import org.apache.sandesha.Constants;
import org.apache.sandesha.RMInitiator;
import org.apache.sandesha.RMTransport;
@@ -44,10 +46,8 @@
// shoule be "false"
RMInitiator.initClient(false);
- //UUIDGen uuidGen = UUIDGenFactory.getUUIDGen(); //Can use this
for continuous testing.
- //String str = uuidGen.nextUUID();
-
- String str = "ABCDEF1234";
+ UUIDGen uuidGen = UUIDGenFactory.getUUIDGen(); //Can use this
for continuous testing.
+ String str = uuidGen.nextUUID();
Service service = new Service();
Call call = (Call) service.createCall();
1.5 +3 -1
ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/testclient/InteropStub.java
Index: InteropStub.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/interop/org/apache/sandesha/samples/interop/testclient/InteropStub.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InteropStub.java 14 May 2005 17:18:54 -0000 1.4
+++ InteropStub.java 16 May 2005 06:08:17 -0000 1.5
@@ -126,6 +126,8 @@
acksTo = AddressingUtils.getAnonymousRoleURI();
+ String seq=new Long(System.currentTimeMillis()).toString();
+
try {
boolean sync = false;
@@ -169,7 +171,7 @@
call.setProperty(Constants.ClientProperties.LAST_MESSAGE, new Boolean(true));
}
- String ret = (String) call.invoke(new
Object[]{msg,"abcdef"});
+ String ret = (String) call.invoke(new
Object[]{msg,seq});
System.out.println("Got response from server "
+ ret);
}
1.46 +1 -0 ws-fx/sandesha/src/org/apache/sandesha/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/Constants.java,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -r1.45 -r1.46
--- Constants.java 9 May 2005 12:33:14 -0000 1.45
+++ Constants.java 16 May 2005 06:08:17 -0000 1.46
@@ -96,6 +96,7 @@
public static final String ACKS_TO = "AcksTo";
public static final String SEQUENCE_OFFER = "Offer";
public static final String ACCEPT="Accept";
+ public static final String IDENTIFIER="Identifier";
public static final double MAX_MSG_NO = 18446744073709551615d;
1.37 +5 -1
ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java
Index: EnvelopeCreator.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- EnvelopeCreator.java 7 May 2005 08:14:44 -0000 1.36
+++ EnvelopeCreator.java 16 May 2005 06:08:17 -0000 1.37
@@ -205,9 +205,13 @@
msgNumber.setMessageNumber(rmMessageContext.getMsgNumber());
seq.setMessageNumber(msgNumber);
+ if(rmMessageContext.isLastMessage()){
+ seq.setLastMessage(new LastMessage());
+ }
+
seq.toSoapEnvelop(responseEnvelope);
- //TODO
+ //TODO
//Adding relatesTo header
//List relatesToList = addressingHeaders.getRelatesTo();
//List relatesToList.set(0,rmMessageContext.getOldSequenceID());
1.17 +32 -7 ws-fx/sandesha/src/org/apache/sandesha/RMInitiator.java
Index: RMInitiator.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/RMInitiator.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- RMInitiator.java 14 May 2005 17:21:10 -0000 1.16
+++ RMInitiator.java 16 May 2005 06:08:17 -0000 1.17
@@ -16,9 +16,9 @@
*/
package org.apache.sandesha;
+import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.SimpleChain;
-import org.apache.axis.client.Call;
import org.apache.axis.components.logger.LogFactory;
import org.apache.axis.configuration.SimpleProvider;
import org.apache.axis.description.JavaServiceDesc;
@@ -29,6 +29,7 @@
import org.apache.sandesha.server.RMInvoker;
import org.apache.sandesha.server.Sender;
import org.apache.sandesha.server.ServerStorageManager;
+import org.apache.sandesha.util.PolicyLoader;
import org.apache.sandesha.util.PropertyLoader;
import org.apache.sandesha.ws.rm.providers.RMProvider;
@@ -103,15 +104,19 @@
}
}
- public static RMStatus stopClient() {
+ public static RMStatus stopClient() throws AxisFault{
//This should check whether we have received all the acks or
reponses if any
IStorageManager storageManager = new ClientStorageManager();
storageManager.isAllSequenceComplete();
-
+ long startingTime = System.currentTimeMillis();
+ long inactivityTimeOut =
PolicyLoader.getInstance().getInactivityTimeout();
while (!storageManager.isAllSequenceComplete()) {
try {
System.out.println(Constants.InfomationMessage.WAITING_TO_STOP_CLIENT);
Thread.sleep(Constants.CLIENT_WAIT_PERIOD_FOR_COMPLETE);
+ if ((System.currentTimeMillis() - startingTime) >=
inactivityTimeOut) {
+ RMInitiator.stopClientByForce();
+ }
} catch (InterruptedException e) {
log.error(e);
}
@@ -119,17 +124,37 @@
if (listenerStarted) {
sas.stop();
-
+
+
+ //FOR JSP
listenerStarted = false;
+ //END JSP
listenerStarted = false;
}
sender.setRunning(false);
- senderStarted = false;
- storageManager.clearStorage();
+ //FOR JSP
+ senderStarted = false;
+ //END JSP
return new RMStatus();
+ }
+
+ public static void stopClientByForce() throws AxisFault {
+ if (listenerStarted) {
+ sas.stop();
+
+ //FOR JSP
+ listenerStarted = false;
+ //END JSP
+ listenerStarted = false;
+ }
+ sender.setRunning(false);
+ //FOR JSP
+ senderStarted = false;
+ //END JSP
+ throw new AxisFault("Inactivity Timeout Reached, No Response from
the Server");
}
private static void startListener() {
@@ -215,5 +240,5 @@
return getHandlerChain(arr);
}
-
+
}
\ No newline at end of file
1.36 +38 -7
ws-fx/sandesha/src/org/apache/sandesha/client/ClientStorageManager.java
Index: ClientStorageManager.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/ClientStorageManager.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- ClientStorageManager.java 14 May 2005 17:21:10 -0000 1.35
+++ ClientStorageManager.java 16 May 2005 06:08:17 -0000 1.36
@@ -26,10 +26,12 @@
import org.apache.sandesha.storage.CallbackData;
import org.apache.sandesha.storage.dao.ISandeshaDAO;
import org.apache.sandesha.storage.dao.SandeshaDAOFactory;
-import org.apache.sandesha.storage.queue.SandeshaQueue;
import org.apache.sandesha.ws.rm.RMHeaders;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
public class ClientStorageManager implements IStorageManager {
@@ -42,7 +44,9 @@
}
public ClientStorageManager() {
- accessor =
SandeshaDAOFactory.getStorageAccessor(Constants.SERVER_QUEUE_ACCESSOR,Constants.CLIENT);
+ accessor =
+
SandeshaDAOFactory.getStorageAccessor(Constants.SERVER_QUEUE_ACCESSOR,
+ Constants.CLIENT);
}
public boolean isSequenceExist(String sequenceID) {
@@ -118,7 +122,33 @@
* Get a Map of messages.
*/
public Map getListOfMessageNumbers(String sequenceID) {
- return null;
+
+ String seq = getKeyFromOutgoingSeqId(sequenceID);
+ Set st = accessor.getAllReceivedMsgNumsOfIncomingSeq(seq);
+ Iterator it = st.iterator();
+ //To find the largest id present
+ long largest = 0;
+ while (it.hasNext()) {
+ Long key = (Long) it.next();
+ if (key == null)
+ continue;
+
+ long l = key.longValue();
+ if (l > largest)
+ largest = l;
+ }
+
+ HashMap results = new HashMap();
+ //Add Keys to the results in order.
+ long currentPosition = 1;
+ for (long l = 1; l <= largest; l++) {
+ boolean present = st.contains(new Long(l));
+ if (present) {
+ results.put(new Long(currentPosition), new Long(l));
+ currentPosition++;
+ }
+ }
+ return results;
}
/**
@@ -222,7 +252,6 @@
if (0 >= messageNumber)
return;
Long msgNo = new Long(messageNumber);
-
accessor.addMessageToIncomingSequence(sequenceId, msgNo,
rmMessageContext);
}
@@ -345,7 +374,9 @@
}
public String getOutgoingSeqenceIdOfIncomingMsg(RMMessageContext msg) {
- String msgId = msg.getMessageID();
+ //String msgId = msg.getMessageID();
+ RelatesTo relatesTo=
(RelatesTo)msg.getAddressingHeaders().getRelatesTo().get(0);
+ String msgId=relatesTo.getURI().toString();
return accessor.searchForSequenceId(msgId);
}
@@ -400,8 +431,8 @@
if (callBack != null)
callBack.onOutgoingMessage(cbData);
}
-
- public void clearStorage(){
+
+ public void clearStorage() {
accessor.clear();
}
1.41 +9 -0
ws-fx/sandesha/src/org/apache/sandesha/client/RMSender.java
Index: RMSender.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/RMSender.java,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -r1.40 -r1.41
--- RMSender.java 9 May 2005 03:45:26 -0000 1.40
+++ RMSender.java 16 May 2005 06:08:17 -0000 1.41
@@ -28,7 +28,9 @@
import org.apache.commons.logging.Log;
import org.apache.sandesha.Constants;
import org.apache.sandesha.IStorageManager;
+import org.apache.sandesha.RMInitiator;
import org.apache.sandesha.RMMessageContext;
+import org.apache.sandesha.util.PolicyLoader;
import org.apache.sandesha.util.RMMessageCreator;
import org.apache.sandesha.ws.rm.RMHeaders;
@@ -87,9 +89,14 @@
if (reqMsgCtx.isHasResponse()) {
RMMessageContext responseMessageContext = null;
+ long startingTime = System.currentTimeMillis();
+ long inactivityTimeOut =
PolicyLoader.getInstance().getInactivityTimeout();
while (responseMessageContext == null) {
responseMessageContext =
checkTheQueueForResponse(tempSeqID,
reqMsgCtx.getMessageID());
+ if ((System.currentTimeMillis() - startingTime) >=
inactivityTimeOut) {
+ RMInitiator.stopClientByForce();
+ }
Thread.sleep(Constants.CLIENT_RESPONSE_CHECKING_INTERVAL);
}
//We need these steps to filter all addressing and rm
related headers.
@@ -105,6 +112,8 @@
} catch (Exception ex) {
log.error(ex);
+ throw new AxisFault(ex.getLocalizedMessage());
+
}
}
1.27 +27 -19
ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java
Index: RMInvoker.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- RMInvoker.java 7 May 2005 08:14:44 -0000 1.26
+++ RMInvoker.java 16 May 2005 06:08:17 -0000 1.27
@@ -20,9 +20,7 @@
import org.apache.axis.components.uuid.UUIDGen;
import org.apache.axis.components.uuid.UUIDGenFactory;
import org.apache.axis.message.addressing.AddressingHeaders;
-import org.apache.axis.message.addressing.MessageID;
import org.apache.axis.providers.java.JavaProvider;
-import org.apache.axis.types.URI;
import org.apache.commons.logging.Log;
import org.apache.sandesha.Constants;
import org.apache.sandesha.IStorageManager;
@@ -59,14 +57,18 @@
JavaProvider provider = (JavaProvider) c.newInstance();
provider.invoke(rmMessageContext.getMsgContext());
- if
(rmMessageContext.getMsgContext().getOperation().getMethod().getReturnType() !=
Void.TYPE) {
- String oldAction =
rmMessageContext.getAddressingHeaders().getAction().toString();
-
rmMessageContext.getAddressingHeaders().setAction(oldAction +
Constants.RESPONSE);
+ if
(rmMessageContext.getMsgContext().getOperation().getMethod().getReturnType() !=
+ Void.TYPE) {
+ String oldAction =
rmMessageContext.getAddressingHeaders().getAction()
+ .toString();
+ rmMessageContext.getAddressingHeaders().setAction(
+ oldAction + Constants.RESPONSE);
if (rmMessageContext.isLastMessage()) {
//Insert Terminate Sequnce.
if (addrHeaders.getReplyTo() != null) {
String replyTo =
addrHeaders.getReplyTo().getAddress().toString();
- RMMessageContext terminateMsg =
RMMessageCreator.createTerminateSeqMsg(rmMessageContext, Constants.SERVER);
+ RMMessageContext terminateMsg =
RMMessageCreator.createTerminateSeqMsg(
+ rmMessageContext, Constants.SERVER);
terminateMsg.setOutGoingAddress(replyTo);
storageManager.insertTerminateSeqMessage(terminateMsg);
} else {
@@ -78,31 +80,37 @@
// used in this case. This is done by the RMSender.
rmMessageContext.setMessageType(Constants.MSG_TYPE_SERVICE_RESPONSE);
- boolean hasResponseSeq =
storageManager.isResponseSequenceExist(rmMessageContext.getSequenceID());
+ boolean hasResponseSeq =
storageManager.isResponseSequenceExist(
+ rmMessageContext.getSequenceID());
boolean firstMsgOfResponseSeq = false;
- if (hasResponseSeq == true &&
rmMessageContext.getRMHeaders().getSequence().getMessageNumber().getMessageNumber()
== 1){
-
- }
- else
+ if (!(hasResponseSeq &&
+
rmMessageContext.getRMHeaders().getSequence().getMessageNumber()
+ .getMessageNumber() ==
+ 1)) {
firstMsgOfResponseSeq = !hasResponseSeq;
+ }
-
-
rmMessageContext.setMsgNumber(storageManager.getNextMessageNumber(rmMessageContext.getSequenceID()));
+ rmMessageContext.setMsgNumber(
+ storageManager.getNextMessageNumber(
+ rmMessageContext.getSequenceID()));
storageManager.insertOutgoingMessage(rmMessageContext);
if (firstMsgOfResponseSeq) {
+ String msgIdStr = Constants.UUID +
uuidGen.nextUUID();
-
- String msgIdStr = Constants.UUID
+uuidGen.nextUUID();
-
- RMMessageContext csRMMsgCtx =
RMMessageCreator.createCreateSeqMsg(rmMessageContext,
Constants.SERVER,msgIdStr,null);
-
csRMMsgCtx.setOutGoingAddress(rmMessageContext.getAddressingHeaders().getReplyTo().getAddress().toString());
+ RMMessageContext csRMMsgCtx =
RMMessageCreator.createCreateSeqMsg(
+ rmMessageContext, Constants.SERVER,
msgIdStr, null);
+ csRMMsgCtx.setOutGoingAddress(
+
rmMessageContext.getAddressingHeaders().getReplyTo()
+ .getAddress()
+ .toString());
csRMMsgCtx.addToMsgIdList(msgIdStr);
csRMMsgCtx.setMessageID(msgIdStr);
-
storageManager.setTemporaryOutSequence(csRMMsgCtx.getSequenceID(), msgIdStr);
+
storageManager.setTemporaryOutSequence(csRMMsgCtx.getSequenceID(),
+ msgIdStr);
storageManager.addCreateSequenceRequest(csRMMsgCtx);
}
}
1.10 +5 -1
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CompositeProcessor.java
Index: CompositeProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CompositeProcessor.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- CompositeProcessor.java 9 May 2005 12:33:14 -0000 1.9
+++ CompositeProcessor.java 16 May 2005 06:08:17 -0000 1.10
@@ -93,7 +93,11 @@
//Send an Ack for every message received by the server.
//This should be changed according to the WS-policy.
- return ackProcessor.sendAcknowledgement(rmMessageContext);
+ if(rmHeaders.getAckRequest()!=null
||rmHeaders.getSequence().getLastMessage()!=null){
+ return
ackProcessor.sendAcknowledgement(rmMessageContext);
+ } else{
+ return false;
+ }
}
}
return false;
1.8 +13 -11
ws-fx/sandesha/src/org/apache/sandesha/storage/queue/IncomingSequence.java
Index: IncomingSequence.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/queue/IncomingSequence.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- IncomingSequence.java 7 May 2005 08:14:44 -0000 1.7
+++ IncomingSequence.java 16 May 2005 06:08:17 -0000 1.8
@@ -22,11 +22,7 @@
import org.apache.commons.logging.Log;
import org.apache.sandesha.RMMessageContext;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
+import java.util.*;
/*
* Created on Aug 4, 2004 at 5:08:29 PM
@@ -47,6 +43,7 @@
private long lastMsgNo = -1;
private String acksTo = null;
private String offer;
+ //private Set msgNumbers;
public String getOffer() {
return offer;
@@ -56,14 +53,14 @@
this.offer = offer;
}
- public void setAcksTo(String ack){
+ public void setAcksTo(String ack) {
acksTo = ack;
}
-
- public String getAcksTo(){
+
+ public String getAcksTo() {
return acksTo;
}
-
+
private boolean terminateReceived = false;
public boolean isTerminateReceived() {
@@ -81,6 +78,7 @@
hasProcessableMessages = false;
this.sequenceId = sequenceId;
hash = new HashMap();
+ //msgNumbers= new HashSet();
}
public boolean hasProcessableMessages() {
@@ -100,6 +98,7 @@
*/
public Object putNewMessage(Long key, RMMessageContext value) {
Object obj = hash.put(key, value);
+ //this.msgNumbers.add(key);
refreshHasProcessableMessages();
return obj;
}
@@ -181,6 +180,8 @@
public Set getAllKeys() {
return hash.keySet();
+ //return msgNumbers;
+
}
public void setProcessLock(boolean lock) {
@@ -212,9 +213,10 @@
if (lst != null) {
RelatesTo rl = (RelatesTo) lst.get(0);
String uri = rl.getURI().toString();
- if (uri.equals(relatesTo))
+ if (uri.equals(relatesTo)) {
msgToSend = msg;
- break;
+ break;
+ }
}
}
1.20 +5 -11
ws-fx/sandesha/src/org/apache/sandesha/storage/queue/SandeshaQueue.java
Index: SandeshaQueue.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/queue/SandeshaQueue.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- SandeshaQueue.java 14 May 2005 17:21:10 -0000 1.19
+++ SandeshaQueue.java 16 May 2005 06:08:17 -0000 1.20
@@ -90,12 +90,10 @@
public boolean addMessageToIncomingSequence(String seqId, Long messageNo,
RMMessageContext msgCon)
throws QueueException {
boolean successful = false;
-
+
if (seqId == null || msgCon == null)
throw new QueueException(Constants.Queue.ADD_ERROR);
-
-
if (isIncomingSequenceExists(seqId)) {
IncomingSequence seqHash = (IncomingSequence)
incomingMap.get(seqId);
@@ -363,15 +361,12 @@
}
public void clear(boolean yes) {
-
if (!yes)
return;
-
incomingMap.clear();
highPriorityQueue.clear();
outgoingMap.clear();
queueBin.clear();
-
}
public void removeAllMsgsFromIncomingSeqence(String seqId, boolean yes) {
@@ -409,8 +404,7 @@
}
public Set getAllReceivedMsgNumsOfIncomingSeq(String sequenceId) {
- Vector v = new Vector();
- IncomingSequence sh = (IncomingSequence) incomingMap.get(sequenceId);
+ IncomingSequence sh = (IncomingSequence) incomingMap.get(sequenceId);
if (sh != null)
return sh.getAllKeys();
else
@@ -653,9 +647,9 @@
if (!hasMsg)
key = null;
- if(hasMsg){
- return key;
- }
+// if(hasMsg){
+// break;
+// }
}
}
1.3 +1 -1 ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Accept.java
Index: Accept.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Accept.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Accept.java 7 May 2005 08:14:44 -0000 1.2
+++ Accept.java 16 May 2005 06:08:17 -0000 1.3
@@ -64,7 +64,7 @@
return acceptElement;
}
- public Accept fromSOAPEnvelope(MessageElement bodyElement) throws
Exception{
+ public Accept fromSOAPEnvelope(MessageElement bodyElement) throws
SOAPException{
Iterator iterator = bodyElement.getChildElements();
MessageElement childElement;
1.4 +9 -1 ws-fx/sandesha/src/org/apache/sandesha/ws/rm/AcksTo.java
Index: AcksTo.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/AcksTo.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AcksTo.java 2 May 2005 08:38:09 -0000 1.3
+++ AcksTo.java 16 May 2005 06:08:17 -0000 1.4
@@ -18,7 +18,9 @@
package org.apache.sandesha.ws.rm;
import org.apache.axis.message.MessageElement;
+import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.addressing.Address;
+import org.apache.axis.types.URI;
import org.apache.sandesha.Constants;
import javax.xml.soap.SOAPException;
@@ -46,9 +48,11 @@
* @param element
* @return Nack
*/
- public AcksTo fromSOAPEnvelope(MessageElement element) throws Exception {
+ public AcksTo fromSOAPEnvelope(MessageElement element) throws
SOAPException{
+
Iterator iterator = element.getChildElements();
MessageElement childElement;
+ try{
while (iterator.hasNext()) {
childElement = (MessageElement) iterator.next();
if
(childElement.getName().equals(org.apache.axis.message.addressing.Constants.NS_PREFIX_ADDRESSING
+ Constants.COLON + org.apache.axis.message.addressing.Constants.ADDRESS)) {
@@ -60,6 +64,9 @@
address = new Address(uri);
}
}
+ }catch(Exception e){
+ throw new SOAPException(e);
+ }
return this;
}
@@ -113,4 +120,5 @@
this.address = address;
}
+
}
1.17 +1 -1
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequenceResponse.java
Index: CreateSequenceResponse.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequenceResponse.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- CreateSequenceResponse.java 7 May 2005 08:14:44 -0000 1.16
+++ CreateSequenceResponse.java 16 May 2005 06:08:17 -0000 1.17
@@ -102,7 +102,7 @@
* @param bodyElement
* @return CreateSequenceResponse
*/
- public CreateSequenceResponse fromSOAPEnveploe(SOAPBodyElement
bodyElement) throws Exception {
+ public CreateSequenceResponse fromSOAPEnveploe(SOAPBodyElement
bodyElement) throws SOAPException {
Iterator iterator = bodyElement.getChildElements();
MessageElement childElement;
1.2 +22 -8
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Identifier.java
Index: Identifier.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Identifier.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Identifier.java 2 May 2005 04:34:04 -0000 1.1
+++ Identifier.java 16 May 2005 06:08:17 -0000 1.2
@@ -3,9 +3,10 @@
import org.apache.axis.message.MessageElement;
import org.apache.axis.types.URI;
-
+import org.apache.sandesha.Constants;
import javax.xml.soap.SOAPException;
+import java.util.Iterator;
/**
* class Identifier
@@ -31,7 +32,8 @@
*/
public Identifier() {
identifierElement = new MessageElement();
- identifierElement.setName("wsrm:Identifier");
+ identifierElement.setName(
+ Constants.WSRM.NS_PREFIX_RM + Constants.COLON +
Constants.WSRM.IDENTIFIER);
}
/**
@@ -63,10 +65,10 @@
* @return @throws
* SOAPException
*/
- public MessageElement toSOAPEnvelope(MessageElement msgElement)
- throws SOAPException {
-
- msgElement.addChildElement("Identifier",
"wsrm").addTextNode(identifier);
+ public MessageElement toSOAPEnvelope(MessageElement msgElement) throws
SOAPException {
+ removeIdentifierElementIfAny(msgElement);
+ msgElement.addChildElement(Constants.WSRM.IDENTIFIER,
Constants.WSRM.NS_PREFIX_RM)
+ .addTextNode(identifier);
return msgElement;
}
@@ -109,8 +111,8 @@
public boolean equals(Object obj) {
if (obj instanceof org.apache.sandesha.ws.rm.Identifier) {
- if (this.identifier == ((String)
(((org.apache.sandesha.ws.rm.Identifier) obj)
- .getIdentifier()))) {
+ if (this.identifier ==
+ ((String) (((org.apache.sandesha.ws.rm.Identifier)
obj).getIdentifier()))) {
return true;
} else {
return false;
@@ -137,4 +139,16 @@
public String toString() {
return identifier;
}
+
+ private void removeIdentifierElementIfAny(MessageElement msgElement) {
+
+ Iterator ite = msgElement.getChildElements();
+ while (ite.hasNext()) {
+ MessageElement childElement = (MessageElement) ite.next();
+ if (Constants.WSRM.IDENTIFIER.equals(childElement.getName()) &&
+
(Constants.WSRM.NS_URI_RM.equals(childElement.getNamespaceURI()))) {
+ childElement.detachNode();
+ }
+ }
+ }
}
\ No newline at end of file
1.5 +2 -5
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/SequenceOffer.java
Index: SequenceOffer.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/SequenceOffer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SequenceOffer.java 7 May 2005 08:14:44 -0000 1.4
+++ SequenceOffer.java 16 May 2005 06:08:17 -0000 1.5
@@ -37,8 +37,7 @@
public SequenceOffer (){
offerElement = new
MessageElement(Constants.WSRM.SEQUENCE_OFFER,Constants.WSRM.NS_PREFIX_RM,Constants.WSRM.NS_URI_RM);
-
//offerElement.setName(Constants.WSRM.NS_PREFIX_RM+Constants.COLON+Constants.WSRM.SEQUENCE_OFFER);
- }
+ }
public void addChildElement(MessageElement element) throws SOAPException
{
offerElement.addChildElement(element);
@@ -71,9 +70,7 @@
return this;
}
- public MessageElement toSOAPEnvelope(MessageElement element)
- throws SOAPException {
-
+ public MessageElement toSOAPEnvelope(MessageElement element) throws
SOAPException {
if(identifier!=null)
identifier.toSOAPEnvelope(offerElement);