jaliya 2005/02/17 22:57:18
Modified: sandesha/src/org/apache/sandesha Constants.java
sandesha/src/org/apache/sandesha/server
MessageValidator.java
sandesha/src/org/apache/sandesha/server/msgprocessors
AcknowledgementProcessor.java
CompositeProcessor.java
CreateSequenceProcessor.java
CreateSequenceResponseProcessor.java
FaultProcessor.java IRMMessageProcessor.java
ReTransmissionProcessor.java
TerminateSequenceProcessor.java
sandesha/src/org/apache/sandesha/ws/rm AckRequested.java
CreateSequence.java MessageNumber.java
RMHeaders.java Sequence.java
sandesha/src/org/apache/sandesha/ws/rm/providers
RMProvider.java
Removed: sandesha/src/org/apache/sandesha/server
IRMMessageProcessor.java
Log:
Modified code to handle wsrmFaults
Revision Changes Path
1.25 +11 -2 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.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Constants.java 16 Feb 2005 04:21:20 -0000 1.24
+++ Constants.java 18 Feb 2005 06:57:17 -0000 1.25
@@ -272,15 +272,24 @@
public static final String NO_RM_HEADES="No RM Headers Available in
this Message";
- public static final String UNKNOWN_SEQUENCE="Sequence Does Not
Exist";
+ public static final String UNKNOWN_SEQUENCE="The value of
wsrm:Identifier is not a known Sequence identifier.";
+ public static final String MSG_NO_ROLLOVER="The maximum value for
wsrm:MessageNumber has been exceeded.";
+
}
public interface FaultCodes {
+ public static final String
WSRM_SERVER_INTERNAL_ERROR="ServerInternalError";
+
+
public static final String IN_CORRECT_MESSAGE = "Incorrect Message";
- public static final String WSRM_FAULT_UNKNOWN_SEQUENCE="Unknown
Sequence";
+ public static final String
WSRM_FAULT_UNKNOWN_SEQUENCE="wsrm:UnknownSequence";
+ public static final String
WSRM_FAULT_MSG_NO_ROLLOVER="wsrm:MessageNumberRollover";
}
+ public static final double MAX_MSG_NO=18446744073709551615d;
+
+
}
1.4 +10 -1
ws-fx/sandesha/src/org/apache/sandesha/server/MessageValidator.java
Index: MessageValidator.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/MessageValidator.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MessageValidator.java 16 Feb 2005 11:37:29 -0000 1.3
+++ MessageValidator.java 18 Feb 2005 06:57:17 -0000 1.4
@@ -39,6 +39,7 @@
validateForFaults(rmMsgContext);
} catch (SOAPException e) {
e.printStackTrace();
+ //TODO Do we need to throw a Sequence Fault at this level.
}
}
@@ -68,10 +69,18 @@
if (sequence != null) {
if
(!storageMgr.isSequenceExist(sequence.getIdentifier().getIdentifier()))
throw new AxisFault(new
QName(Constants.FaultCodes.WSRM_FAULT_UNKNOWN_SEQUENCE),
Constants.FaultMessages.UNKNOWN_SEQUENCE, null, null);
-
+
+ }
+
+ if (rmHeaders.getSequenceAcknowledgement() != null) {
+ // if
(!storageMgr.isSequenceExist(sequence.getIdentifier().getIdentifier()))
+ // throw new AxisFault(new
QName(Constants.FaultCodes.WSRM_FAULT_UNKNOWN_SEQUENCE),
Constants.FaultMessages.UNKNOWN_SEQUENCE, null, null);
+
}
+
+
}
private static void validateAddrHeaders(AddressingHeaders addrHeaders)
throws AxisFault {
1.2 +8 -5
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/AcknowledgementProcessor.java
Index: AcknowledgementProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/AcknowledgementProcessor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AcknowledgementProcessor.java 16 Feb 2005 05:07:16 -0000 1.1
+++ AcknowledgementProcessor.java 18 Feb 2005 06:57:17 -0000 1.2
@@ -18,9 +18,11 @@
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
+import org.apache.axis.AxisFault;
import org.apache.sandesha.*;
import org.apache.sandesha.ws.rm.AcknowledgementRange;
import org.apache.sandesha.ws.rm.SequenceAcknowledgement;
+import org.apache.xml.utils.QName;
import javax.xml.soap.SOAPEnvelope;
import java.util.Iterator;
@@ -38,7 +40,7 @@
this.storageManger = storageManger;
}
- public final boolean processMessage(RMMessageContext rmMessageContext)
throws RMException {
+ public final boolean processMessage(RMMessageContext rmMessageContext)
throws AxisFault {
SequenceAcknowledgement seqAcknowledgement = rmMessageContext
.getRMHeaders().getSequenceAcknowledgement();
String seqID = seqAcknowledgement.getIdentifier().getIdentifier();
@@ -59,7 +61,7 @@
}
- public boolean sendAcknowledgement(RMMessageContext rmMessageContext)
throws RMException {
+ public boolean sendAcknowledgement(RMMessageContext rmMessageContext)
throws AxisFault {
//EnvelopCreater createAcknowledgement
//if async then add message to the queue
//else set the response env of the messageContext.
@@ -99,11 +101,12 @@
//The original message context is used to send the ack
// asynchronously to the client.
//So the response message is replaced by the new ack message.
- try {
+ try{
String soapMsg =
rmMsgContext.getMsgContext().getResponseMessage().getSOAPPartAsString();
rmMessageContext.getMsgContext().setResponseMessage(new
Message(soapMsg));
- } catch (Exception e) {
- throw new RMException(e.getLocalizedMessage());
+ }catch(AxisFault af){
+
af.setFaultCodeAsString(Constants.FaultCodes.WSRM_SERVER_INTERNAL_ERROR);
+ throw af;
}
return true;
1.2 +2 -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.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CompositeProcessor.java 16 Feb 2005 05:07:16 -0000 1.1
+++ CompositeProcessor.java 18 Feb 2005 06:57:17 -0000 1.2
@@ -18,6 +18,7 @@
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
+import org.apache.axis.AxisFault;
import org.apache.sandesha.Constants;
import org.apache.sandesha.IStorageManager;
import org.apache.sandesha.RMException;
@@ -35,7 +36,7 @@
this.storageManger = storageManger;
}
- public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException {
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault {
//if the message is and Ack then process the ack
//if the message has a body then insert it to the queue
1.3 +7 -1
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceProcessor.java
Index: CreateSequenceProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceProcessor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CreateSequenceProcessor.java 16 Feb 2005 11:39:03 -0000 1.2
+++ CreateSequenceProcessor.java 18 Feb 2005 06:57:17 -0000 1.3
@@ -18,6 +18,7 @@
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
+import org.apache.axis.AxisFault;
import org.apache.axis.components.uuid.UUIDGen;
import org.apache.axis.components.uuid.UUIDGenFactory;
import org.apache.axis.message.SOAPEnvelope;
@@ -40,7 +41,7 @@
this.storageManager = storageManager;
}
- public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException {
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault {
AddressingHeaders addrHeaders =
rmMessageContext.getAddressingHeaders();
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
@@ -50,6 +51,11 @@
else
rmMessageContext.setSync(false);
+ //TODO This should be sent by looking at the offer and the rest
+ //wsrm:CreateSequenceRefused
+ if(rmHeaders.getCreateSequence()!=null)
+ throw new AxisFault();
+
/*
* We may let the user to decide on the UUID generation process. If
* the user specify a method or service for generating UUIDs then
1.2 +2 -1
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceResponseProcessor.java
Index: CreateSequenceResponseProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/CreateSequenceResponseProcessor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- CreateSequenceResponseProcessor.java 16 Feb 2005 05:07:16 -0000
1.1
+++ CreateSequenceResponseProcessor.java 18 Feb 2005 06:57:17 -0000
1.2
@@ -17,6 +17,7 @@
package org.apache.sandesha.server.msgprocessors;
import org.apache.axis.message.addressing.RelatesTo;
+import org.apache.axis.AxisFault;
import org.apache.sandesha.IStorageManager;
import org.apache.sandesha.RMException;
import org.apache.sandesha.RMMessageContext;
@@ -32,7 +33,7 @@
this.storageManager = storageManger;
}
- public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException {
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault {
CreateSequenceResponse createSeqRes = rmMessageContext.getRMHeaders()
.getCreateSequenceResponse();
1.2 +1 -1
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/FaultProcessor.java
Index: FaultProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/FaultProcessor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- FaultProcessor.java 16 Feb 2005 05:07:16 -0000 1.1
+++ FaultProcessor.java 18 Feb 2005 06:57:17 -0000 1.2
@@ -53,7 +53,7 @@
*
* @see
org.apache.sandesha.server.msgprocessors.IRMMessageProcessor#processMessage(org.apache.sandesha.RMMessageContext)
*/
- public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException {
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault {
//Check the fault type.
//Create the fault envelop
1.2 +2 -2
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/IRMMessageProcessor.java
Index: IRMMessageProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/IRMMessageProcessor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- IRMMessageProcessor.java 16 Feb 2005 05:07:16 -0000 1.1
+++ IRMMessageProcessor.java 18 Feb 2005 06:57:17 -0000 1.2
@@ -18,6 +18,7 @@
import org.apache.sandesha.RMException;
import org.apache.sandesha.RMMessageContext;
+import org.apache.axis.AxisFault;
/**
* @author
@@ -25,7 +26,6 @@
public interface IRMMessageProcessor {
//Returns true if the message has a synchronous response or ack.
- public boolean processMessage(RMMessageContext rmMessageContext)
- throws RMException;
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault;
}
\ No newline at end of file
1.2 +2 -1
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/ReTransmissionProcessor.java
Index: ReTransmissionProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/ReTransmissionProcessor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ReTransmissionProcessor.java 16 Feb 2005 05:07:16 -0000 1.1
+++ ReTransmissionProcessor.java 18 Feb 2005 06:57:17 -0000 1.2
@@ -18,6 +18,7 @@
import org.apache.sandesha.RMException;
import org.apache.sandesha.RMMessageContext;
+import org.apache.axis.AxisFault;
/**
* @author
@@ -29,7 +30,7 @@
*
* @see
org.apache.sandesha.server.RMMessageProcessor#processMessage(org.apache.sandesha.RMMessageContext)
*/
- public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException {
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault {
// TODO Auto-generated method stub
return false;
}
1.2 +2 -1
ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/TerminateSequenceProcessor.java
Index: TerminateSequenceProcessor.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/msgprocessors/TerminateSequenceProcessor.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TerminateSequenceProcessor.java 16 Feb 2005 05:07:16 -0000 1.1
+++ TerminateSequenceProcessor.java 18 Feb 2005 06:57:17 -0000 1.2
@@ -20,6 +20,7 @@
import org.apache.sandesha.RMException;
import org.apache.sandesha.RMMessageContext;
import org.apache.sandesha.ws.rm.TerminateSequence;
+import org.apache.axis.AxisFault;
/**
* @author
@@ -32,7 +33,7 @@
this.storageManger = storageManger;
}
- public boolean processMessage(RMMessageContext rmMessageContext) throws
RMException {
+ public boolean processMessage(RMMessageContext rmMessageContext) throws
AxisFault {
TerminateSequence terminateSeq =
rmMessageContext.getRMHeaders().getTerminateSequence();
1.13 +2 -1
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/AckRequested.java
Index: AckRequested.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/AckRequested.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- AckRequested.java 16 Feb 2005 04:21:21 -0000 1.12
+++ AckRequested.java 18 Feb 2005 06:57:18 -0000 1.13
@@ -20,6 +20,7 @@
import org.apache.axis.message.MessageElement;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.SOAPHeaderElement;
+import org.apache.axis.AxisFault;
import org.apache.sandesha.Constants;
import org.apache.sandesha.ws.utility.Identifier;
@@ -127,7 +128,7 @@
* @param headerElement
* @return AckRequested
*/
- public AckRequested fromSOAPEnveploe(SOAPHeaderElement headerElement) {
+ public AckRequested fromSOAPEnveploe(SOAPHeaderElement headerElement)
throws AxisFault{
Iterator iterator = headerElement.getChildElements();
MessageElement childElement;
1.12 +2 -4
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequence.java
Index: CreateSequence.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequence.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- CreateSequence.java 16 Feb 2005 04:21:21 -0000 1.11
+++ CreateSequence.java 18 Feb 2005 06:57:18 -0000 1.12
@@ -80,10 +80,8 @@
env.addBody();
}
- Name name = env.createName("", Constants.NS_PREFIX_RM,
- Constants.NS_URI_RM);
- SOAPBodyElement bodyElement = (SOAPBodyElement) env.getBody()
- .addBodyElement(name);
+ Name name = env.createName("", Constants.NS_PREFIX_RM,
Constants.NS_URI_RM);
+ SOAPBodyElement bodyElement = (SOAPBodyElement) env.getBody()
.addBodyElement(name);
bodyElement.setName("CreateSequence");
1.10 +7 -3
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/MessageNumber.java
Index: MessageNumber.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/MessageNumber.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- MessageNumber.java 16 Feb 2005 04:21:21 -0000 1.9
+++ MessageNumber.java 18 Feb 2005 06:57:18 -0000 1.10
@@ -18,9 +18,11 @@
package org.apache.sandesha.ws.rm;
import org.apache.axis.message.MessageElement;
+import org.apache.axis.AxisFault;
import org.apache.sandesha.Constants;
import javax.xml.soap.SOAPException;
+import javax.xml.namespace.QName;
/**
* class MessageNumber
@@ -76,7 +78,6 @@
// create the soap element for the message no
messageNoElement.addTextNode((new Long(messageNumber)).toString());
-
return messageNoElement;
}
@@ -86,10 +87,13 @@
* @param element
* @return MessageNumber
*/
- public MessageNumber fromSOAPEnvelope(MessageElement element) {
+ public MessageNumber fromSOAPEnvelope(MessageElement element) throws
AxisFault{
- messageNumber = (new Long(element.getValue())).longValue();
+ double tempMsgNo=(new Double(element.getValue())).doubleValue();
+ if(tempMsgNo>=Constants.MAX_MSG_NO)
+ throw new AxisFault(new
QName(Constants.FaultCodes.WSRM_FAULT_MSG_NO_ROLLOVER),
Constants.FaultMessages.MSG_NO_ROLLOVER, null, null);
+ messageNumber = (new Long(element.getValue())).longValue();
return this;
}
1.11 +2 -3
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/RMHeaders.java
Index: RMHeaders.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/RMHeaders.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- RMHeaders.java 16 Feb 2005 04:21:21 -0000 1.10
+++ RMHeaders.java 18 Feb 2005 06:57:18 -0000 1.11
@@ -108,10 +108,9 @@
* @param env
* @return RMHeaders
* @throws AxisFault
- * @throws SOAPException
*/
- public RMHeaders fromSOAPEnvelope(SOAPEnvelope env) throws AxisFault,
- SOAPException {
+ public RMHeaders fromSOAPEnvelope(SOAPEnvelope env) throws
SOAPException,AxisFault
+ {
if (env != null) {
Iterator iterator = env.getHeaders().iterator();
1.11 +2 -1
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Sequence.java
Index: Sequence.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Sequence.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Sequence.java 16 Feb 2005 04:21:21 -0000 1.10
+++ Sequence.java 18 Feb 2005 06:57:18 -0000 1.11
@@ -20,6 +20,7 @@
import org.apache.axis.message.MessageElement;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.message.SOAPHeaderElement;
+import org.apache.axis.AxisFault;
import org.apache.sandesha.Constants;
import org.apache.sandesha.ws.utility.Identifier;
@@ -130,7 +131,7 @@
* @param headerElement
* @return Sequence
*/
- public Sequence fromSOAPEnveploe(SOAPHeaderElement headerElement) {
+ public Sequence fromSOAPEnveploe(SOAPHeaderElement headerElement) throws
AxisFault{
Iterator iterator = headerElement.getChildElements();
MessageElement childElement;
1.31 +10 -3
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java
Index: RMProvider.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/providers/RMProvider.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- RMProvider.java 16 Feb 2005 11:36:07 -0000 1.30
+++ RMProvider.java 18 Feb 2005 06:57:18 -0000 1.31
@@ -94,9 +94,16 @@
if (!rmMessageProcessor.processMessage(rmMessageContext)) {
msgContext.setResponseMessage(null);
}
- } catch (RMException rmEx) {
- rmEx.printStackTrace();
- RMProvider.log.error(rmEx);
+ } catch (AxisFault af) {
+ RMProvider.log.error(af);
+
+ FaultProcessor faultProcessor = new
FaultProcessor(storageManager, af);
+
+ if (!faultProcessor.processMessage(rmMessageContext)) {
+ msgContext.setResponseMessage(null);
+ return;
+ }
+ return;
}
SandeshaQueue sq = SandeshaQueue.getInstance();