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 ch...@apache.org on 2005/11/02 09:29:21 UTC
svn commit: r330211 - in
/webservices/sandesha/trunk/src/org/apache/sandesha2:
SandeshaException.java handlers/SandeshaGlobalInHandler.java
handlers/SandeshaInHandler.java handlers/SandeshaOutHandler.java
workers/Sender.java
Author: chamikara
Date: Wed Nov 2 00:28:54 2005
New Revision: 330211
URL: http://svn.apache.org/viewcvs?rev=330211&view=rev
Log:
Modified SandeshaException to extend AxisFault.
Modified:
webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java?rev=330211&r1=330210&r2=330211&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java Wed Nov 2 00:28:54 2005
@@ -17,13 +17,15 @@
package org.apache.sandesha2;
+import org.apache.axis2.AxisFault;
+
/**
* @author Chamikara
* @author Sanka
*/
//FIXME - extends AxisFault and clean code (remove unnecessary try-catches )
-public class SandeshaException extends Exception {
+public class SandeshaException extends AxisFault {
public SandeshaException (String message) {
super (message);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?rev=330211&r1=330210&r2=330211&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java Wed Nov 2 00:28:54 2005
@@ -50,110 +50,126 @@
public class SandeshaGlobalInHandler extends AbstractHandler {
public void invoke(MessageContext msgContext) throws AxisFault {
-
-
- try {
- RMMsgContext rmMessageContext = MsgInitializer
- .initializeMessage(msgContext);
-
- ConfigurationContext context = rmMessageContext.getMessageContext().getSystemContext();
-
- Object debug = context.getProperty(Constants.SANDESHA_DEBUG_MODE);
- if (debug!=null && "on".equals(debug)) {
- System.out.println("DEBUG: SandeshaGlobalInHandler got a '" + SandeshaUtil.getMessageTypeString(rmMessageContext.getMessageType())+ "' message.");
- }
-
- //Dropping duplicates
- boolean dropped = dropIfDuplicate (rmMessageContext);
- if (dropped) {
- if (debug!=null && "on".equals(debug)) {
- System.out.println("DEBUG: SandeshaGlobalInHandler DROPPED a '" + SandeshaUtil.getMessageTypeString(rmMessageContext.getMessageType())+ "' message.");
- }
-
- processDroppedMessage (rmMessageContext);
- return;
- }
-
- //Process if global processing possible. - Currently none
- if (SandeshaUtil.isGloballyProcessableMessageType(rmMessageContext
- .getMessageType())) {
- doGlobalProcessing (rmMessageContext);
+
+ RMMsgContext rmMessageContext = MsgInitializer
+ .initializeMessage(msgContext);
+
+ ConfigurationContext context = rmMessageContext.getMessageContext()
+ .getSystemContext();
+
+ Object debug = context.getProperty(Constants.SANDESHA_DEBUG_MODE);
+ if (debug != null && "on".equals(debug)) {
+ System.out.println("DEBUG: SandeshaGlobalInHandler got a '"
+ + SandeshaUtil.getMessageTypeString(rmMessageContext
+ .getMessageType()) + "' message.");
+ }
+
+ //Dropping duplicates
+ boolean dropped = dropIfDuplicate(rmMessageContext);
+ if (dropped) {
+ if (debug != null && "on".equals(debug)) {
+ System.out.println("DEBUG: SandeshaGlobalInHandler DROPPED a '"
+ + SandeshaUtil.getMessageTypeString(rmMessageContext
+ .getMessageType()) + "' message.");
}
- } catch (SandeshaException e) {
- throw new AxisFault(e.getMessage());
+ processDroppedMessage(rmMessageContext);
+ return;
+ }
+
+ //Process if global processing possible. - Currently none
+ if (SandeshaUtil.isGloballyProcessableMessageType(rmMessageContext
+ .getMessageType())) {
+ doGlobalProcessing(rmMessageContext);
}
}
-
- private boolean dropIfDuplicate (RMMsgContext rmMsgContext) throws SandeshaException {
-
+
+ private boolean dropIfDuplicate(RMMsgContext rmMsgContext)
+ throws SandeshaException {
+
boolean drop = false;
-
- if (rmMsgContext.getMessageType()==Constants.MessageTypes.APPLICATION) {
- Sequence sequence = (Sequence) rmMsgContext.getMessagePart(Constants.MessageParts.SEQUENCE);
+
+ if (rmMsgContext.getMessageType() == Constants.MessageTypes.APPLICATION) {
+ Sequence sequence = (Sequence) rmMsgContext
+ .getMessagePart(Constants.MessageParts.SEQUENCE);
String sequenceId = null;
-
- if (sequence!=null) {
+
+ if (sequence != null) {
sequenceId = sequence.getIdentifier().getIdentifier();
}
-
+
long msgNo = sequence.getMessageNumber().getMessageNumber();
-
- if (sequenceId!=null && msgNo>0) {
- StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(rmMsgContext.getMessageContext().getSystemContext());
- SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
- SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(sequenceId,Constants.SequenceProperties.RECEIVED_MESSAGES);
- if (receivedMsgsBean!=null) {
- String receivedMsgStr = (String) receivedMsgsBean.getValue();
- ArrayList msgNoArrList = SandeshaUtil.getSplittedMsgNoArraylist(receivedMsgStr);
-
- if (msgNoArrList.contains(new Long (msgNo).toString())){
+
+ if (sequenceId != null && msgNo > 0) {
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(rmMsgContext
+ .getMessageContext().getSystemContext());
+ SequencePropertyBeanMgr seqPropMgr = storageManager
+ .getSequencePropretyBeanMgr();
+ SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(
+ sequenceId,
+ Constants.SequenceProperties.RECEIVED_MESSAGES);
+ if (receivedMsgsBean != null) {
+ String receivedMsgStr = (String) receivedMsgsBean
+ .getValue();
+ ArrayList msgNoArrList = SandeshaUtil
+ .getSplittedMsgNoArraylist(receivedMsgStr);
+
+ if (msgNoArrList.contains(new Long(msgNo).toString())) {
drop = true;
}
}
}
}
-
+
if (drop) {
rmMsgContext.getMessageContext().setPausedTrue(getName());
return true;
}
-
+
return false;
}
-
- private void processDroppedMessage (RMMsgContext rmMsgContext) throws SandeshaException {
- if (rmMsgContext.getMessageType()==Constants.MessageTypes.APPLICATION) {
- Sequence sequence = (Sequence) rmMsgContext.getMessagePart(Constants.MessageParts.SEQUENCE);
+
+ private void processDroppedMessage(RMMsgContext rmMsgContext)
+ throws SandeshaException {
+ if (rmMsgContext.getMessageType() == Constants.MessageTypes.APPLICATION) {
+ Sequence sequence = (Sequence) rmMsgContext
+ .getMessagePart(Constants.MessageParts.SEQUENCE);
String sequenceId = null;
-
- if (sequence!=null) {
+
+ if (sequence != null) {
sequenceId = sequence.getIdentifier().getIdentifier();
}
-
- StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(rmMsgContext.getMessageContext().getSystemContext());
- SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
- SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(sequenceId,Constants.SequenceProperties.RECEIVED_MESSAGES);
+
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(rmMsgContext.getMessageContext()
+ .getSystemContext());
+ SequencePropertyBeanMgr seqPropMgr = storageManager
+ .getSequencePropretyBeanMgr();
+ SequencePropertyBean receivedMsgsBean = seqPropMgr.retrieve(
+ sequenceId, Constants.SequenceProperties.RECEIVED_MESSAGES);
String receivedMsgStr = (String) receivedMsgsBean.getValue();
-
- ApplicationMsgProcessor ackProcessor = new ApplicationMsgProcessor ();
- //Even though the duplicate message is dropped, hv to send the ack if needed.
- ackProcessor.sendAckIfNeeded(rmMsgContext,receivedMsgStr);
+ ApplicationMsgProcessor ackProcessor = new ApplicationMsgProcessor();
+ //Even though the duplicate message is dropped, hv to send the ack
+ // if needed.
+ ackProcessor.sendAckIfNeeded(rmMsgContext, receivedMsgStr);
}
}
-
- private void doGlobalProcessing (RMMsgContext rmMsgCtx) throws SandeshaException {
+
+ private void doGlobalProcessing(RMMsgContext rmMsgCtx)
+ throws SandeshaException {
switch (rmMsgCtx.getMessageType()) {
case Constants.MessageTypes.ACK:
- rmMsgCtx.setRelatesTo(null); //Removing the relatesTo part from ackMessageIf present.
- //Some Frameworks tend to send this.
+ rmMsgCtx.setRelatesTo(null); //Removing the relatesTo part from
+ // ackMessageIf present.
+ //Some Frameworks tend to send this.
}
}
-
- public QName getName () {
- return new QName (Constants.GLOBAL_IN_HANDLER_NAME);
+
+ public QName getName() {
+ return new QName(Constants.GLOBAL_IN_HANDLER_NAME);
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?rev=330211&r1=330210&r2=330211&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java Wed Nov 2 00:28:54 2005
@@ -58,41 +58,43 @@
public void invoke(MessageContext msgCtx) throws AxisFault {
ConfigurationContext context = msgCtx.getSystemContext();
- if (context==null)
- throw new AxisFault ("ConfigurationContext is null");
-
+ if (context == null)
+ throw new AxisFault("ConfigurationContext is null");
+
AxisService axisService = msgCtx.getAxisService();
- if (axisService==null)
- throw new AxisFault ("AxisService is null");
-
- Parameter keyParam = axisService.getParameter (Constants.RM_ENABLE_KEY);
+ if (axisService == null)
+ throw new AxisFault("AxisService is null");
+
+ Parameter keyParam = axisService.getParameter(Constants.RM_ENABLE_KEY);
Object keyValue = null;
- if (keyParam!=null)
+ if (keyParam != null)
keyValue = keyParam.getValue();
-
- if (keyValue==null || !keyValue.equals("true")) {
+
+ if (keyValue == null || !keyValue.equals("true")) {
//RM is not enabled for the service. Quiting SandeshaInHandler
return;
}
-
+
RMMsgContext rmMsgCtx = null;
try {
rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
} catch (SandeshaException ex) {
throw new AxisFault("Cant initialize the message");
}
-
+
Object debug = context.getProperty(Constants.SANDESHA_DEBUG_MODE);
- if (debug!=null && "on".equals(debug)) {
- System.out.println("DEBUG: SandeshaInHandler got a '" + SandeshaUtil.getMessageTypeString(rmMsgCtx.getMessageType())+ "' message.");
+ if (debug != null && "on".equals(debug)) {
+ System.out.println("DEBUG: SandeshaInHandler got a '"
+ + SandeshaUtil.getMessageTypeString(rmMsgCtx
+ .getMessageType()) + "' message.");
}
MsgProcessor msgProcessor = MsgProcessorFactory
.getMessageProcessor(rmMsgCtx.getMessageType());
- if (msgProcessor==null)
- throw new AxisFault ("Cant find a suitable message processor");
-
+ if (msgProcessor == null)
+ throw new AxisFault("Cant find a suitable message processor");
+
try {
msgProcessor.processMessage(rmMsgCtx);
} catch (SandeshaException se) {
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?rev=330211&r1=330210&r2=330211&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Wed Nov 2 00:28:54 2005
@@ -68,50 +68,40 @@
public void invoke(MessageContext msgCtx) throws AxisFault {
-
-
-
ConfigurationContext context = msgCtx.getSystemContext();
- if (context==null)
- throw new AxisFault ("ConfigurationContext is null");
-
+ if (context == null)
+ throw new AxisFault("ConfigurationContext is null");
+
AxisService axisService = msgCtx.getAxisService();
- if (axisService==null)
- throw new AxisFault ("AxisService is null");
-
+ if (axisService == null)
+ throw new AxisFault("AxisService is null");
+
if (!msgCtx.isServerSide()) {
//getting rm message
RMMsgContext rmMsgCtx = null;
- try {
- rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
- } catch (SandeshaException ex) {
- throw new AxisFault("Cant initialize the message");
- }
-
- if ( rmMsgCtx.getMessageType()==Constants.MessageTypes.UNKNOWN) {
- Parameter param = new ParameterImpl(Constants.RM_ENABLE_KEY,"true");
+
+ rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
+
+ if (rmMsgCtx.getMessageType() == Constants.MessageTypes.UNKNOWN) {
+ Parameter param = new ParameterImpl(Constants.RM_ENABLE_KEY,
+ "true");
axisService.addParameter(param);
}
}
-
+
//getting rm message
- RMMsgContext rmMsgCtx = null;
- try {
- rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
- } catch (SandeshaException ex) {
- throw new AxisFault("Cant initialize the message");
- }
-
- Parameter keyParam = axisService.getParameter (Constants.RM_ENABLE_KEY);
+ RMMsgContext rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
+
+ Parameter keyParam = axisService.getParameter(Constants.RM_ENABLE_KEY);
Object keyValue = null;
- if (keyParam!=null)
+ if (keyParam != null)
keyValue = keyParam.getValue();
-
- if (keyValue==null || !keyValue.equals("true")) {
+
+ if (keyValue == null || !keyValue.equals("true")) {
//RM is not enabled for the service. Quiting SandeshaOutHandler
return;
}
-
+
String DONE = (String) msgCtx
.getProperty(Constants.APPLICATION_PROCESSING_DONE);
if (null != DONE && "true".equals(DONE))
@@ -120,11 +110,12 @@
msgCtx.setProperty(Constants.APPLICATION_PROCESSING_DONE, "true");
Object debug = context.getProperty(Constants.SANDESHA_DEBUG_MODE);
- if (debug!=null && "on".equals(debug)) {
- System.out.println("DEBUG: SandeshaOutHandler got a '" + SandeshaUtil.getMessageTypeString(rmMsgCtx.getMessageType())+ "' message.");
+ if (debug != null && "on".equals(debug)) {
+ System.out.println("DEBUG: SandeshaOutHandler got a '"
+ + SandeshaUtil.getMessageTypeString(rmMsgCtx
+ .getMessageType()) + "' message.");
}
-
-
+
//TODO recheck
//continue only if an possible application message
if (!(rmMsgCtx.getMessageType() == Constants.MessageTypes.UNKNOWN)) {
@@ -134,22 +125,17 @@
//Strating the sender.
SandeshaUtil.startSenderIfStopped(context);
- StorageManager storageManager = null;
-
- try {
- storageManager = SandeshaUtil.getSandeshaStorageManager(context);
- } catch (SandeshaException e2) {
- throw new AxisFault (e2.getMessage());
- }
-
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(context);
+
CreateSeqBeanMgr createSeqMgr = storageManager.getCreateSeqBeanMgr();
- SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
-
+ SequencePropertyBeanMgr seqPropMgr = storageManager
+ .getSequencePropretyBeanMgr();
+
boolean serverSide = msgCtx.isServerSide();
-
//setting message Id if null
- if (msgCtx.getMessageID()==null){
+ if (msgCtx.getMessageID() == null) {
msgCtx.setMessageID(SandeshaUtil.getUUID());
}
//initial work
@@ -161,30 +147,23 @@
//server side - sequenceId if the incoming sequence
//client side - xxxxxxxxx
if (serverSide) {
- try {
- //getting the request message and rmMessage.
- MessageContext reqMsgCtx = msgCtx
- .getOperationContext()
- .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ //getting the request message and rmMessage.
+ MessageContext reqMsgCtx = msgCtx.getOperationContext()
+ .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- RMMsgContext requestRMMsgCtx = MsgInitializer
- .initializeMessage(reqMsgCtx);
+ RMMsgContext requestRMMsgCtx = MsgInitializer
+ .initializeMessage(reqMsgCtx);
- Sequence reqSequence = (Sequence) requestRMMsgCtx
- .getMessagePart(Constants.MessageParts.SEQUENCE);
- if (reqSequence == null)
- throw new SandeshaException("Sequence part is null");
-
- String incomingSeqId = reqSequence.getIdentifier()
- .getIdentifier();
- if (incomingSeqId == null || incomingSeqId == "")
- throw new SandeshaException("Invalid seqence Id");
+ Sequence reqSequence = (Sequence) requestRMMsgCtx
+ .getMessagePart(Constants.MessageParts.SEQUENCE);
+ if (reqSequence == null)
+ throw new SandeshaException("Sequence part is null");
- tempSequenceId = incomingSeqId;
+ String incomingSeqId = reqSequence.getIdentifier().getIdentifier();
+ if (incomingSeqId == null || incomingSeqId == "")
+ throw new SandeshaException("Invalid seqence Id");
- } catch (SandeshaException e1) {
- throw new AxisFault(e1.getMessage());
- }
+ tempSequenceId = incomingSeqId;
} else {
//set the temp sequence id for the client side.
@@ -217,11 +196,7 @@
//if fist message - setup the sequence for the client side
if (!serverSide && sendCreateSequence) {
- try {
- SequenceManager.setupNewClientSequence(msgCtx, tempSequenceId);
- } catch (SandeshaException e1) {
- throw new AxisFault(e1.getMessage());
- }
+ SequenceManager.setupNewClientSequence(msgCtx, tempSequenceId);
}
//if first message - add create sequence
@@ -238,158 +213,155 @@
"true");
seqPropMgr.insert(responseCreateSeqAdded);
- try {
- String acksTo = (String) context
- .getProperty(Constants.AcksTo);
-
- //If acksTo is not anonymous. Start the listner TODO: verify
- if (!Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo) && !serverSide) {
- String transportIn = (String) context.getProperty(MessageContext.TRANSPORT_IN);
- if (transportIn==null)
- transportIn = org.apache.axis2.Constants.TRANSPORT_HTTP;
- ListenerManager.makeSureStarted(transportIn,context);
- }else if (acksTo==null && serverSide) {
- String incomingSequencId = SandeshaUtil.getServerSideIncomingSeqIdFromInternalSeqId(tempSequenceId);
- SequencePropertyBean bean = seqPropMgr.retrieve(incomingSequencId,Constants.SequenceProperties.REPLY_TO_EPR);
- if (bean!=null) {
- EndpointReference acksToEPR = (EndpointReference) bean.getValue();
- if (acksToEPR!=null)
- acksTo = (String) acksToEPR.getAddress();
- }
+ String acksTo = (String) context.getProperty(Constants.AcksTo);
+
+ //If acksTo is not anonymous. Start the listner TODO: verify
+ if (!Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo)
+ && !serverSide) {
+ String transportIn = (String) context
+ .getProperty(MessageContext.TRANSPORT_IN);
+ if (transportIn == null)
+ transportIn = org.apache.axis2.Constants.TRANSPORT_HTTP;
+ ListenerManager.makeSureStarted(transportIn, context);
+ } else if (acksTo == null && serverSide) {
+ String incomingSequencId = SandeshaUtil
+ .getServerSideIncomingSeqIdFromInternalSeqId(tempSequenceId);
+ SequencePropertyBean bean = seqPropMgr.retrieve(
+ incomingSequencId,
+ Constants.SequenceProperties.REPLY_TO_EPR);
+ if (bean != null) {
+ EndpointReference acksToEPR = (EndpointReference) bean
+ .getValue();
+ if (acksToEPR != null)
+ acksTo = (String) acksToEPR.getAddress();
}
-
- addCreateSequenceMessage(rmMsgCtx, tempSequenceId, acksTo);
- } catch (SandeshaException e1) {
- throw new AxisFault(e1.getMessage());
}
+
+ addCreateSequenceMessage(rmMsgCtx, tempSequenceId, acksTo);
+
}
}
//do response processing
- try {
- SOAPEnvelope env = rmMsgCtx.getSOAPEnvelope();
- if (env == null) {
- SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(
- Constants.SOAPVersion.DEFAULT).getDefaultEnvelope();
- rmMsgCtx.setSOAPEnvelop(envelope);
- }
-
- SOAPBody soapBody = rmMsgCtx.getSOAPEnvelope().getBody();
- if (soapBody == null)
- throw new SandeshaException(
- "Invalid SOAP message. Body is not present");
-
- //TODO - Is this a correct way to find out validity of app.
- // messages.
- boolean validAppMessage = false;
- if (soapBody.getChildElements().hasNext())
- validAppMessage = true;
-
- if (validAppMessage) {
-
- //valid response
-
- //Changing message Id.
- //TODO remove this when Axis2 start sending uuids as uuid:xxxx
- String messageId1 = SandeshaUtil.getUUID();
- if (rmMsgCtx.getMessageId() == null) {
- rmMsgCtx.setMessageId(messageId1);
- }
- //OperationContext opCtx = msgCtx.getOperationContext();
- // msgCtx.getSystemContext().registerOperationContext(messageId,
- // opCtx);
-
- if (serverSide) {
-
- //FIXME - do not copy application messages. Coz u loose
- // properties etc.
- RMMsgContext newRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
- MessageContext newMsgCtx = newRMMsgCtx.getMessageContext();
-
- //setting contexts
- newMsgCtx.setServiceGroupContext(msgCtx
- .getServiceGroupContext());
- newMsgCtx.setServiceGroupContextId(msgCtx
- .getServiceGroupContextId());
- newMsgCtx.setServiceContext(msgCtx.getServiceContext());
- newMsgCtx.setServiceContextID(msgCtx.getServiceContextID());
- OperationContext newOpContext = new OperationContext(
- newMsgCtx.getAxisOperation());
-
- //if server side add request message
- if (msgCtx.isServerSide()) {
- MessageContext reqMsgCtx = msgCtx.getOperationContext()
- .getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- newOpContext.addMessageContext(reqMsgCtx);
- }
+ SOAPEnvelope env = rmMsgCtx.getSOAPEnvelope();
+ if (env == null) {
+ SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(
+ Constants.SOAPVersion.DEFAULT).getDefaultEnvelope();
+ rmMsgCtx.setSOAPEnvelop(envelope);
+ }
- newOpContext.addMessageContext(newMsgCtx);
- newMsgCtx.setOperationContext(newOpContext);
+ SOAPBody soapBody = rmMsgCtx.getSOAPEnvelope().getBody();
+ if (soapBody == null)
+ throw new SandeshaException(
+ "Invalid SOAP message. Body is not present");
- //Thid does not have to be processed again by RMHandlers
- newMsgCtx.setProperty(
- Constants.APPLICATION_PROCESSING_DONE, "true");
-
- //processing the response
- processResponseMessage(newRMMsgCtx, tempSequenceId,
- messageNumber);
+ //TODO - Is this a correct way to find out validity of app.
+ // messages.
+ boolean validAppMessage = false;
+ if (soapBody.getChildElements().hasNext())
+ validAppMessage = true;
+
+ if (validAppMessage) {
+
+ //valid response
+
+ //Changing message Id.
+ //TODO remove this when Axis2 start sending uuids as uuid:xxxx
+ String messageId1 = SandeshaUtil.getUUID();
+ if (rmMsgCtx.getMessageId() == null) {
+ rmMsgCtx.setMessageId(messageId1);
+ }
+ //OperationContext opCtx = msgCtx.getOperationContext();
+ // msgCtx.getSystemContext().registerOperationContext(messageId,
+ // opCtx);
+
+ if (serverSide) {
+
+ //FIXME - do not copy application messages. Coz u loose
+ // properties etc.
+ RMMsgContext newRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
+ MessageContext newMsgCtx = newRMMsgCtx.getMessageContext();
+
+ //setting contexts
+ newMsgCtx.setServiceGroupContext(msgCtx
+ .getServiceGroupContext());
+ newMsgCtx.setServiceGroupContextId(msgCtx
+ .getServiceGroupContextId());
+ newMsgCtx.setServiceContext(msgCtx.getServiceContext());
+ newMsgCtx.setServiceContextID(msgCtx.getServiceContextID());
+ OperationContext newOpContext = new OperationContext(newMsgCtx
+ .getAxisOperation());
+ //if server side add request message
+ if (msgCtx.isServerSide()) {
MessageContext reqMsgCtx = msgCtx.getOperationContext()
.getMessageContext(
WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- RMMsgContext requestRMMsgCtx = MsgInitializer
- .initializeMessage(reqMsgCtx);
+ newOpContext.addMessageContext(reqMsgCtx);
+ }
- //let the request end with 202 if a ack has not been
- // written in the incoming thread.
- if (reqMsgCtx.getProperty(Constants.ACK_WRITTEN) == null
- || !"true".equals(reqMsgCtx
- .getProperty(Constants.ACK_WRITTEN)))
- reqMsgCtx.getOperationContext().setProperty(
- org.apache.axis2.Constants.RESPONSE_WRITTEN,
- "false");
- } else {
-
- //setting reply to FIXME
- //msgCtx.setReplyTo(new EndpointReference
- // ("http://localhost:9070/somethingWorking"));
-
- //Setting WSA Action if null
- //TODO: Recheck weather this actions are correct
- EndpointReference toEPR = msgCtx.getTo();
-
- if (toEPR == null)
- throw new SandeshaException("To EPR is not found");
-
- String to = toEPR.getAddress();
- String operationName = msgCtx.getOperationContext()
- .getAxisOperation().getName()
- .getLocalPart();
-
- if (msgCtx.getWSAAction() == null) {
- msgCtx.setWSAAction(to + "/" + operationName);
- }
-
- if (msgCtx.getSoapAction()==null) {
- msgCtx.setSoapAction("\"" + to+"/" + operationName + "\"");
- }
+ newOpContext.addMessageContext(newMsgCtx);
+ newMsgCtx.setOperationContext(newOpContext);
+
+ //Thid does not have to be processed again by RMHandlers
+ newMsgCtx.setProperty(Constants.APPLICATION_PROCESSING_DONE,
+ "true");
+
+ //processing the response
+ processResponseMessage(newRMMsgCtx, tempSequenceId,
+ messageNumber);
+
+ MessageContext reqMsgCtx = msgCtx
+ .getOperationContext()
+ .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+ RMMsgContext requestRMMsgCtx = MsgInitializer
+ .initializeMessage(reqMsgCtx);
- //processing the response
- processResponseMessage(rmMsgCtx, tempSequenceId,
- messageNumber);
+ //let the request end with 202 if a ack has not been
+ // written in the incoming thread.
+ if (reqMsgCtx.getProperty(Constants.ACK_WRITTEN) == null
+ || !"true".equals(reqMsgCtx
+ .getProperty(Constants.ACK_WRITTEN)))
+ reqMsgCtx.getOperationContext().setProperty(
+ org.apache.axis2.Constants.RESPONSE_WRITTEN,
+ "false");
+ } else {
+
+ //setting reply to FIXME
+ //msgCtx.setReplyTo(new EndpointReference
+ // ("http://localhost:9070/somethingWorking"));
+
+ //Setting WSA Action if null
+ //TODO: Recheck weather this actions are correct
+ EndpointReference toEPR = msgCtx.getTo();
+
+ if (toEPR == null)
+ throw new SandeshaException("To EPR is not found");
+
+ String to = toEPR.getAddress();
+ String operationName = msgCtx.getOperationContext()
+ .getAxisOperation().getName().getLocalPart();
+ if (msgCtx.getWSAAction() == null) {
+ msgCtx.setWSAAction(to + "/" + operationName);
+ }
+ if (msgCtx.getSoapAction() == null) {
+ msgCtx
+ .setSoapAction("\"" + to + "/" + operationName
+ + "\"");
}
-
- //pausing the message
- msgCtx.setPausedTrue(getName());
+
+ //processing the response
+ processResponseMessage(rmMsgCtx, tempSequenceId, messageNumber);
+
}
- } catch (SandeshaException e) {
- throw new AxisFault(e.getMessage());
+ //pausing the message
+ msgCtx.setPausedTrue(getName());
}
+
}
public void addCreateSequenceMessage(RMMsgContext applicationRMMsg,
@@ -421,10 +393,13 @@
offeredSequenceBean.setSequenceId(tempSequenceId);
offeredSequenceBean.setValue(offeredSequenceId);
- StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(applicationMsg.getSystemContext());
-
- SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
-
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(applicationMsg
+ .getSystemContext());
+
+ SequencePropertyBeanMgr seqPropMgr = storageManager
+ .getSequencePropretyBeanMgr();
+
seqPropMgr.insert(msgsBean);
seqPropMgr.insert(offeredSequenceBean);
}
@@ -441,15 +416,17 @@
if (context == null)
throw new SandeshaException("Context is null");
- StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(applicationMsg.getSystemContext());
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(applicationMsg.getSystemContext());
CreateSeqBeanMgr createSeqMgr = storageManager.getCreateSeqBeanMgr();
-
+
CreateSeqBean createSeqBean = new CreateSeqBean(tempSequenceId,
createSeqMsg.getMessageID(), null);
createSeqMgr.insert(createSeqBean);
- RetransmitterBeanMgr retransmitterMgr = storageManager.getRetransmitterBeanMgr();
-
+ RetransmitterBeanMgr retransmitterMgr = storageManager
+ .getRetransmitterBeanMgr();
+
String key = SandeshaUtil.storeMessageContext(createSeqRMMessage
.getMessageContext());
RetransmitterBean createSeqEntry = new RetransmitterBean();
@@ -473,10 +450,13 @@
if (context == null)
throw new SandeshaException("Context is null");
- StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(msg.getSystemContext());
- SequencePropertyBeanMgr sequencePropertyMgr = storageManager.getSequencePropretyBeanMgr();
-
- RetransmitterBeanMgr retransmitterMgr = storageManager.getRetransmitterBeanMgr();
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(msg.getSystemContext());
+ SequencePropertyBeanMgr sequencePropertyMgr = storageManager
+ .getSequencePropretyBeanMgr();
+
+ RetransmitterBeanMgr retransmitterMgr = storageManager
+ .getRetransmitterBeanMgr();
SequencePropertyBean toBean = sequencePropertyMgr.retrieve(
tempSequenceId, Constants.SequenceProperties.TO_EPR);
@@ -611,18 +591,14 @@
}
private long getNextMsgNo(ConfigurationContext context,
- String tempSequenceId) {
+ String tempSequenceId) throws SandeshaException {
//FIXME set a correct message number.
-
- StorageManager storageManager = null;
-
- try {
- storageManager = SandeshaUtil.getSandeshaStorageManager(context);
- } catch (SandeshaException e) {
- e.printStackTrace();
- }
-
- SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
+
+ StorageManager storageManager = SandeshaUtil
+ .getSandeshaStorageManager(context);
+
+ SequencePropertyBeanMgr seqPropMgr = storageManager
+ .getSequencePropretyBeanMgr();
SequencePropertyBean nextMsgNoBean = seqPropMgr.retrieve(
tempSequenceId,
Constants.SequenceProperties.NEXT_MESSAGE_NUMBER);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java?rev=330211&r1=330210&r2=330211&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java Wed Nov 2 00:28:54 2005
@@ -87,14 +87,15 @@
}
StorageManager storageManager = null;
-
+
try {
- storageManager = SandeshaUtil.getSandeshaStorageManager(context);
+ storageManager = SandeshaUtil
+ .getSandeshaStorageManager(context);
} catch (SandeshaException e4) {
e4.printStackTrace();
return;
}
-
+
RetransmitterBeanMgr mgr = storageManager.getRetransmitterBeanMgr();
Collection coll = mgr.findMsgsToSend();
Iterator iter = coll.iterator();
@@ -109,20 +110,21 @@
.initializeMessage(msgCtx);
updateMessage(msgCtx);
- Object debug = context.getProperty(Constants.SANDESHA_DEBUG_MODE);
- if (debug!=null && "on".equals(debug)) {
- System.out.println("DEBUG: Sender is sending a '" + SandeshaUtil.getMessageTypeString(rmMsgCtx.getMessageType())+ "' message.");
+ Object debug = context
+ .getProperty(Constants.SANDESHA_DEBUG_MODE);
+ if (debug != null && "on".equals(debug)) {
+ System.out.println("DEBUG: Sender is sending a '"
+ + SandeshaUtil.getMessageTypeString(rmMsgCtx
+ .getMessageType()) + "' message.");
}
-
+
new AxisEngine(context).send(msgCtx);
-
+
//if (!msgCtx.isServerSide())
- checkForSyncResponses(msgCtx);
+ checkForSyncResponses(msgCtx);
} catch (AxisFault e1) {
e1.printStackTrace();
- } catch (SandeshaException e2) {
- e2.printStackTrace();
} catch (Exception e3) {
e3.printStackTrace();
}
@@ -205,33 +207,38 @@
//If request is REST we assume the response is REST, so set the
// variable
response.setDoingREST(msgCtx.isDoingREST());
- response.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+ response
+ .setServiceGroupContextId(msgCtx.getServiceGroupContextId());
response.setServiceGroupContext(msgCtx.getServiceGroupContext());
response.setServiceContext(msgCtx.getServiceContext());
- response.setAxisService (msgCtx.getAxisService());
+ response.setAxisService(msgCtx.getAxisService());
response.setAxisServiceGroup(msgCtx.getAxisServiceGroup());
-
+
//setting the in-flow.
- //ArrayList inPhaseHandlers = response.getAxisOperation().getRemainingPhasesInFlow();
- /*if (inPhaseHandlers==null || inPhaseHandlers.isEmpty()) {
- ArrayList phases = msgCtx.getSystemContext().getAxisConfiguration().getInPhasesUptoAndIncludingPostDispatch();
- response.getAxisOperation().setRemainingPhasesInFlow(phases);
- }*/
-
- //Changed following from TransportUtils to SandeshaUtil since op. context is anavailable.
+ //ArrayList inPhaseHandlers =
+ // response.getAxisOperation().getRemainingPhasesInFlow();
+ /*
+ * if (inPhaseHandlers==null || inPhaseHandlers.isEmpty()) {
+ * ArrayList phases =
+ * msgCtx.getSystemContext().getAxisConfiguration().getInPhasesUptoAndIncludingPostDispatch();
+ * response.getAxisOperation().setRemainingPhasesInFlow(phases); }
+ */
+
+ //Changed following from TransportUtils to SandeshaUtil since op.
+ // context is anavailable.
SOAPEnvelope resenvelope = null;
try {
- resenvelope = SandeshaUtil.createSOAPMessage(
- response, msgCtx.getEnvelope().getNamespace().getName());
+ resenvelope = SandeshaUtil.createSOAPMessage(response, msgCtx
+ .getEnvelope().getNamespace().getName());
} catch (AxisFault e) {
//TODO: change to log.debug
}
-
+
if (resenvelope != null) {
AxisEngine engine = new AxisEngine(msgCtx.getSystemContext());
response.setEnvelope(resenvelope);
engine.receive(response);
- }
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org