You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ja...@apache.org on 2005/05/09 05:45:27 UTC
cvs commit: ws-fx/sandesha/src/org/apache/sandesha/client ClientStorageManager.java RMSender.java RMService.java
jaliya 2005/05/08 20:45:27
Modified: sandesha/src/org/apache/sandesha/client
ClientStorageManager.java RMSender.java
RMService.java
Log:
Reformat the code
Revision Changes Path
1.31 +30 -69 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.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- ClientStorageManager.java 8 May 2005 19:10:51 -0000 1.30
+++ ClientStorageManager.java 9 May 2005 03:45:26 -0000 1.31
@@ -26,34 +26,19 @@
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.IncomingSequence;
import org.apache.sandesha.storage.queue.SandeshaQueue;
import org.apache.sandesha.ws.rm.RMHeaders;
-import java.util.Iterator;
import java.util.Map;
-/**
- * @author Jaliya
- * <p/>
- * TODO To change the template for this generated type comment go to Window -
- * Preferences - Java - Code Style - Code Templates
- */
public class ClientStorageManager implements IStorageManager {
- protected static Log log = LogFactory.getLog(ClientStorageManager.class
- .getName());
+ protected static Log log = LogFactory.getLog(ClientStorageManager.class.getName());
private ISandeshaDAO accessor;
private static Callback callBack = null;
- /*
- * (non-Javadoc)
- *
- * @see org.apache.sandesha.IStorageManager#init()
- */
public void init() {
- // TODO Auto-generated method stub
}
public ClientStorageManager() {
@@ -142,7 +127,7 @@
public RMMessageContext getNextMessageToSend() {
RMMessageContext msg;
msg = accessor.getNextPriorityMessageContextToSend();
- if (msg == null)
+ if (null == msg)
msg = accessor.getNextOutgoingMsgContextToSend();
if (msg == null) {
@@ -174,14 +159,14 @@
public boolean setApprovedOutSequence(String createSeqId, String newOutSequenceId) {
boolean done = false;
- // String oldOutsequenceId = accessor.getFirstCreateSequenceMsgId(createSeqId);
+ // String oldOutsequenceId = accessor.getFirstCreateSequenceMsgId(createSeqId);
String oldOutsequenceId = createSeqId;
- if(oldOutsequenceId==null){
+ if (null == oldOutsequenceId) {
return false;
}
-
+
String sequenceID = accessor.getSequenceOfOutSequence(oldOutsequenceId);
-
+
if (sequenceID == null) {
log.error(Constants.ErrorMessages.SET_APPROVED_OUT_SEQ);
return false;
@@ -190,7 +175,7 @@
accessor.setOutSequenceApproved(sequenceID, true);
accessor.removeCreateSequenceMsg(oldOutsequenceId);
return true;
-
+
}
/**
@@ -204,8 +189,9 @@
/*
* (non-Javadoc)
- *
- * @see org.apache.sandesha.IStorageManager#insertOutgoingMessage(org.apache.sandesha.RMMessageContext)
+ *
+ * @see org.apache.sandesha.IStorageManager#insertOutgoingMessage
+ * (org.apache.sandesha.RMMessageContext)
*/
public void insertOutgoingMessage(RMMessageContext msg) {
String sequenceId = msg.getSequenceID();
@@ -214,15 +200,15 @@
/*
* (non-Javadoc)
- *
- * @see org.apache.sandesha.IStorageManager#insertIncomingMessage(org.apache.sandesha.RMMessageContext)
+ *
+ * @see org.apache.sandesha.IStorageManager#insertIncomingMessage
+ *(org.apache.sandesha.RMMessageContext)
*/
- //IN THE CLIENT RESPONSE HASH HAS THE ID OF RESPONSE MESSAGES.
public void insertIncomingMessage(RMMessageContext rmMessageContext) {
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
- RelatesTo relatesTo = (RelatesTo) rmMessageContext
- .getAddressingHeaders().getRelatesTo().get(0);
+ RelatesTo relatesTo = (RelatesTo) rmMessageContext.getAddressingHeaders().getRelatesTo().get(
+ 0);
String messageId = relatesTo.getURI().toString();
String sequenceId = null;
@@ -230,21 +216,17 @@
sequenceId = accessor.searchForSequenceId(messageId);
SandeshaQueue sq = SandeshaQueue.getInstance();
- //sq.displayOutgoingMap();
boolean exists = accessor.isIncomingSequenceExists(sequenceId);
if (!exists) {
accessor.addIncomingSequence(sequenceId);
}
- //TODO: add getRmHeaders method to MessageContext
- long messageNumber = rmHeaders.getSequence().getMessageNumber()
- .getMessageNumber();
- if (messageNumber <= 0)
- return; //TODO: throw some exception
+ long messageNumber = rmHeaders.getSequence().getMessageNumber().getMessageNumber();
+ if (0 >= messageNumber)
+ return;
Long msgNo = new Long(messageNumber);
- accessor.addMessageToIncomingSequence(sequenceId, msgNo,
- rmMessageContext);
+ accessor.addMessageToIncomingSequence(sequenceId, msgNo, rmMessageContext);
}
@@ -278,42 +260,28 @@
return result;
}
- /* (non-Javadoc)
- * @see org.apache.sandesha.IStorageManager#insertTerminateSeqMessage(org.apache.sandesha.RMMessageContext)
- */
+
public void insertTerminateSeqMessage(RMMessageContext terminateSeqMessage) {
accessor.addLowPriorityMessage(terminateSeqMessage);
-
}
- /* (non-Javadoc)
- * @see org.apache.sandesha.IStorageManager#isAllSequenceComplete()
- */
- public boolean isAllSequenceComplete() {
+ public boolean isAllSequenceComplete() {
boolean outTerminateSent = accessor.isAllOutgoingTerminateSent();
-
boolean incomingTerminateReceived = accessor.isAllIncommingTerminateReceived();
-
if (outTerminateSent && incomingTerminateReceived)
return true;
else
return false;
}
- /* (non-Javadoc)
- * @see org.apache.sandesha.IStorageManager#isResponseComplete(java.lang.String)
- */
+
public boolean isResponseComplete(String sequenceID) {
- // TODO Auto-generated method stub
return false;
}
- /* (non-Javadoc)
- * @see org.apache.sandesha.IStorageManager#terminateSequence(java.lang.String)
- */
+
public void terminateSequence(String sequenceID) {
- // TODO Auto-generated method stub
}
public void setAckReceived(String seqId, long msgNo) {
@@ -325,13 +293,6 @@
}
- /* (non-Javadoc)
- * @see org.apache.sandesha.IStorageManager#addSentMsgNo(java.lang.String, long)
- */
-
- /* (non-Javadoc)
- * @see org.apache.sandesha.IStorageManager#addSendMsgNo(java.lang.String, long)
- */
public void addSendMsgNo(String seqId, long msgNo) {
accessor.addSendMsgNo(accessor.getSequenceOfOutSequence(seqId), msgNo);
}
@@ -402,21 +363,21 @@
public String getKeyFromOutgoingSeqId(String seqId) {
return accessor.getKeyFromOutgoingSequenceId(seqId);
}
-
- public void setAcksTo(String seqId,String acksTo){
- accessor.setAcksTo(seqId,acksTo);
+
+ public void setAcksTo(String seqId, String acksTo) {
+ accessor.setAcksTo(seqId, acksTo);
}
-
- public String getAcksTo(String seqId){
+
+ public String getAcksTo(String seqId) {
return accessor.getAcksTo(seqId);
}
public void addOffer(String msgID, String offerID) {
- accessor.addOffer(msgID,offerID);
+ accessor.addOffer(msgID, offerID);
}
public String getOffer(String msgID) {
- return accessor.getOffer(msgID);
+ return accessor.getOffer(msgID);
}
public void setCallback(Callback cb){
1.40 +57 -21 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.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- RMSender.java 7 May 2005 08:14:44 -0000 1.39
+++ RMSender.java 9 May 2005 03:45:26 -0000 1.40
@@ -32,15 +32,40 @@
import org.apache.sandesha.util.RMMessageCreator;
import org.apache.sandesha.ws.rm.RMHeaders;
+/**
+ * In the client side of axis there is a flexibility of using custom sender to send SOAP messages.
+ * However axis's use of senders are mainly to handle transport related funtionalites.
+ * <code>RMSender</code>has to be used by the users who wish to use WS-ReliableMessaging capability
+ * in their clients.<P>
+ * The main funtionality of <code>RMSender</code> is to insert the messages coming from client and
+ * also the generated messages to the <code>SandeshaQueue</code>.
+ * If the message coming in from the client is request/response in nature then <code>RMSender</code>
+ * will wait polling <code>SandeshaQueue</code> till it gets an appropriate response.
+ * Due to the above reason, if the client is sending several messages
+ * (of request/response in nature) to be sent reliably, they will be sent reliably by
+ * <b>Sandesha</b> however the client will wait at each message till it gets the response, to send
+ * the next. To avoid this client can use callbacks provided by axis
+ * in <code>org.apache.axis.client.async</code> package.
+ */
public class RMSender extends BasicHandler {
private IStorageManager storageManager;
private static final Log log = LogFactory.getLog(RMSender.class.getName());
private static final UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
+ /**
+ * This is the main method that is invoked by the axis engine. This method will add the reqest
+ * messages from the client to <code>SandeshaQueue</code> with the generated messages such as
+ * Create Sequence message and Terminate Sequence message.
+ *
+ * @param msgContext
+ * @throws AxisFault
+ */
+
public void invoke(MessageContext msgContext) throws AxisFault {
- //Initialize the storage manager. We are in the client side So initialize the client Storage Manager.
+ //Initialize the storage manager. We are in the client side So initialize the
+ //Client Storage Manager.
storageManager = new ClientStorageManager();
try {
@@ -56,19 +81,22 @@
}
if (reqMsgCtx.isLastMessage()) {
- storageManager.insertTerminateSeqMessage(RMMessageCreator.createTerminateSeqMsg(reqMsgCtx, Constants.CLIENT));
+ storageManager.insertTerminateSeqMessage(
+ RMMessageCreator.createTerminateSeqMsg(reqMsgCtx, Constants.CLIENT));
}
if (reqMsgCtx.isHasResponse()) {
RMMessageContext responseMessageContext = null;
while (responseMessageContext == null) {
- responseMessageContext = checkTheQueueForResponse(tempSeqID, reqMsgCtx.getMessageID());
+ responseMessageContext =
+ checkTheQueueForResponse(tempSeqID, reqMsgCtx.getMessageID());
Thread.sleep(Constants.CLIENT_RESPONSE_CHECKING_INTERVAL);
}
//We need these steps to filter all addressing and rm related headers.
Message resMsg = responseMessageContext.getMsgContext().getRequestMessage();
RMHeaders.removeHeaders(resMsg.getSOAPEnvelope());
- AddressingHeaders addHeaders = new AddressingHeaders(resMsg.getSOAPEnvelope(), null, true, false, false, null);
+ AddressingHeaders addHeaders = new AddressingHeaders(resMsg.getSOAPEnvelope(),
+ null, true, false, false, null);
msgContext.setResponseMessage(resMsg);
} else {
@@ -80,53 +108,61 @@
}
}
-
- private RMMessageContext processFirstRequestMessage(RMMessageContext reqRMMsgContext, boolean sync) throws Exception {
-
+ /**
+ * This method will process the first request message.
+ *
+ * @param reqRMMsgContext
+ * @param sync
+ * @return
+ * @throws Exception
+ */
+ private RMMessageContext processFirstRequestMessage(RMMessageContext reqRMMsgContext,
+ boolean sync) throws Exception {
String msgID = Constants.UUID + uuidGen.nextUUID();
String offerID = null;
if (reqRMMsgContext.isHasResponse()) {
offerID = Constants.UUID + uuidGen.nextUUID();
storageManager.addRequestedSequence(offerID);
- storageManager.addOffer(msgID,offerID);
+ storageManager.addOffer(msgID, offerID);
}
-
- RMMessageContext createSeqRMMsgContext = RMMessageCreator.createCreateSeqMsg(reqRMMsgContext, Constants.CLIENT, msgID, offerID);
+ RMMessageContext createSeqRMMsgContext = RMMessageCreator.createCreateSeqMsg(
+ reqRMMsgContext, Constants.CLIENT, msgID, offerID);
storageManager.addOutgoingSequence(reqRMMsgContext.getSequenceID());
- storageManager.setTemporaryOutSequence(reqRMMsgContext.getSequenceID(), createSeqRMMsgContext.getMessageID());
+ storageManager.setTemporaryOutSequence(reqRMMsgContext.getSequenceID(),
+ createSeqRMMsgContext.getMessageID());
createSeqRMMsgContext.setSync(sync);
storageManager.addCreateSequenceRequest(createSeqRMMsgContext);
- RMMessageContext serviceRequestMsg = RMMessageCreator.createServiceRequestMessage(reqRMMsgContext);
+ RMMessageContext serviceRequestMsg = RMMessageCreator.createServiceRequestMessage(
+ reqRMMsgContext);
processRequestMessage(serviceRequestMsg);
return reqRMMsgContext;
}
- private RMMessageContext processRequestMessage(RMMessageContext reqRMMsgContext) throws Exception {
- RMMessageContext serviceRequestMsg = RMMessageCreator.createServiceRequestMessage(reqRMMsgContext);
+ private RMMessageContext processRequestMessage(RMMessageContext reqRMMsgContext)
+ throws Exception {
+ RMMessageContext serviceRequestMsg = RMMessageCreator.createServiceRequestMessage(
+ reqRMMsgContext);
storageManager.insertOutgoingMessage(serviceRequestMsg);
return reqRMMsgContext;
}
-
- private boolean checkTheQueueForAck(String sequenceId, String reqMessageID) {
- return storageManager.checkForAcknowledgement(sequenceId, reqMessageID);
- }
-
private RMMessageContext checkTheQueueForResponse(String sequenceId, String reqMessageID) {
return storageManager.checkForResponseMessage(sequenceId, reqMessageID);
}
private RMMessageContext getRMMessageContext(MessageContext msgCtx) throws Exception {
- //Get a copy of the MessageContext. This is required when sending multiple messages from one call object
+ //Get a copy of the MessageContext. This is required when sending multiple messages from
+ //one call object
MessageContext newMsgContext = RMMessageCreator.cloneMsgContext(msgCtx);
RMMessageContext requestMesssageContext = new RMMessageContext();
Call call = (Call) newMsgContext.getProperty(MessageContext.CALL);
requestMesssageContext = ClientPropertyValidator.validate(call);
- requestMesssageContext.setOutGoingAddress((String) msgCtx.getProperty(MessageContext.TRANS_URL));
+ requestMesssageContext.setOutGoingAddress(
+ (String) msgCtx.getProperty(MessageContext.TRANS_URL));
requestMesssageContext.setMsgContext(newMsgContext);
return requestMesssageContext;
}
1.5 +6 -2 ws-fx/sandesha/src/org/apache/sandesha/client/RMService.java
Index: RMService.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/client/RMService.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- RMService.java 7 Mar 2005 05:34:34 -0000 1.4
+++ RMService.java 9 May 2005 03:45:26 -0000 1.5
@@ -16,8 +16,12 @@
*/
package org.apache.sandesha.client;
-
+/**
+ * This class is used as a web service in the client side.
+ * This is the <b>addressible endpoint<b> for Sandesha client side. All the "reply"
+ * messages coming from server should be addressed to this endpoint unless they are of the type
+ * anonymous.
+ */
public class RMService {
//The service is used as a dummy entity in the client side only.
-
}