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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]