Repository: ode Updated Branches: refs/heads/ode-1.3.x ee890b452 -> bb4789156
Ported changes for Session IN/OUT handlers from master commits b5f3029782ba61532faf839409233d82ee2e873f and 609b0a419fe7f380afadec66ae7c12a0784f0cc2 Project: http://git-wip-us.apache.org/repos/asf/ode/repo Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/bb478915 Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/bb478915 Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/bb478915 Branch: refs/heads/ode-1.3.x Commit: bb47891562ecdcadeb62a5f3dfab1e1359ecabc1 Parents: ee890b4 Author: sathwik <[email protected]> Authored: Mon Jun 22 15:17:48 2015 +0530 Committer: sathwik <[email protected]> Committed: Mon Jun 22 15:17:48 2015 +0530 ---------------------------------------------------------------------- .../java/org/apache/ode/axis2/ODEService.java | 8 +++-- .../apache/ode/axis2/SoapExternalService.java | 4 +-- .../ode/axis2/hooks/SessionInHandler.java | 35 ++++++++++++++------ .../ode/axis2/hooks/SessionOutHandler.java | 14 ++++---- 4 files changed, 39 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ode/blob/bb478915/axis2/src/main/java/org/apache/ode/axis2/ODEService.java ---------------------------------------------------------------------- diff --git a/axis2/src/main/java/org/apache/ode/axis2/ODEService.java b/axis2/src/main/java/org/apache/ode/axis2/ODEService.java index b43bd45..af57039 100644 --- a/axis2/src/main/java/org/apache/ode/axis2/ODEService.java +++ b/axis2/src/main/java/org/apache/ode/axis2/ODEService.java @@ -77,6 +77,8 @@ public class ODEService { private String _portName; private WSAEndpoint _serviceRef; private SoapMessageConverter _converter; + public static final String CALLBACK_SESSION_ENDPOINT = "callbackSessionEndpoint"; + public static final String TARGET_SESSION_ENDPOINT = "targetSessionEndpoint"; public ODEService(AxisService axisService, ProcessConf pconf, QName serviceName, String portName, BpelServer server, TransactionManager txManager) throws AxisFault { @@ -282,7 +284,7 @@ public class ODEService { if (correlationId != null) { odeMex.setProperty(MessageExchange.PROPERTY_SEP_MYROLE_SESSIONID, correlationId); } else { - Object otse = msgContext.getProperty("targetSessionEndpoint"); + Object otse = msgContext.getProperty(TARGET_SESSION_ENDPOINT); if (otse != null) { Element serviceEpr = (Element) otse; WSAEndpoint endpoint = new WSAEndpoint(); @@ -292,7 +294,7 @@ public class ODEService { } } - Object ocse = msgContext.getProperty("callbackSessionEndpoint"); + Object ocse = msgContext.getProperty(CALLBACK_SESSION_ENDPOINT); if (ocse != null) { Element serviceEpr = (Element) ocse; WSAEndpoint endpoint = new WSAEndpoint(); @@ -322,7 +324,7 @@ public class ODEService { if (odeMex.getProperty(MessageExchange.PROPERTY_SEP_MYROLE_SESSIONID) != null) { WSAEndpoint sessionAwareEndPoint = new WSAEndpoint(_serviceRef); sessionAwareEndPoint.setSessionId(odeMex.getProperty(MessageExchange.PROPERTY_SEP_MYROLE_SESSIONID)); - msgContext.setProperty("callbackSessionEndpoint", sessionAwareEndPoint); + msgContext.setProperty(CALLBACK_SESSION_ENDPOINT, sessionAwareEndPoint); } } http://git-wip-us.apache.org/repos/asf/ode/blob/bb478915/axis2/src/main/java/org/apache/ode/axis2/SoapExternalService.java ---------------------------------------------------------------------- diff --git a/axis2/src/main/java/org/apache/ode/axis2/SoapExternalService.java b/axis2/src/main/java/org/apache/ode/axis2/SoapExternalService.java index f01886e..77d85d6 100644 --- a/axis2/src/main/java/org/apache/ode/axis2/SoapExternalService.java +++ b/axis2/src/main/java/org/apache/ode/axis2/SoapExternalService.java @@ -339,7 +339,7 @@ public class SoapExternalService implements ExternalService { } targetEPR.setSessionId(partnerSessionId); } - options.setProperty("targetSessionEndpoint", targetEPR); + options.setProperty(ODEService.TARGET_SESSION_ENDPOINT, targetEPR); if (myRoleWSAEPR != null) { WSAEndpoint myRoleEPR = new WSAEndpoint(myRoleWSAEPR); @@ -350,7 +350,7 @@ public class SoapExternalService implements ExternalService { } myRoleEPR.setSessionId(myRoleSessionId); } - options.setProperty("callbackSessionEndpoint", myRoleEPR); + options.setProperty(ODEService.CALLBACK_SESSION_ENDPOINT, myRoleEPR); // Map My Session ID to JMS Correlation ID Document callbackEprXml = odeMex.getMyRoleEndpointReference().toXML(); http://git-wip-us.apache.org/repos/asf/ode/blob/bb478915/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionInHandler.java ---------------------------------------------------------------------- diff --git a/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionInHandler.java b/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionInHandler.java index 8b450d7..9dd6a88 100644 --- a/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionInHandler.java +++ b/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionInHandler.java @@ -26,6 +26,7 @@ import org.apache.axis2.context.MessageContext; import org.apache.axis2.handlers.AbstractHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.ode.axis2.ODEService; import org.apache.ode.utils.DOMUtils; import org.apache.ode.utils.Namespaces; import org.w3c.dom.Document; @@ -48,15 +49,21 @@ public class SessionInHandler extends AbstractHandler { if (__log.isDebugEnabled()) __log.debug("Found a header in incoming message, checking if there are endpoints there."); // Checking if a session identifier has been provided for a stateful endpoint - OMElement wsaToSession = header.getFirstChildWithName(new QName(Namespaces.INTALIO_SESSION_NS, "session")); + OMElement wsaToSession = header.getFirstChildWithName(new QName(Namespaces.ODE_SESSION_NS, "session")); + if (wsaToSession == null) { + wsaToSession = header.getFirstChildWithName(new QName(Namespaces.INTALIO_SESSION_NS, "session")); + } if (wsaToSession != null) { // Building an endpoint supposed to target the right instance Document doc = DOMUtils.newDocument(); Element serviceEpr = doc.createElementNS(Namespaces.WS_ADDRESSING_NS, "EndpointReference"); - Element sessionId = doc.createElementNS(Namespaces.INTALIO_SESSION_NS, "session"); + Element intSessionId = doc.createElementNS(Namespaces.INTALIO_SESSION_NS, "session"); + Element odeSessionId = doc.createElementNS(Namespaces.ODE_SESSION_NS, "session"); doc.appendChild(serviceEpr); - serviceEpr.appendChild(sessionId); - sessionId.setTextContent(wsaToSession.getText()); + serviceEpr.appendChild(intSessionId); + serviceEpr.appendChild(odeSessionId); + intSessionId.setTextContent(wsaToSession.getText()); + odeSessionId.setTextContent(wsaToSession.getText()); if (__log.isDebugEnabled()) __log.debug("A TO endpoint has been found in the header with session: " + wsaToSession.getText()); @@ -69,11 +76,14 @@ public class SessionInHandler extends AbstractHandler { } if (__log.isDebugEnabled()) __log.debug("Constructed a TO endpoint: " + DOMUtils.domToString(serviceEpr)); - messageContext.setProperty("targetSessionEndpoint", serviceEpr); + messageContext.setProperty(ODEService.TARGET_SESSION_ENDPOINT, serviceEpr); } // Seeing if there's a callback, in case our client would be stateful as well - OMElement callback = header.getFirstChildWithName(new QName(Namespaces.INTALIO_SESSION_NS, "callback")); + OMElement callback = header.getFirstChildWithName(new QName(Namespaces.ODE_SESSION_NS, "callback")); + if (callback == null) { + callback = header.getFirstChildWithName(new QName(Namespaces.INTALIO_SESSION_NS, "callback")); + } if (callback != null) { OMElement callbackSession = callback.getFirstChildWithName(new QName(Namespaces.ODE_SESSION_NS, "session")); if(callbackSession==null){ @@ -83,10 +93,13 @@ public class SessionInHandler extends AbstractHandler { // Building an endpoint that represents our client (we're supposed to call him later on) Document doc = DOMUtils.newDocument(); Element serviceEpr = doc.createElementNS(Namespaces.WS_ADDRESSING_NS, "EndpointReference"); - Element sessionId = doc.createElementNS(Namespaces.INTALIO_SESSION_NS, "session"); + Element intSessionId = doc.createElementNS(Namespaces.INTALIO_SESSION_NS, "session"); + Element odeSessionId = doc.createElementNS(Namespaces.ODE_SESSION_NS, "session"); doc.appendChild(serviceEpr); - serviceEpr.appendChild(sessionId); - sessionId.setTextContent(callbackSession.getText()); + serviceEpr.appendChild(intSessionId); + serviceEpr.appendChild(odeSessionId); + intSessionId.setTextContent(callbackSession.getText()); + odeSessionId.setTextContent(callbackSession.getText()); if (__log.isDebugEnabled()) __log.debug("A CALLBACK endpoint has been found in the header with session: " + callbackSession.getText()); @@ -99,11 +112,11 @@ public class SessionInHandler extends AbstractHandler { } if (__log.isDebugEnabled()) __log.debug("Constructed a CALLBACK endpoint: " + DOMUtils.domToString(serviceEpr)); - messageContext.setProperty("callbackSessionEndpoint", serviceEpr); + messageContext.setProperty(ODEService.CALLBACK_SESSION_ENDPOINT, serviceEpr); } } } return InvocationResponse.CONTINUE; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ode/blob/bb478915/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionOutHandler.java ---------------------------------------------------------------------- diff --git a/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionOutHandler.java b/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionOutHandler.java index cc9855b..e58c45e 100644 --- a/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionOutHandler.java +++ b/axis2/src/main/java/org/apache/ode/axis2/hooks/SessionOutHandler.java @@ -29,12 +29,13 @@ import org.apache.axis2.context.MessageContext; import org.apache.axis2.handlers.AbstractHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.ode.axis2.ODEService; import org.apache.ode.bpel.epr.EndpointFactory; import org.apache.ode.bpel.epr.MutableEndpoint; import org.apache.ode.bpel.epr.WSAEndpoint; import org.apache.ode.bpel.iapi.EndpointReference; import org.apache.ode.utils.Namespaces; -import org.apache.ode.utils.Properties; + /** * An outgoing handler adding session id information in the message @@ -53,12 +54,12 @@ public class SessionOutHandler extends AbstractHandler { return InvocationResponse.CONTINUE; } - EndpointReference otargetSession = (EndpointReference) messageContext.getProperty("targetSessionEndpoint"); - EndpointReference ocallbackSession = (EndpointReference) messageContext.getProperty("callbackSessionEndpoint"); + EndpointReference otargetSession = (EndpointReference) messageContext.getProperty(ODEService.TARGET_SESSION_ENDPOINT); + EndpointReference ocallbackSession = (EndpointReference) messageContext.getProperty(ODEService.CALLBACK_SESSION_ENDPOINT); if (otargetSession == null) - otargetSession = (EndpointReference) messageContext.getOptions().getProperty("targetSessionEndpoint"); + otargetSession = (EndpointReference) messageContext.getOptions().getProperty(ODEService.TARGET_SESSION_ENDPOINT); if (ocallbackSession == null) - ocallbackSession = (EndpointReference) messageContext.getOptions().getProperty("callbackSessionEndpoint"); + ocallbackSession = (EndpointReference) messageContext.getOptions().getProperty(ODEService.CALLBACK_SESSION_ENDPOINT); if (otargetSession != null || ocallbackSession != null) { SOAPHeader header = messageContext.getEnvelope().getHeader(); @@ -117,9 +118,10 @@ public class SessionOutHandler extends AbstractHandler { header.addChild(odeCallback); header.addChild(intCallback); OMElement address = factory.createOMElement("Address", wsAddrNS); + address.setText(callbackEpr.getUrl()); odeCallback.addChild(address); intCallback.addChild(address.cloneOMElement()); - address.setText(callbackEpr.getUrl()); + if (callbackEpr.getSessionId() != null) { OMElement odeSession = factory.createOMElement("session", odeSessNS); OMElement intSession = factory.createOMElement("session", intalioSessNS);
