jaliya 2005/05/05 05:57:01
Modified: sandesha/src/org/apache/sandesha Constants.java
EnvelopeCreator.java
sandesha/src/org/apache/sandesha/client RMSender.java
sandesha/src/org/apache/sandesha/server
MessageValidator.java RMInvoker.java
sandesha/src/org/apache/sandesha/server/msgprocessors
CreateSequenceProcessor.java FaultProcessor.java
sandesha/src/org/apache/sandesha/util RMMessageCreator.java
sandesha/src/org/apache/sandesha/ws/rm
CreateSequenceResponse.java RMHeaders.java
sandesha/src/org/apache/sandesha/ws/rm/providers
RMProvider.java
Log:
Added the capability to send <wsrm:Accept> when a sequence is offered
Revision Changes Path
1.43 +4 -0 ws-fx/sandesha/src/org/apache/sandesha/Constants.java
Index: Constants.java
===================================================================
RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/Constants.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- Constants.java 2 May 2005 04:17:09 -0000 1.42
+++ Constants.java 5 May 2005 12:57:01 -0000 1.43
@@ -39,6 +39,7 @@
public static final String URL_RM_SERVICE = "/axis/services/RMService";
public static final String IGNORE_ACTION = "ignoreAction";
+ public static final String RESPONSE="Response";
public static final long RETRANSMISSION_INTERVAL = 4000;
public static final long ACKNOWLEDGEMENT_INTERVAL = 200;
@@ -94,6 +95,7 @@
public static final String SEQUENCE_FAULT = "SequenceFault";
public static final String ACKS_TO = "AcksTo";
public static final String SEQUENCE_OFFER = "Offer";
+ public static final String ACCEPT="Accept";
public static final double MAX_MSG_NO = 18446744073709551615d;
@@ -111,6 +113,8 @@
public static final String NO_ADDRESSING_HEADERS = "No Addressing
Headers Available in this Message";
public static final String NO_MESSAGE_ID = "MessageID should be
present in the message";
+ public static final String NO_TO="Required header <wsa:To> NOT
found.";
+ public static final String NO_ACTION="Required header <wsa:Action>
NOT found.";
public static final String NO_RM_HEADES = "No RM Headers Available
in this Message";
1.35 +25 -19
ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java
Index: EnvelopeCreator.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- EnvelopeCreator.java 5 May 2005 06:06:29 -0000 1.34
+++ EnvelopeCreator.java 5 May 2005 12:57:01 -0000 1.35
@@ -39,25 +39,20 @@
private static final Log log =
LogFactory.getLog(EnvelopeCreator.class.getName());
private static final UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
- public static SOAPEnvelope createCreateSequenceResponseEnvelope(String
uuid, RMMessageContext rmMessageContext) throws Exception {
+ public static SOAPEnvelope createCreateSequenceResponseEnvelope(String
uuid, RMMessageContext rmMessageContext,boolean hasOffer, boolean
offerAccepted) throws Exception {
- //Set the SOAPEnvelope to the resEnv of the rmMessageContext.
AddressingHeaders addressingHeaders =
rmMessageContext.getAddressingHeaders();
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
SOAPEnvelope envelope = createBasicEnvelop();
AddressingHeaders outGoingAddressingHaders = new
AddressingHeaders(envelope);
Action action = new Action(new
URI(Constants.WSRM.ACTION_CREATE_SEQUENCE_RESPONSE));
- //TODO actor??
- SOAPHeaderElement actionElement =
action.toSOAPHeaderElement(envelope, null);
- //actionElement.setMustUnderstand(true);
+
outGoingAddressingHaders.setAction(action);
- //Set the messageID
MessageID messageId = new MessageID(new URI(Constants.UUID +
uuidGen.nextUUID()));
outGoingAddressingHaders.setMessageID(messageId);
- //Set the <wsa:From> address from the incoming <wsa:To>
To incommingTo = addressingHeaders.getTo();
URI fromAddressURI = new URI(incommingTo.toString());
@@ -93,6 +88,15 @@
Identifier id = new Identifier();
id.setIdentifier(Constants.UUID + uuid);
response.setIdentifier(id);
+
+ if(hasOffer&&offerAccepted){
+ Accept accept= new Accept();
+ AcksTo acksTo= new AcksTo();
+ acksTo.setAddress(new
Address(addressingHeaders.getTo().toString()));
+ accept.setAcksTo(acksTo);
+ response.setAccept(accept);
+ }
+
response.toSoapEnvelop(envelope);
return envelope;
}
@@ -103,19 +107,21 @@
AddressingHeaders addressingHeaders =
rmMsgCtx.getAddressingHeaders();
SOAPEnvelope envelope = createBasicEnvelop();
addressingHeaders.toEnvelope(envelope);
- rmMsgCtx.getRMHeaders().getCreateSequence().toSoapEnvelop(envelope);
+ CreateSequence crSeq= rmMsgCtx.getRMHeaders().getCreateSequence();
//uncommenting following will send the sequence with a offer (for
response seq) to the create seq msg.
//offer
-// SequenceOffer offer = new SequenceOffer ();
-// Identifier id = new Identifier ();
-// UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
-// String offerUuid = Constants.UUID + uuidGen.nextUUID();
-// id.setIdentifier(offerUuid);
-//
-// offer.setIdentifier(id);
-// createSeq.setOffer(offer);
+ /* SequenceOffer offer = new SequenceOffer ();
+ Identifier id = new Identifier ();
+ UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
+ String offerUuid = Constants.UUID + uuidGen.nextUUID();
+ id.setIdentifier(offerUuid);
+
+ offer.setIdentifier(id);
+ crSeq.setOffer(offer);*/
//end offer
+
+ crSeq.toSoapEnvelop(envelope);
return envelope;
}
@@ -203,7 +209,7 @@
//outGoingAddressingHaders.setRelatesTo(relatesToList);
///RelatesTo relatesTo = new RelatesTo();
if (rmMessageContext.getOldSequenceID() != null)
-
outGoingAddressingHaders.addRelatesTo(rmMessageContext.getMessageID(), new
QName("aa", "bb"));
+
outGoingAddressingHaders.addRelatesTo(rmMessageContext.getMessageID(), null);
//Set the messageID
MessageID messageId = new MessageID(new URI(Constants.UUID +
uuidGen.nextUUID()));
@@ -233,8 +239,8 @@
//Set the action
//TODO
//Action shuld also be taken from the server-config.wsdd
- if (rmMessageContext.getAction() != null) {
- Action action = new Action(new
URI(rmMessageContext.getAction()));
+ if (addressingHeaders.getAction() != null) {
+ Action action = new Action(new
URI(addressingHeaders.getAction().toString()));
outGoingAddressingHaders.setAction(action);
}
1.38 +2 -15
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.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- RMSender.java 5 May 2005 06:06:30 -0000 1.37
+++ RMSender.java 5 May 2005 12:57:01 -0000 1.38
@@ -56,7 +56,6 @@
storageManager.insertTerminateSeqMessage(RMMessageCreator.createTerminateSeqMsg(reqMsgCtx,
Constants.CLIENT));
}
-
if (reqMsgCtx.isHasResponse()) {
RMMessageContext responseMessageContext = null;
while (responseMessageContext == null) {
@@ -84,13 +83,9 @@
storageManager.addOutgoingSequence(reqRMMsgContext.getSequenceID());
storageManager.setTemporaryOutSequence(reqRMMsgContext.getSequenceID(),
createSeqRMMsgContext.getMessageID());
- //Set the processing state to the RMMessageContext
createSeqRMMsgContext.setSync(sync);
-
storageManager.addCreateSequenceRequest(createSeqRMMsgContext);
-
RMMessageContext serviceRequestMsg =
RMMessageCreator.createServiceRequestMessage(reqRMMsgContext);
-
processRequestMessage(serviceRequestMsg);
return reqRMMsgContext;
}
@@ -111,22 +106,14 @@
}
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();
- //Get the message information from the client.
Call call = (Call) newMsgContext.getProperty(MessageContext.CALL);
- //If the property specified by the client is not valid an AxisFault
will be sent at this point.
+
requestMesssageContext = ClientPropertyValidator.validate(call);
requestMesssageContext.setOutGoingAddress((String)
msgCtx.getProperty(MessageContext.TRANS_URL));
requestMesssageContext.setMsgContext(newMsgContext);
- /* AddressingHeaders addrHeaders =
RMMessageCreator.getAddressingHeaders(requestMesssageContext);
- if (requestMesssageContext.getAction() != null)
- addrHeaders.setAction(new Action(new
URI(requestMesssageContext.getAction())));
- requestMesssageContext.setAddressingHeaders(addrHeaders);
-
requestMesssageContext.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
- requestMesssageContext.setMessageID(Constants.UUID +
uuidGen.nextUUID());*/
return requestMesssageContext;
}
1.17 +7 -4
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.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- MessageValidator.java 5 May 2005 06:06:30 -0000 1.16
+++ MessageValidator.java 5 May 2005 12:57:01 -0000 1.17
@@ -46,7 +46,6 @@
MessageContext msgContext = rmMsgContext.getMsgContext();
try {
AddressingHeaders addrHeaders=new
AddressingHeaders(msgContext.getRequestMessage().getSOAPEnvelope());
- //ddressingHeaders addrHeaders = (AddressingHeaders)
msgContext.getProperty(org.apache.axis.message.addressing.Constants.ENV_ADDRESSING_REQUEST_HEADERS);
validateAddrHeaders(addrHeaders);
rmMsgContext.setAddressingHeaders(addrHeaders);
@@ -58,9 +57,11 @@
validateForFaults(rmMsgContext);
} catch (SOAPException e) {
log.error(e);
- //TODO Do we need to throw a Sequence Fault at this level.
+ throw new AxisFault(new
QName(Constants.FaultCodes.IN_CORRECT_MESSAGE), e.getMessage(), null, null);
} catch (Exception e) {
log.error(e);
+ throw new AxisFault(new
QName(Constants.FaultCodes.IN_CORRECT_MESSAGE), e.getMessage(), null, null);
+
}
}
@@ -107,7 +108,9 @@
if (addrHeaders == null) {
throw new AxisFault(new
QName(Constants.FaultCodes.IN_CORRECT_MESSAGE),
Constants.FaultMessages.NO_ADDRESSING_HEADERS, null, null);
}
- //if (addrHeaders.getMessageID() == null)
- // throw new AxisFault(new
QName(Constants.FaultCodes.IN_CORRECT_MESSAGE),
Constants.FaultMessages.NO_MESSAGE_ID, null, null);
+ if (addrHeaders.getTo() == null)
+ throw new AxisFault(new
QName(Constants.FaultCodes.IN_CORRECT_MESSAGE), Constants.FaultMessages.NO_TO,
null, null);
+ if (addrHeaders.getAction() == null)
+ throw new AxisFault(new
QName(Constants.FaultCodes.IN_CORRECT_MESSAGE), Constants.FaultMessages.NO_TO,
null, null);
}
}
1.25 +3 -1
ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java
Index: RMInvoker.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/RMInvoker.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- RMInvoker.java 5 May 2005 06:06:30 -0000 1.24
+++ RMInvoker.java 5 May 2005 12:57:01 -0000 1.25
@@ -59,12 +59,14 @@
provider.invoke(rmMessageContext.getMsgContext());
if
(rmMessageContext.getMsgContext().getOperation().getMethod().getReturnType() !=
Void.TYPE) {
+ String
oldAction=rmMessageContext.getAddressingHeaders().getAction().toString();
+
rmMessageContext.getAddressingHeaders().setAction(oldAction+Constants.RESPONSE);
if (rmMessageContext.isLastMessage()) {
//Insert Terminate Sequnce.
AddressingHeaders addrHeaders =
rmMessageContext.getAddressingHeaders();
if (addrHeaders.getReplyTo() != null) {
String replyTo =
addrHeaders.getReplyTo().getAddress().toString();
- RMMessageContext terminateMsg =
RMMessageCreator.createTerminateSeqMsg(rmMessageContext,Constants.SERVER);
+ RMMessageContext terminateMsg =
RMMessageCreator.createTerminateSeqMsg(rmMessageContext, Constants.SERVER);
terminateMsg.setOutGoingAddress(replyTo);
storageManager.insertTerminateSeqMessage(terminateMsg);
} else {
1.16 +56 -67
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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- CreateSequenceProcessor.java 2 May 2005 04:40:49 -0000 1.15
+++ CreateSequenceProcessor.java 5 May 2005 12:57:01 -0000 1.16
@@ -28,9 +28,9 @@
import org.apache.sandesha.IStorageManager;
import org.apache.sandesha.RMMessageContext;
import org.apache.sandesha.ws.rm.CreateSequence;
+import org.apache.sandesha.ws.rm.Identifier;
import org.apache.sandesha.ws.rm.RMHeaders;
import org.apache.sandesha.ws.rm.SequenceOffer;
-import org.apache.sandesha.ws.rm.Identifier;
/**
* @author
@@ -49,9 +49,8 @@
AddressingHeaders addrHeaders =
rmMessageContext.getAddressingHeaders();
RMHeaders rmHeaders = rmMessageContext.getRMHeaders();
- AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor(this.storageManager);
if (rmHeaders.getSequenceAcknowledgement() != null) {
- ackProcessor.processMessage(rmMessageContext);
+ processForAckIfAny(rmMessageContext);
}
//wsrm:CreateSequenceRefused
@@ -59,48 +58,39 @@
throw new AxisFault();
String uuid = uuidGen.nextUUID();
-
storageManager.addRequestedSequence(org.apache.sandesha.Constants.UUID + uuid);
//To support offer
CreateSequence createSeq =
rmMessageContext.getRMHeaders().getCreateSequence();
SequenceOffer offer = createSeq.getOffer();
-
- String responseSeqId = null;
-
+ boolean offerAccepted = false;
+ boolean hasOffer=false;
if (offer != null) {
- Identifier id = offer.getIdentifier();
- if (id != null)
- responseSeqId = id.getIdentifier();
+ hasOffer=true;
+ offerAccepted = acceptOrRejectOffer(offer);
+ if (offerAccepted) {
+ String responseSeqId = null;
+ if (offer != null) {
+ Identifier id = offer.getIdentifier();
+ if (id != null)
+ responseSeqId = id.getIdentifier();
+ }
+ String incomingSeqId = Constants.UUID + uuid;
+ if (responseSeqId != null) {
+ storageManager.addOutgoingSequence(incomingSeqId);
+ storageManager.setTemporaryOutSequence(incomingSeqId,
responseSeqId);
+ storageManager.setApprovedOutSequence(responseSeqId,
responseSeqId);
+ //Now it has a approved out sequence of responseSeqId
+ }
+ }
}
- String incomingSeqId = org.apache.sandesha.Constants.UUID + uuid;
- if (responseSeqId != null) {
- storageManager.addOutgoingSequence(incomingSeqId);
- storageManager.setTemporaryOutSequence(incomingSeqId,
responseSeqId);
- storageManager.setApprovedOutSequence(responseSeqId,
responseSeqId);
- //Now it has a approved out sequence of responseSeqId
- }
-
//END OFFER PROCESSING
-
- if ((createSeq.getAcksTo() != null)) {
- if
((createSeq.getAcksTo().getAddress().toString().equals(Constants.WSA.NS_ADDRESSING_ANONYMOUS)))
{
- rmMessageContext.setSync(true);
- } else {
- rmMessageContext.setSync(false);
-
rmMessageContext.setOutGoingAddress(createSeq.getAcksTo().getAddress().toString());
- }
- } else if (addrHeaders.getReplyTo() == null ||
addrHeaders.getReplyTo().getAddress().toString().equals(Constants.WSA.NS_ADDRESSING_ANONYMOUS))
{
- rmMessageContext.setSync(true);
- } else {
- rmMessageContext.setSync(false);
-
rmMessageContext.setOutGoingAddress(addrHeaders.getReplyTo().getAddress().toString());
- }
+ setOutGoingAddress(rmMessageContext, addrHeaders);
SOAPEnvelope resEnvelope = null;
try {
- resEnvelope =
EnvelopeCreator.createCreateSequenceResponseEnvelope(uuid, rmMessageContext);
+ resEnvelope =
EnvelopeCreator.createCreateSequenceResponseEnvelope(uuid,
rmMessageContext,hasOffer,offerAccepted);
} catch (Exception e) {
throw new
AxisFault(org.apache.sandesha.Constants.FaultCodes.WSRM_SERVER_INTERNAL_ERROR);
}
@@ -111,47 +101,46 @@
return true;
} else {
- MessageContext msgContext = new
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
- msgContext.setResponseMessage(new Message(resEnvelope));
- rmMessageContext.setMsgContext(msgContext);
-
- rmMessageContext.setSync(false);
- storageManager.addCreateSequenceResponse(rmMessageContext);
- return false;
- }
-
-
- /* if ((createSeq.getAcksTo() != null)) {
- if
((createSeq.getAcksTo().getAddress().toString().equals(Constants.WSA.NS_ADDRESSING_ANONYMOUS)))
{
- rmMessageContext.getMsgContext().setResponseMessage(new
Message(resEnvelope));
- rmMessageContext.setSync(true);
- return true;
- } else {
- MessageContext msgContext = new
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
- msgContext.setResponseMessage(new Message(resEnvelope));
- rmMessageContext.setMsgContext(msgContext);
-
-
rmMessageContext.setOutGoingAddress(addrHeaders.getReplyTo().getAddress().toString());
- rmMessageContext.setSync(false);
- storageManager.addCreateSequenceResponse(rmMessageContext);
- return false;
- }
- } else if (addrHeaders.getReplyTo() == null ||
addrHeaders.getReplyTo().getAddress().toString()
- .equals(Constants.WSA.NS_ADDRESSING_ANONYMOUS)) {
- //Inform that we have a synchronous response.
- rmMessageContext.getMsgContext().setResponseMessage(new
Message(resEnvelope));
- rmMessageContext.setSync(true);
- return true;
- } else {
MessageContext msgContext = new
MessageContext(rmMessageContext.getMsgContext().getAxisEngine());
msgContext.setResponseMessage(new Message(resEnvelope));
rmMessageContext.setMsgContext(msgContext);
-
rmMessageContext.setOutGoingAddress(addrHeaders.getReplyTo().getAddress().toString());
rmMessageContext.setSync(false);
storageManager.addCreateSequenceResponse(rmMessageContext);
return false;
}
- */
+
+ }
+
+ private void handleOffer(){
+
+ }
+
+ //TODO Implent the strategy for accepting the offer or rejecting it.
+ private boolean acceptOrRejectOffer(SequenceOffer offer) {
+ return true;
+ }
+
+ private void processForAckIfAny(RMMessageContext rmMsgCtx) throws
AxisFault {
+ AcknowledgementProcessor ackProcessor = new
AcknowledgementProcessor(this.storageManager);
+ ackProcessor.processMessage(rmMsgCtx);
+ }
+
+ private void setOutGoingAddress(RMMessageContext rmMsgCtx,
AddressingHeaders addrHeaders) {
+ CreateSequence createSeq =
rmMsgCtx.getRMHeaders().getCreateSequence();
+ if ((createSeq.getAcksTo() != null)) {
+ if
((createSeq.getAcksTo().getAddress().toString().equals(Constants.WSA.NS_ADDRESSING_ANONYMOUS)))
{
+ rmMsgCtx.setSync(true);
+ } else {
+ rmMsgCtx.setSync(false);
+
rmMsgCtx.setOutGoingAddress(createSeq.getAcksTo().getAddress().toString());
+ }
+ } else if (addrHeaders.getReplyTo() == null ||
addrHeaders.getReplyTo().getAddress().toString().equals(Constants.WSA.NS_ADDRESSING_ANONYMOUS))
{
+ rmMsgCtx.setSync(true);
+ } else {
+ rmMsgCtx.setSync(false);
+
rmMsgCtx.setOutGoingAddress(addrHeaders.getReplyTo().getAddress().toString());
+ }
+
}
}
\ No newline at end of file
1.10 +0 -14
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.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- FaultProcessor.java 2 May 2005 04:17:09 -0000 1.9
+++ FaultProcessor.java 5 May 2005 12:57:01 -0000 1.10
@@ -63,20 +63,6 @@
//return false
SOAPFault soapFault = null;
- /*
- if
(Constants.FaultCodes.IN_CORRECT_MESSAGE.equalsIgnoreCase(axisFault.getFaultCode().getLocalPart())){
- soapFault = new SOAPFault(this.axisFault);
- }
-
- if
(Constants.FaultCodes.WSRM_FAULT_UNKNOWN_SEQUENCE.equalsIgnoreCase(axisFault.getFaultCode().getLocalPart())){
- soapFault = new SOAPFault(this.axisFault);
- }
-
- if
(Constants.FaultCodes.WSRM_FAULR_LAST_MSG_NO_EXCEEDED.equalsIgnoreCase(axisFault.getFaultCode().getLocalPart())){
- soapFault = new SOAPFault(this.axisFault);
- }
- */
-
soapFault = new SOAPFault(this.axisFault);
return sendFault(rmMessageContext, soapFault);
1.15 +2 -162
ws-fx/sandesha/src/org/apache/sandesha/util/RMMessageCreator.java
Index: RMMessageCreator.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/util/RMMessageCreator.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- RMMessageCreator.java 5 May 2005 06:06:30 -0000 1.14
+++ RMMessageCreator.java 5 May 2005 12:57:01 -0000 1.15
@@ -34,43 +34,9 @@
public class RMMessageCreator {
private static final UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
- /*public static RMMessageContext createCreateSeqMsg(RMMessageContext
rmMsgCtx) throws Exception {
- AddressingHeaders addrHeaders = getAddressingHeaders(rmMsgCtx);
- String uuid = uuidGen.nextUUID(); String uuid = uuidGen.nextUUID();
-
- //Create the RMMessageContext to hold the create Sequence Request.
- RMMessageContext createSeqRMMsgContext = new RMMessageContext();
-
- String msgId = Constants.UUID + uuid;
- createSeqRMMsgContext.setMessageID(msgId);
- createSeqRMMsgContext.addToMsgIdList(msgId);
- MessageContext msgContext = rmMsgCtx.getMsgContext();
-
- String toAddress = rmMsgCtx.getOutGoingAddress();
- //Set the action
- Action action = new Action(new
URI(Constants.WSRM.ACTION_CREATE_SEQUENCE));
- addrHeaders.setAction(action);
- createSeqRMMsgContext.setAddressingHeaders(addrHeaders);
- createSeqRMMsgContext.setSync(rmMsgCtx.getSync());
- createSeqRMMsgContext.setAcksTo(rmMsgCtx.getAcksTo());
-
- createSeqRMMsgContext.setOutGoingAddress(toAddress);
- SOAPEnvelope resEnvelope =
EnvelopeCreator.createCreateSequenceEnvelope(uuid, createSeqRMMsgContext,
Constants.CLIENT);
- MessageContext createSeqMsgContext = new
MessageContext(msgContext.getAxisEngine());
- //This should be a clone operation.
- RMMessageContext.copyMessageContext(msgContext, createSeqMsgContext);
- createSeqMsgContext.setRequestMessage(new Message(resEnvelope));
- createSeqRMMsgContext.setMsgContext(createSeqMsgContext);
- //Set the message type
-
createSeqRMMsgContext.setMessageType(Constants.MSG_TYPE_CREATE_SEQUENCE_REQUEST);
- return createSeqRMMsgContext;
- }*/
-
-
public static RMMessageContext createCreateSeqMsg(RMMessageContext
rmMsgCtx, byte endPoint) throws Exception {
RMMessageContext createSeqRMMsgContext = new RMMessageContext();
rmMsgCtx.copyContents(createSeqRMMsgContext);
- //AddressingHeaders addrHeaders = getAddressingHeaders(rmMsgCtx);
RMHeaders rmHeaders = new RMHeaders();
@@ -80,25 +46,12 @@
rmHeaders.setCreateSequence(createSeq);
createSeqRMMsgContext.setRMHeaders(rmHeaders);
- //AddressingHeaders csAddrHeaders = new AddressingHeaders();
-
AddressingHeaders csAddrHeaders =
getAddressingHeaedersForCreateSequenceRequest(rmMsgCtx, endPoint);
- /* if (endPoint == Constants.CLIENT) {
- csAddrHeaders.setTo(addrHeaders.getTo());
- csAddrHeaders.setFaultTo(addrHeaders.getFaultTo());
- csAddrHeaders.setReplyTo(addrHeaders.getReplyTo());
- csAddrHeaders.setFrom(addrHeaders.getFrom());
- } else {
- csAddrHeaders.setTo(new
To(addrHeaders.getReplyTo().getAddress().toString()));
- csAddrHeaders.setFaultTo(new FaultTo(new
Address(rmMsgCtx.getAddressingHeaders().getTo().toString())));
- csAddrHeaders.setFrom(new From(new
Address(rmMsgCtx.getAddressingHeaders().getTo().toString())));
- }*/
- csAddrHeaders.setAction(new Action(new
URI(Constants.WSRM.ACTION_CREATE_SEQUENCE)));
+ csAddrHeaders.setAction(new Action(new
URI(Constants.WSRM.ACTION_CREATE_SEQUENCE)));
createSeqRMMsgContext.setAddressingHeaders(csAddrHeaders);
- String uuid = uuidGen.nextUUID();
- String msgId = Constants.UUID + uuid;
+ String msgId = Constants.UUID + uuidGen.nextUUID();
createSeqRMMsgContext.setMessageID(msgId);
createSeqRMMsgContext.addToMsgIdList(msgId);
createSeqRMMsgContext.setSync(rmMsgCtx.getSync());
@@ -116,7 +69,6 @@
}
private static AddressingHeaders
getAddressingHeaedersForCreateSequenceRequest(RMMessageContext rmMsgCtx, byte
endPoint) throws Exception {
- //AddressingHeaders addrHeaders = rmMsgCtx.getAddressingHeaders();
AddressingHeaders csAddrHeaders = new AddressingHeaders();
if (endPoint == Constants.SERVER) {
AddressingHeaders ah = rmMsgCtx.getAddressingHeaders();
@@ -132,7 +84,6 @@
csAddrHeaders.setReplyTo(new
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
} else {
String sourceURL = rmMsgCtx.getSourceURL();
-
if (rmMsgCtx.getFrom() != null)
csAddrHeaders.setFrom(new
EndpointReference(rmMsgCtx.getFrom()));
else
@@ -145,16 +96,13 @@
csAddrHeaders.setFaultTo(new
EndpointReference(rmMsgCtx.getFaultTo()));
else
csAddrHeaders.setFaultTo(new
EndpointReference(sourceURL));
-
}
}
return csAddrHeaders;
}
-
private static AcksTo getAcksTo(RMMessageContext rmMsgCtx, byte
endPoint) throws Exception {
AcksTo acksTo = null;
-
if (endPoint == Constants.CLIENT) {
if (rmMsgCtx.getSync()) {
acksTo = new AcksTo(new Address(new
URI(Constants.WSA.NS_ADDRESSING_ANONYMOUS)));
@@ -180,12 +128,10 @@
}
public static RMMessageContext createTerminateSeqMsg(RMMessageContext
rmMsgCtx, byte endPoint) throws Exception {
-
RMMessageContext terSeqRMMsgContext = new RMMessageContext();
MessageContext terSeqMsgContext = new
MessageContext(rmMsgCtx.getMsgContext().getAxisEngine());
terSeqRMMsgContext.setSequenceID(rmMsgCtx.getSequenceID());
- //Fix me, Need to clone the addressing headers.
AddressingHeaders addHeaders =
getAddressingHeadersForTerminateSequence(rmMsgCtx, endPoint);
SOAPEnvelope soe = new SOAPEnvelope();
addHeaders.toEnvelope(soe);
@@ -201,7 +147,6 @@
private static AddressingHeaders
getAddressingHeadersForTerminateSequence(RMMessageContext rmMsgCtx, byte
endPoint) throws Exception {
AddressingHeaders csAddrHeaders = new AddressingHeaders();
-
if (endPoint == Constants.SERVER) {
AddressingHeaders ah = rmMsgCtx.getAddressingHeaders();
csAddrHeaders.setTo(ah.getReplyTo().getAddress());
@@ -230,18 +175,6 @@
}
public static RMMessageContext
createServiceRequestMessage(RMMessageContext rmMsgCtx) throws Exception {
- /* //Get a copy of the MessageContext. This is required when sending
multiple messages from
- //one call object
- MessageContext newMsgContext = cloneMsgContext(msgCtx);
- RMMessageContext requestMesssageContext = new RMMessageContext();
- //Get the message information from the client.
- Call call = (Call) newMsgContext.getProperty(MessageContext.CALL);
- //If the property specified by the client is not valid an AxisFault
will be sent at this point.
- requestMesssageContext = ClientPropertyValidator.validate(call);
- requestMesssageContext.setOutGoingAddress((String)
msgCtx.getProperty(MessageContext.TRANS_URL));
- requestMesssageContext.setMsgContext(newMsgContext);
- AddressingHeaders addrHeaders =
getAddressingHeaders(requestMesssageContext);*/
-
AddressingHeaders addrHeaders =
getAddressingHeaedersForServiceRequest(rmMsgCtx);
if (rmMsgCtx.getAction() != null)
addrHeaders.setAction(new Action(new URI(rmMsgCtx.getAction())));
@@ -253,8 +186,6 @@
}
private static AddressingHeaders
getAddressingHeaedersForServiceRequest(RMMessageContext rmMsgCtx) throws
Exception {
-
-
AddressingHeaders csAddrHeaders = new AddressingHeaders();
csAddrHeaders.setTo(new To(rmMsgCtx.getTo()));
if (rmMsgCtx.getSync()) {
@@ -264,15 +195,12 @@
csAddrHeaders.setReplyTo(new
EndpointReference(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
} else {
String sourceURL = rmMsgCtx.getSourceURL();
-
if (rmMsgCtx.getFrom() != null)
csAddrHeaders.setFrom(new
EndpointReference(rmMsgCtx.getFrom()));
else
csAddrHeaders.setFrom(new EndpointReference(sourceURL));
-
if (rmMsgCtx.isHasResponse()) {
if (rmMsgCtx.getReplyTo() != null)
-
csAddrHeaders.setReplyTo(new
EndpointReference(rmMsgCtx.getReplyTo()));
else
csAddrHeaders.setReplyTo(new
EndpointReference(sourceURL));
@@ -281,11 +209,8 @@
csAddrHeaders.setFaultTo(new
EndpointReference(rmMsgCtx.getFaultTo()));
else
csAddrHeaders.setFaultTo(new EndpointReference(sourceURL));
-
}
return csAddrHeaders;
-
-
}
public static MessageContext cloneMsgContext(MessageContext msgContext)
throws AxisFault {
@@ -297,89 +222,4 @@
return clone;
}
- private static AddressingHeaders getAddressingHeaders(RMMessageContext
rmMsgContext)
- throws URI.MalformedURIException {
-
- if (rmMsgContext.getAddressingHeaders() != null) {
- return rmMsgContext.getAddressingHeaders();
- } else {
-
- // MessageContext msgContext= rmMsgContext.getMsgContext();
- //Variable to hold the status of the asynchronous or synchronous
state.
- boolean sync = rmMsgContext.getSync();
- AddressingHeaders addrHeaders = new AddressingHeaders();
- From from = null;
- ReplyTo replyTo = null;
- FaultTo faultTo = null;
- String replyToURL = rmMsgContext.getReplyTo();
- String fromURL = rmMsgContext.getFrom();
- String faultToURL = rmMsgContext.getFaultTo();
-
- if (replyToURL != null)
- addrHeaders.setReplyTo(new ReplyTo(new
EndpointReference(replyToURL)));
- if (fromURL != null)
- addrHeaders.setFrom(new From(new
EndpointReference(fromURL)));
- if (faultToURL != null)
- addrHeaders.setFaultTo(new FaultTo(new
EndpointReference(faultToURL)));
- if (rmMsgContext.getTo() != null) {
- To to = new To(new Address(rmMsgContext.getTo()));
- addrHeaders.setTo(to);
- } else {
- To to = new To(new
Address(rmMsgContext.getOutGoingAddress()));
- addrHeaders.setTo(to);
- }
-
-
-/*
- //Need to use the anonymous_URI if the client is synchronous.
- if (!sync) {
- if (fromURL != null) {
- from = new From(new Address(fromURL));
- } else {
- from = new From(new
Address(rmMsgContext.getSourceURL()));
- }
- addrHeaders.setFrom(from);
- // if (rmMsgContext.isHasResponse()) {
- if (replyToURL != null) {
- replyTo = new ReplyTo(new Address(replyToURL));
- addrHeaders.setReplyTo(replyTo);
- } else {
- replyTo = new ReplyTo(new
Address(rmMsgContext.getSourceURL()));
- addrHeaders.setReplyTo(replyTo);
- }
- // }
-
- } else {
- if (fromURL != null) {
- from = new From(new Address(fromURL));
- } else {
- from = new From(new
Address(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
- }
- addrHeaders.setFrom(from);
- if (rmMsgContext.isHasResponse()) {
- replyTo = new ReplyTo(new Address(replyToURL));
- addrHeaders.setReplyTo(replyTo);
- }
- }
-
- if (faultToURL != null) {
- faultTo = new FaultTo(new Address(faultToURL));
- addrHeaders.setFaultTo(faultTo);
- } else {
- faultTo = new FaultTo(new
Address(Constants.WSA.NS_ADDRESSING_ANONYMOUS));
- addrHeaders.setFaultTo(faultTo);
- }
- //Set the target endpoint URL
- if (rmMsgContext.getTo() != null) {
- To to = new To(new Address(rmMsgContext.getTo()));
- addrHeaders.setTo(to);
- } else {
- To to = new To(new
Address(rmMsgContext.getOutGoingAddress()));
- addrHeaders.setTo(to);
- }*/
-
-
- return addrHeaders;
- }
- }
}
\ No newline at end of file
1.15 +25 -6
ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequenceResponse.java
Index: CreateSequenceResponse.java
===================================================================
RCS file:
/home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/CreateSequenceResponse.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- CreateSequenceResponse.java 2 May 2005 04:34:04 -0000 1.14
+++ CreateSequenceResponse.java 5 May 2005 12:57:01 -0000 1.15
@@ -21,7 +21,6 @@
import org.apache.axis.message.SOAPBodyElement;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.sandesha.Constants;
-import org.apache.sandesha.ws.rm.Identifier;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
@@ -46,6 +45,8 @@
*/
private Identifier identifier;
+ private Accept accept;
+
/**
* Constructor CreateSequenceResponse
*/
@@ -84,14 +85,14 @@
if (env.getBody() == null) {
env.addBody();
}
- Name name = env.createName("", Constants.WSRM.NS_PREFIX_RM,
- Constants.WSRM.NS_URI_RM);
- SOAPBodyElement bodyElement = (SOAPBodyElement) env.getBody()
- .addBodyElement(name);
+ Name name = env.createName("", Constants.WSRM.NS_PREFIX_RM,
Constants.WSRM.NS_URI_RM);
+ SOAPBodyElement bodyElement = (SOAPBodyElement)
env.getBody().addBodyElement(name);
bodyElement.setName(Constants.WSRM.CREATE_SEQUENCE_RESPONSE);
if (identifier != null) {
identifier.toSOAPEnvelope(bodyElement);
}
+ if (accept != null)
+ accept.toSOAPEnvelope(bodyElement);
return env;
}
@@ -101,7 +102,7 @@
* @param bodyElement
* @return CreateSequenceResponse
*/
- public CreateSequenceResponse fromSOAPEnveploe(SOAPBodyElement
bodyElement) {
+ public CreateSequenceResponse fromSOAPEnveploe(SOAPBodyElement
bodyElement) throws Exception {
Iterator iterator = bodyElement.getChildElements();
MessageElement childElement;
@@ -118,6 +119,16 @@
identifier = new Identifier();
identifier.fromSOAPEnvelope(childElement);
}
+
+ if (childElement.getName().equals(Constants.WSU.WSU_PREFIX +
Constants.COLON + Constants.WSRM.ACCEPT)) {
+ accept = new Accept();
+ accept.fromSOAPEnvelope(childElement);
+ }
+
+ if (childElement.getName().equals(Constants.WSRM.ACCEPT)) {
+ accept = new Accept();
+ accept.fromSOAPEnvelope(childElement);
+ }
}
return this;
@@ -146,6 +157,14 @@
return identifier;
}
+ public Accept getAccept() {
+ return accept;
+ }
+
+ public void setAccept(Accept accept) {
+ this.accept = accept;
+ }
+
/**
* Method setIdentifier
*
1.17 +0 -2
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.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- RMHeaders.java 2 May 2005 08:38:09 -0000 1.16
+++ RMHeaders.java 5 May 2005 12:57:01 -0000 1.17
@@ -285,11 +285,9 @@
if (headerElement.getName().equals(Constants.WSRM.SEQUENCE))
{
headerElement.detachNode();
}
-
if
(headerElement.getName().equals(Constants.WSRM.SEQUENCE_ACK)) {
headerElement.detachNode();
}
-
if
(headerElement.getName().equals(Constants.WSRM.ACK_REQUESTED)) {
headerElement.detachNode();
}
1.44 +0 -5
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.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- RMProvider.java 2 May 2005 04:17:09 -0000 1.43
+++ RMProvider.java 5 May 2005 12:57:01 -0000 1.44
@@ -74,7 +74,6 @@
MessageValidator.validate(rmMessageContext, client);
} catch (AxisFault af) {
FaultProcessor faultProcessor = new
FaultProcessor(storageManager, af);
-
if (!faultProcessor.processMessage(rmMessageContext)) {
msgContext.setPastPivot(true);
msgContext.setResponseMessage(null);
@@ -106,14 +105,10 @@
msgContext.setResponseMessage(null);
} else {
msgContext.setPastPivot(true);
- // TODO Get the from envCreator
- // SOAPEnvelope
resEn=EnvelopeCreator.createAcknowledgementEnvelope()
}
} catch (AxisFault af) {
RMProvider.log.error(af);
-
FaultProcessor faultProcessor = new
FaultProcessor(storageManager, af);
-
if (!faultProcessor.processMessage(rmMessageContext)) {
msgContext.setPastPivot(true);
msgContext.setResponseMessage(null);