Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 93218 invoked from network); 21 Sep 2005 05:24:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 21 Sep 2005 05:24:06 -0000 Received: (qmail 70981 invoked by uid 500); 21 Sep 2005 05:24:05 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 70950 invoked by uid 500); 21 Sep 2005 05:24:05 -0000 Mailing-List: contact axis-cvs-help@ws.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-cvs@ws.apache.org Received: (qmail 70937 invoked by uid 500); 21 Sep 2005 05:24:05 -0000 Delivered-To: apmail-ws-axis2-cvs@ws.apache.org Received: (qmail 70934 invoked by uid 99); 21 Sep 2005 05:24:04 -0000 X-ASF-Spam-Status: No, hits=-9.7 required=10.0 tests=ALL_TRUSTED,NORMAL_HTTP_TO_IP,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 20 Sep 2005 22:24:04 -0700 Received: (qmail 93092 invoked by uid 65534); 21 Sep 2005 05:23:49 -0000 Message-ID: <20050921052349.93091.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r290622 - in /webservices/axis2/trunk/java/modules: addressing/src/org/apache/axis2/handlers/addressing/ core/src/org/apache/axis2/context/ core/src/org/apache/axis2/receivers/ core/src/org/apache/axis2/transport/http/ integration/test/org/... Date: Wed, 21 Sep 2005 05:23:47 -0000 To: axis2-cvs@ws.apache.org From: chinthaka@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: chinthaka Date: Tue Sep 20 22:23:26 2005 New Revision: 290622 URL: http://svn.apache.org/viewcvs?rev=290622&view=rev Log: - Fixing ServiceGroupContext test. Good News !!! Now SGC mechanism works well with information extracted from addressing information too. (see ServiceGroupContextTest for more information) Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/engine/ServiceGroupContextTest.java Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java?rev=290622&r1=290621&r2=290622&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java (original) +++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java Tue Sep 20 22:23:26 2005 @@ -24,6 +24,7 @@ import org.apache.axis2.addressing.MessageInformationHeaders; import org.apache.axis2.addressing.miheaders.RelatesTo; import org.apache.axis2.context.MessageContext; +import org.apache.axis2.context.ServiceGroupContext; import org.apache.axis2.handlers.AbstractHandler; import org.apache.axis2.om.OMAttribute; import org.apache.axis2.om.OMElement; @@ -90,11 +91,17 @@ } - private void extractServiceGroupContextId(SOAPHeader header, MessageContext msgContext) { + private void extractServiceGroupContextId(SOAPHeader header, MessageContext msgContext) throws AxisFault { OMElement serviceGroupId = header.getFirstChildWithName(new QName(Constants.AXIS2_NAMESPACE_URI, Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX)); if (serviceGroupId != null) { - msgContext.setProperty( PARAM_SERVICE_GROUP_CONTEXT_ID, serviceGroupId.getText()); + String groupId = serviceGroupId.getText(); + ServiceGroupContext serviceGroupContext = msgContext.getSystemContext().getServiceGroupContext(groupId); + if (serviceGroupContext == null) { + throw new AxisFault("Invalid Service Group Id." + groupId); + } + msgContext.setServiceGroupContextId(serviceGroupId.getText()); +// msgContext.setProperty( PARAM_SERVICE_GROUP_CONTEXT_ID, serviceGroupId.getText()); } } Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=290622&r1=290621&r2=290622&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java (original) +++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java Tue Sep 20 22:23:26 2005 @@ -118,7 +118,10 @@ } // add the service group id as a reference parameter String serviceGroupContextId = msgContext.getServiceGroupContextId(); - if (serviceGroupContextId != null && "".equals(serviceGroupContextId)) { + if (serviceGroupContextId != null && !"".equals(serviceGroupContextId)) { + if(epr.getReferenceParameters() == null){ + epr.setReferenceParameters(new AnyContentType()); + } epr.getReferenceParameters().addReferenceValue(new QName(Constants.AXIS2_NAMESPACE_URI, Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX), serviceGroupContextId); } Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java?rev=290622&r1=290621&r2=290622&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java (original) +++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java Tue Sep 20 22:23:26 2005 @@ -17,11 +17,9 @@ package org.apache.axis2.context; import org.apache.axis2.AxisFault; -import org.apache.axis2.addressing.AddressingConstants; import org.apache.axis2.description.ServiceGroupDescription; import org.apache.axis2.engine.AxisConfiguration; import org.apache.axis2.storage.AxisStorage; -import org.apache.axis2.transport.http.AxisServlet; import org.apache.axis2.util.UUIDGenerator; import org.apache.axis2.util.threadpool.ThreadPool; @@ -225,17 +223,10 @@ * @param messageContext */ public ServiceGroupContext fillServiceContextAndServiceGroupContext(MessageContext messageContext) throws AxisFault { - String serviceGroupContextId = messageContext.getServiceGroupContextId(); - if (isNull(serviceGroupContextId)) { - // try to get the id from addressing - serviceGroupContextId = (String) messageContext.getProperty(AddressingConstants.PARAM_SERVICE_GROUP_CONTEXT_ID); - if (serviceContextMap.get(serviceGroupContextId) == null) { - // try session id - serviceGroupContextId = (String) messageContext.getProperty(AxisServlet.SESSION_ID); - } - } + String serviceGroupContextId = messageContext.getServiceGroupContextId(); + // by this time service group context id must have a value. Either from transport or from addressing ServiceGroupContext serviceGroupContext; ServiceContext serviceContext; if (!isNull(serviceGroupContextId) && serviceGroupContextMap.get(serviceGroupContextId) != null) { @@ -290,6 +281,13 @@ serviceGroupContextMap.put(id, serviceGroupContext); serviceGroupContext.setParent(this); } + } + + public ServiceGroupContext getServiceGroupContext(String serviceGroupContextId){ + if(serviceGroupContextMap != null){ + return (ServiceGroupContext) serviceGroupContextMap.get(serviceGroupContextId); + } + return null; } private boolean isNull(String string) { Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java?rev=290622&r1=290621&r2=290622&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java (original) +++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java Tue Sep 20 22:23:26 2005 @@ -57,6 +57,7 @@ outMsgContext.setMessageInformationHeaders(messageInformationHeaders); outMsgContext.setOperationContext(msgContext.getOperationContext()); outMsgContext.setServiceContext(msgContext.getServiceContext()); + outMsgContext.setServiceGroupContextId(msgContext.getServiceGroupContextId()); outMsgContext.setProperty(MessageContext.TRANSPORT_OUT, msgContext.getProperty(MessageContext.TRANSPORT_OUT)); outMsgContext.setProperty(HTTPConstants.HTTPOutTransportInfo, Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java?rev=290622&r1=290621&r2=290622&view=diff ============================================================================== --- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java (original) +++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/HTTPWorker.java Tue Sep 20 22:23:26 2005 @@ -29,6 +29,7 @@ import org.apache.axis2.transport.http.server.SimpleHttpServerConnection; import org.apache.axis2.transport.http.server.SimpleRequest; import org.apache.axis2.transport.http.server.SimpleResponse; +import org.apache.axis2.util.UUIDGenerator; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpVersion; import org.apache.commons.logging.Log; @@ -97,6 +98,7 @@ //set the transport Headers msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, getHeaders(request)); + msgContext.setServiceGroupContextId(UUIDGenerator.getUUID()); //This is way to provide Accsess to the transport information to the transport Sender msgContext.setProperty( 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=290622&r1=290621&r2=290622&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 Tue Sep 20 22:23:26 2005 @@ -6,10 +6,8 @@ import org.apache.axis2.description.ServiceDescription; import org.apache.axis2.engine.util.RequestCounter; import org.apache.axis2.engine.util.RequestCounterMessageReceiver; -import org.apache.axis2.integration.TestingUtils; import org.apache.axis2.integration.UtilServer; import org.apache.axis2.om.OMAbstractFactory; -import org.apache.axis2.om.OMElement; import org.apache.axis2.om.OMNamespace; import org.apache.axis2.soap.SOAPEnvelope; import org.apache.axis2.soap.SOAPFactory; @@ -20,25 +18,39 @@ import javax.xml.namespace.QName; - /* - * Copyright 2001-2004 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @author : Eran Chinthaka (chinthaka@apache.org) - */ +* Copyright 2001-2004 The Apache Software Foundation. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +* @author : Eran Chinthaka (chinthaka@apache.org) +*/ public class ServiceGroupContextTest extends TestCase { + + /** + * This test will first sends a request to a dummy service deployed. That service will get + * message contexts as inputs and will put a property in the service group context to count the + * number of requests. + * Then the client, upon receiving the response, extracts the sgc id from the received message + * (this will come as a reference parameter in the ReplyTo EPR) and sets that as a top level + * soap header in the next request to the same service group. + * Server will correctly identify the service group from the information sent by the client and + * retrieve the sgc earlier used and will use that for the current request as well. + * The service will retrieve the request count from the sgc and increase that by one. + * + * Test will asserts whether the client gets the number of requests as 2, when he invokes two times. + */ + protected EndpointReference targetEPR = new EndpointReference("http://127.0.0.1:" + (UtilServer.TESTING_PORT) + "/axis/services/RequestCounter"); @@ -64,7 +76,7 @@ public void testEchoXMLSync() throws Exception { SOAPFactory fac = OMAbstractFactory.getSOAP11Factory(); - OMElement payload = TestingUtils.createDummyOMElement(); + SOAPEnvelope payload = fac.getDefaultEnvelope(); org.apache.axis2.clientapi.Call call = new org.apache.axis2.clientapi.Call("target/test-resources/intregrationRepo"); @@ -72,28 +84,25 @@ call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, false); call.setWsaAction(operationName.getLocalPart()); - OMElement result = call.invokeBlocking(operationName.getLocalPart(), payload); + SOAPEnvelope result = call.invokeBlocking(operationName.getLocalPart(), payload); -// print(result); OMNamespace axis2Namespace = fac.createOMNamespace(Constants.AXIS2_NAMESPACE_URI, Constants.AXIS2_NAMESPACE_PREFIX); SOAPEnvelope defaultEnvelope = fac.getDefaultEnvelope(); SOAPHeaderBlock soapHeaderBlock = defaultEnvelope.getHeader().addHeaderBlock(Constants.SERVICE_GROUP_ID, axis2Namespace); - soapHeaderBlock.setText(result.getText()); + + String serviceGroupId = result.getHeader().getFirstChildWithName(new QName("ReplyTo")) + .getFirstChildWithName(new QName("ReferenceParameters")). + getFirstChildWithName(new QName("ServiceGroupId")).getText(); + + soapHeaderBlock.setText(serviceGroupId); SOAPEnvelope soapEnvelope = call.invokeBlocking(operationName.getLocalPart(), defaultEnvelope); -// print(soapEnvelope.getBody().getFirstElement()); + String text = soapEnvelope.getBody().getFirstElement().getText(); + assertEquals("Number of requests should be 2", 2, Integer.parseInt(text)); } -// private void print(OMElement result) throws XMLStreamException { -// System.out.println("*******************************************"); -// OMOutputImpl out = new OMOutputImpl(System.out, false); -// result.serializeWithCache(out); -// out.flush(); -// System.out.println("*******************************************"); -// -// } }