You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2006/01/19 11:02:21 UTC
svn commit: r370455 - in /webservices/axis2/trunk/java/modules:
core/src/org/apache/axis2/client/ core/src/org/apache/axis2/context/
core/src/org/apache/axis2/description/
integration/test/org/apache/axis2/engine/
Author: deepal
Date: Thu Jan 19 02:01:58 2006
New Revision: 370455
URL: http://svn.apache.org/viewcvs?rev=370455&view=rev
Log:
- burn Session management stuff into operation client and which can control using options.
- when manage session set to true in option operation client will store wsa:reploTo reference parameters into ServiceConetext and when sending next request add them as SOAP header parameters.
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/Options.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/OutInAxisOperation.java
webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/Options.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/Options.java?rev=370455&r1=370454&r2=370455&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/Options.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/client/Options.java Thu Jan 19 02:01:58 2006
@@ -94,6 +94,10 @@
private EndpointReference to;
+ //To control , session managment , default is set to true , if user wants he can set that to true
+ // There operation clinet will manage session using ServiceGroupID if it is there in the response
+ private boolean manageSession = false;
+
/**
* Default constructor
*/
@@ -483,5 +487,13 @@
}
referenceParameters.add(referenceParameter);
+ }
+
+ public boolean isManageSession() {
+ return manageSession;
+ }
+
+ public void setManageSession(boolean manageSession) {
+ this.manageSession = manageSession;
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java?rev=370455&r1=370454&r2=370455&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java Thu Jan 19 02:01:58 2006
@@ -21,6 +21,7 @@
import org.apache.axis2.description.AxisService;
import javax.xml.namespace.QName;
+import java.util.ArrayList;
/**
* Well this is never clearly defined, what it does or the lifecycle.
@@ -34,12 +35,13 @@
//to store service implementation class , to handler session
private Object serviceImpl;
+ private ArrayList replyTorefpars;
public ServiceContext(AxisService serviceConfig, ServiceGroupContext serviceGroupContext) {
super(serviceGroupContext);
this.serviceGroupContext = serviceGroupContext;
this.axisService = serviceConfig;
-
+ this.replyTorefpars = new ArrayList();
if (serviceConfig != null) {
serviceInstanceID = serviceConfig.getName();
}
@@ -87,5 +89,13 @@
public ServiceGroupContext getServiceGroupContext() {
return serviceGroupContext;
+ }
+
+ public ArrayList getReplyTorefpars() {
+ return replyTorefpars;
+ }
+
+ public void setReplyTorefpars(ArrayList replyTorefpars) {
+ this.replyTorefpars = replyTorefpars;
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/OutInAxisOperation.java?rev=370455&r1=370454&r2=370455&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/description/OutInAxisOperation.java Thu Jan 19 02:01:58 2006
@@ -13,16 +13,21 @@
import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMException;
import org.apache.axis2.soap.SOAPBody;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.axis2.soap.SOAPFault;
+import org.apache.axis2.soap.SOAPHeader;
import org.apache.axis2.transport.TransportUtils;
import org.apache.axis2.util.CallbackReceiver;
import org.apache.axis2.util.UUIDGenerator;
import org.apache.wsdl.WSDLConstants;
import javax.xml.namespace.QName;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
/**
* Author: Deepal Jayasinghe Date: Oct 3, 2005 Time: 6:01:33 PM
@@ -243,7 +248,7 @@
mc.setSoapAction((String) soapaction.getValue());
}
}
-
+ addRefParsToRequset(mc.getEnvelope());
if (options.isUseSeparateListener()) {
CallbackReceiver callbackReceiver = (CallbackReceiver) axisOp
.getMessageReceiver();
@@ -304,6 +309,19 @@
}
}
+ private void addRefParsToRequset(SOAPEnvelope env) {
+ if (options.isManageSession()) {
+ SOAPHeader sh = env.getHeader();
+ ArrayList replyTorefpars = sc.getReplyTorefpars();
+ if (replyTorefpars.size() > 0) {
+ for (int i = 0; i < replyTorefpars.size(); i++) {
+ OMElement refPars = (OMElement) replyTorefpars.get(i);
+ sh.addChild(refPars);
+ }
+ }
+ }
+ }
+
/**
* Sends the message using a two way transport and waits for a response
*
@@ -339,6 +357,23 @@
SOAPEnvelope resenvelope = TransportUtils.createSOAPMessage(
responseMessageContext, msgctx.getEnvelope().getNamespace()
.getName());
+ try {
+ // Adding request reference parameters into ServiceContext , so then in the next
+ // requesy automatically send them back
+ OMElement refernceParameters = resenvelope.getHeader()
+ .getFirstChildWithName(new QName("ReplyTo"))
+ .getFirstChildWithName(new QName("ReferenceParameters"));
+ ArrayList replyTorefPars = new ArrayList();
+ Iterator refPars = refernceParameters.getChildren();
+ while (refPars.hasNext()) {
+ OMElement omElement = (OMElement) refPars.next();
+ replyTorefPars.add(omElement);
+ }
+ sc.setReplyTorefpars(replyTorefPars);
+
+ } catch (Exception e) {
+ //NPE may occure there for need to catch this
+ }
if (resenvelope != null) {
responseMessageContext.setEnvelope(resenvelope);
Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java?rev=370455&r1=370454&r2=370455&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java Thu Jan 19 02:01:58 2006
@@ -85,6 +85,7 @@
SOAPEnvelope payload = fac.getDefaultEnvelope();
Options options = new Options();
options.setTo(targetEPR);
+ options.setManageSession(true);
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setAction(operationName.getLocalPart());
@@ -104,14 +105,14 @@
OMElement body = (OMElement) result.getParent();
SOAPEnvelope soapEnvlop = (SOAPEnvelope) body.getParent();
- String serviceGroupId = soapEnvlop.getHeader().getFirstChildWithName(new QName("ReplyTo"))
+ String serviceGroupIds= soapEnvlop.getHeader().getFirstChildWithName(new QName("ReplyTo"))
.getFirstChildWithName(new QName("ReferenceParameters")).
getFirstChildWithName(new QName("ServiceGroupId")).getText();
- OMElement soapHeaderElement = fac.createOMElement(Constants.SERVICE_GROUP_ID, axis2Namespace);
- soapHeaderElement.setText(serviceGroupId);
+// OMElement soapHeaderElement = fac.createOMElement(Constants.SERVICE_GROUP_ID, axis2Namespace);
+// soapHeaderElement.setText(serviceGroupId);
- sender.addHeader(soapHeaderElement);
+// sender.addHeader(soapHeaderElement);
OMElement result2 = sender.sendReceive(defaultEnvelope.getBody().getFirstElement());
String text = result2.getText();
assertEquals("Number of requests should be 2", 2, Integer.parseInt(text));