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 gd...@apache.org on 2007/05/05 18:16:28 UTC

svn commit: r535544 [1/2] - in /webservices/axis2/trunk/java/modules: addressing/test/org/apache/axis2/handlers/addressing/ clustering/test/org/apache/axis2/clustering/ integration/test/org/apache/axis2/integration/ integration/test/org/apache/axis2/jm...

Author: gdaniels
Date: Sat May  5 09:16:25 2007
New Revision: 535544

URL: http://svn.apache.org/viewvc?view=rev&rev=535544
Log:
Refactor context creation as per recent email thread, part 1.  The goal is twofold.  First to simplify the code and avoid an unneeded class, and second to do a better job of ensuring that the necessary layers in the context hierarchy are correctly configured.  This is "part 1" because there's still some work to do both here and on the Description side to really make this clean - but this gets us a lot of the way.

* Get rid of ContextFactory.

* Now the preferred way to generate contexts is to use the parent context.  So you can create ConfigurationContexts from scratch, then use configContexts to make serviceGroupContexts, etc.

* Implement ContextListener, and the ability to register listeners on ConfigurationContext.  Multiple listeners may be registered, and each one will get a notification whenever any sub-context is created.  Add tests for this.

Added:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java
Removed:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextFactory.java
Modified:
    webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
    webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java
    webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
    webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedServiceDispatcherTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcherTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RequestURIBasedServiceDispatcherTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcherTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/SOAPMessageBodyBasedServiceDispatcherTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EngineWithoutPhaseResolvingTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/util/ThreadContextMigratorTest.java
    webservices/axis2/trunk/java/modules/scripting/test/org/apache/axis2/scripting/ScriptReceiverTest.java
    webservices/axis2/trunk/java/modules/scripting/test/org/apache/axis2/scripting/TestUtils.java
    webservices/axis2/trunk/java/modules/webapp/src/main/webapp/axis2-web/viewServiceContext.jsp

Modified: webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java Sat May  5 09:16:25 2007
@@ -29,8 +29,8 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.handlers.util.TestUtil;
 
 import javax.xml.namespace.QName;
@@ -70,8 +70,9 @@
         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
 
-        MessageContext msgCtxt = ContextFactory.createMessageContext(
-                ConfigurationContextFactory.createDefaultConfigurationContext());
+        ConfigurationContext configCtx = 
+                ConfigurationContextFactory.createDefaultConfigurationContext();
+        MessageContext msgCtxt = configCtx.createMessageContext();
         msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE);
         msgCtxt.setTo(epr);
         msgCtxt.setReplyTo(replyTo);
@@ -104,8 +105,9 @@
     }
 
     public void testHeaderCreationFromMsgCtxtInformation() throws Exception {
-        msgCtxt = ContextFactory.createMessageContext(
-                ConfigurationContextFactory.createDefaultConfigurationContext());
+        ConfigurationContext cfgCtx =
+                ConfigurationContextFactory.createDefaultConfigurationContext();
+        msgCtxt = cfgCtx.createMessageContext();
 
         EndpointReference epr = new EndpointReference("http://www.from.org/service/");
         epr.addReferenceParameter(new QName("Reference2"),
@@ -145,8 +147,9 @@
     }
 
     public void testMustUnderstandSupport() throws Exception {
-        msgCtxt = ContextFactory.createMessageContext(
-                ConfigurationContextFactory.createDefaultConfigurationContext());
+        ConfigurationContext cfgCtx =
+                ConfigurationContextFactory.createDefaultConfigurationContext();
+        msgCtxt = cfgCtx.createMessageContext();
 
         msgCtxt.setProperty(AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS,
                             Boolean.TRUE);
@@ -194,8 +197,9 @@
         EndpointReference eprOne = new EndpointReference("http://whatever.org");
         EndpointReference duplicateEpr = new EndpointReference("http://whatever.duplicate.org");
         RelatesTo reply = new RelatesTo("urn:id");
-        msgCtxt = ContextFactory.createMessageContext(
-                ConfigurationContextFactory.createDefaultConfigurationContext());
+        ConfigurationContext cfgCtx =
+                ConfigurationContextFactory.createDefaultConfigurationContext();
+        msgCtxt = cfgCtx.createMessageContext();
         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
         msgCtxt.setEnvelope(defaultEnvelope);
@@ -227,8 +231,9 @@
         // this will check whether we can add to epr, if there is one already.
         EndpointReference eprOne = new EndpointReference("http://whatever.org");
         RelatesTo custom = new RelatesTo("urn:id", "customRelationship");
-        msgCtxt = ContextFactory.createMessageContext(
-                ConfigurationContextFactory.createDefaultConfigurationContext());
+        ConfigurationContext cfgCtx =
+                ConfigurationContextFactory.createDefaultConfigurationContext();
+        msgCtxt = cfgCtx.createMessageContext();
         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
         OMNamespace addressingNamespace =
@@ -269,8 +274,9 @@
         // this will check whether we can add to epr, if there is one already.
         EndpointReference eprOne = new EndpointReference("http://whatever.org");
         RelatesTo custom = new RelatesTo("urn:id", "customRelationship");
-        msgCtxt = ContextFactory.createMessageContext(
-                ConfigurationContextFactory.createDefaultConfigurationContext());
+        ConfigurationContext cfgCtx =
+                ConfigurationContextFactory.createDefaultConfigurationContext();
+        msgCtxt = cfgCtx.createMessageContext();
         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
         OMNamespace addressingNamespace =

Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java Sat May  5 09:16:25 2007
@@ -15,20 +15,15 @@
  */
 
 package org.apache.axis2.clustering;
-import java.util.Iterator;
 
 import org.apache.axiom.om.util.UUIDGenerator;
-import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
-import org.apache.axis2.cluster.context.ContextManagerListener;
-import org.apache.axis2.cluster.listeners.DefaultContextManagerListener;
-import org.apache.axis2.clustering.configuration.TestConfigurationManagerListener;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import java.util.Iterator;
+
 
 public abstract class ManageContextTestCase extends ClusterManagerTestCase {
 
@@ -43,11 +38,12 @@
 		}
 		
 		//Adding contexts to the Node1
-		ServiceGroupContext serviceGroupContext1 = ContextFactory.createServiceGroupContext(configurationContext1, serviceGroup1);
+		ServiceGroupContext serviceGroupContext1 =
+                configurationContext1.createServiceGroupContext(serviceGroup1);
 		String sgcID = UUIDGenerator.getUUID();
 		serviceGroupContext1.setId(sgcID);
 		
-		ServiceContext serviceContext1 = ContextFactory.createServiceContext(serviceGroupContext1, service1);
+		ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1);
 		
 		//adding the Contexts to the first configContext 
 		clusterManager1.getContextManager().addContext(serviceGroupContext1);

Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java Sat May  5 09:16:25 2007
@@ -19,12 +19,6 @@
 import java.util.Iterator;
 
 import org.apache.axiom.om.util.UUIDGenerator;
-import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
-import org.apache.axis2.cluster.context.ContextManagerListener;
-import org.apache.axis2.cluster.listeners.DefaultContextManagerListener;
-import org.apache.axis2.clustering.configuration.TestConfigurationManagerListener;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.commons.logging.Log;
@@ -63,11 +57,10 @@
 		sgcID = UUIDGenerator.getUUID();
 
 		//Adding contexts to the Node1
-		serviceGroupContext1 = ContextFactory.createServiceGroupContext(configurationContext1,
-				serviceGroup1);
+		serviceGroupContext1 = configurationContext1.createServiceGroupContext(serviceGroup1);
 		serviceGroupContext1.setId(sgcID);
 
-		serviceContext1 = ContextFactory.createServiceContext(serviceGroupContext1, service1);
+		serviceContext1 = serviceGroupContext1.getServiceContext(service1);
 		serviceGroupContext1.addServiceContext(serviceContext1);
 
 		configurationContext1.setProperty(key1, val1);

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java Sat May  5 09:16:25 2007
@@ -21,7 +21,6 @@
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.axis2.deployment.DeploymentEngine;
@@ -189,9 +188,9 @@
         configContext.getAxisConfiguration().addService(service);
 
 
-        ServiceGroupContext serviceGroupContext = ContextFactory
-                .createServiceGroupContext(configContext, (AxisServiceGroup)service.getParent());
-        return ContextFactory.createServiceContext(serviceGroupContext, service);
+        ServiceGroupContext serviceGroupContext =
+                configContext.createServiceGroupContext((AxisServiceGroup)service.getParent());
+        return serviceGroupContext.getServiceContext(service);
     }
 
     static class AddressingFilter implements FilenameFilter {
@@ -245,9 +244,8 @@
 
         configContext.getAxisConfiguration().addService(service);
         ServiceGroupContext serviceGroupContext =
-                ContextFactory.createServiceGroupContext(configContext,
-                                                         (AxisServiceGroup)service.getParent());
-        return ContextFactory.createServiceContext(serviceGroupContext, service);
+                configContext.createServiceGroupContext((AxisServiceGroup)service.getParent());
+        return serviceGroupContext.getServiceContext(service);
     }
 
 }

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java Sat May  5 09:16:25 2007
@@ -19,7 +19,6 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.transport.tcp.TCPServer;
@@ -44,8 +43,8 @@
             throws AxisFault {
 
         receiver.getConfigurationContext().getAxisConfiguration().addService(service);
-        ContextFactory.createServiceGroupContext(receiver.getConfigurationContext(),
-                                                 (AxisServiceGroup)service.getParent());
+        receiver.getConfigurationContext().
+                createServiceGroupContext((AxisServiceGroup)service.getParent());
     }
 
     public static synchronized void unDeployService(QName service)

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java Sat May  5 09:16:25 2007
@@ -36,7 +36,6 @@
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
@@ -227,7 +226,7 @@
         SOAPEnvelope envelope = factory.getDefaultEnvelope();
         envelope.getBody().addChild(method);
 
-        MessageContext requestContext = ContextFactory.createMessageContext(configContext);
+        MessageContext requestContext = configContext.createMessageContext();
         requestContext.setAxisService(clientService);
         requestContext.setAxisOperation(opdesc);
         requestContext.setEnvelope(envelope);

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java Sat May  5 09:16:25 2007
@@ -33,7 +33,6 @@
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.engine.Echo;
@@ -80,7 +79,7 @@
                     .getNewConfigurationContext(Constants.TESTING_REPOSITORY);
             serviceClient = new ServiceClient(configContext, clientService);
 
-            MessageContext msgctx = ContextFactory.createMessageContext(configContext);
+            MessageContext msgctx = configContext.createMessageContext();
 
             msgctx.setEnvelope(envelope);
 

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java Sat May  5 09:16:25 2007
@@ -34,7 +34,6 @@
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.databinding.utils.BeanUtil;
@@ -118,11 +117,11 @@
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -171,11 +170,11 @@
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -219,11 +218,11 @@
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -271,11 +270,11 @@
             options.setTo(targetEPR);
             options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-            ConfigurationContext configConetxt = ConfigurationContextFactory
+            ConfigurationContext configContext = ConfigurationContextFactory
                     .createConfigurationContextFromFileSystem(null, null);
-            RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+            RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
             rpcClient.setOptions(options);
-            MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+            MessageContext reqMessageContext = configContext.createMessageContext();;
             OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
             opClinet.setOptions(options);
             reqMessageContext.setEnvelope(envelope);
@@ -333,11 +332,11 @@
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -395,11 +394,11 @@
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();;
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -458,11 +457,11 @@
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();;
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -527,11 +526,11 @@
         Options options = new Options();
         options.setTo(targetEPR);
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);
@@ -595,11 +594,11 @@
         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
 
 
-        ConfigurationContext configConetxt = ConfigurationContextFactory
+        ConfigurationContext configContext = ConfigurationContextFactory
                 .createConfigurationContextFromFileSystem(null, null);
-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
         rpcClient.setOptions(options);
-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
+        MessageContext reqMessageContext = configContext.createMessageContext();
         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
         opClinet.setOptions(options);
         reqMessageContext.setEnvelope(envelope);

Modified: webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java (original)
+++ webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java Sat May  5 09:16:25 2007
@@ -47,7 +47,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Vector;
 import java.util.ArrayList;
 
 public class CodeGenerationUtility {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java Sat May  5 09:16:25 2007
@@ -22,7 +22,6 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
@@ -69,7 +68,7 @@
         this.sc = sc;
         this.options = new Options(options);
         completed = false;
-        oc = ContextFactory.createOperationContext(axisOp, sc);
+        oc = sc.createOperationContext(axisOp);
     }
 
     /**

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java Sat May  5 09:16:25 2007
@@ -29,7 +29,6 @@
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
@@ -135,26 +134,41 @@
 
     private void configureServiceClient(ConfigurationContext configContext, AxisService axisService)
             throws AxisFault {
-        initializeTransports(configContext);
+        if (configContext == null) {
+            if (ListenerManager.defaultConfigurationContext == null) {
+                configContext = ConfigurationContextFactory.
+                        createConfigurationContextFromFileSystem(null, null);
+                createConfigCtx = true;
+            } else {
+                configContext = ListenerManager.defaultConfigurationContext;
+            }
+        }
+        this.configContext = configContext;
+
+        // Initialize transports
+        ListenerManager transportManager = configContext.getListenerManager();
+        if (transportManager == null) {
+            transportManager = new ListenerManager();
+            transportManager.init(this.configContext);
+        }
+
         // save the axisConfig and service
-        this.axisConfig = this.configContext.getAxisConfiguration();
-        if (axisService != null) {
-            this.axisService = axisService;
-        } else {
-            this.axisService = createAnonymousService();
+        axisConfig = configContext.getAxisConfiguration();
+        if (axisService == null) {
+            axisService = createAnonymousService();
         }
-        if (this.axisConfig.getService(this.axisService.getName()) == null) {
-            this.axisService.setClientSide(true);
-            this.axisConfig.addService(this.axisService);
+        this.axisService = axisService;
+        if (axisConfig.getService(axisService.getName()) == null) {
+            axisService.setClientSide(true);
+            axisConfig.addService(axisService);
         } else {
             throw new AxisFault(Messages.getMessage(
                     "twoservicecannothavesamename",
-                    this.axisService.getName()));
+                    axisService.getName()));
         }
-        AxisServiceGroup axisServiceGroup = (AxisServiceGroup) this.axisService.getParent();
-        ServiceGroupContext sgc = ContextFactory.createServiceGroupContext(this.configContext,
-                                                                           axisServiceGroup);
-        this.serviceContext = ContextFactory.createServiceContext(sgc, this.axisService);
+        AxisServiceGroup axisServiceGroup = (AxisServiceGroup)axisService.getParent();
+        ServiceGroupContext sgc = configContext.createServiceGroupContext(axisServiceGroup);
+        serviceContext = sgc.getServiceContext(axisService);
     }
 
 
@@ -197,28 +211,6 @@
                                                                                       options));
     }
 
-    private void initializeTransports(ConfigurationContext configContext) throws AxisFault {
-        ListenerManager transportManager;
-        if (configContext != null) {
-            this.configContext = configContext;
-            transportManager = configContext.getListenerManager();
-            if (transportManager == null) {
-                transportManager = new ListenerManager();
-                transportManager.init(this.configContext);
-            }
-        } else {
-            if (ListenerManager.defaultConfigurationContext == null) {
-                this.configContext = ConfigurationContextFactory.
-                        createConfigurationContextFromFileSystem(null, null);
-                transportManager = new ListenerManager();
-                transportManager.init(this.configContext);
-                createConfigCtx = true;
-            } else {
-                this.configContext = ListenerManager.defaultConfigurationContext;
-            }
-        }
-    }
-
     /**
      * Create a service client by assuming an anonymous service and any other
      * necessary information.
@@ -756,9 +748,7 @@
 
         AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
         ServiceGroupContext serviceGroupContext =
-                ContextFactory.createServiceGroupContext(configContext,
-                                                         axisServiceGroup);
-        this.serviceContext = ContextFactory.createServiceContext(
-                serviceGroupContext, this.axisService);
+                configContext.createServiceGroupContext(axisServiceGroup);
+        this.serviceContext = serviceGroupContext.getServiceContext(axisService);
     }
 }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java Sat May  5 09:16:25 2007
@@ -123,8 +123,7 @@
      * @param messageContext : MessageContext
      * @throws org.apache.axis2.AxisFault : If something goes wrong
      */
-    public void fillServiceContextAndServiceGroupContext(
-            MessageContext messageContext)
+    public void fillServiceContextAndServiceGroupContext(MessageContext messageContext)
             throws AxisFault {
         // by this time service group context id must have a value. Either from transport or from addressing
         ServiceGroupContext serviceGroupContext;
@@ -146,8 +145,8 @@
                         axisServiceGroup = (AxisServiceGroup) axisService.getParent();
                         messageContext.setAxisServiceGroup(axisServiceGroup);
                     }
-                    serviceGroupContext = ContextFactory.createServiceGroupContext(
-                            messageContext.getConfigurationContext(), axisServiceGroup);
+                    ConfigurationContext cfgCtx = messageContext.getConfigurationContext();
+                    serviceGroupContext = cfgCtx.createServiceGroupContext(axisServiceGroup);
                     applicationSessionServiceGroupContextTable
                             .put(serviceGroupName, serviceGroupContext);
 
@@ -160,8 +159,8 @@
                     }
                 }
                 messageContext.setServiceGroupContext(serviceGroupContext);
-                messageContext.setServiceContext(ContextFactory.createServiceContext(
-                        serviceGroupContext, axisService));
+                messageContext.setServiceContext(
+                        serviceGroupContext.getServiceContext(axisService));
             } else if (Constants.SCOPE_SOAP_SESSION.equals(scope)) {
                 String serviceGroupContextId = messageContext.getServiceGroupContextId();
                 if (serviceGroupContextId != null) {
@@ -173,10 +172,8 @@
                     }
                 } else {
                     AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
-                    serviceGroupContext =
-                            ContextFactory.createServiceGroupContext(this, axisServiceGroup);
-                    serviceContext =
-                            ContextFactory.createServiceContext(serviceGroupContext, axisService);
+                    serviceGroupContext = createServiceGroupContext(axisServiceGroup);
+                    serviceContext = serviceGroupContext.getServiceContext(axisService);
                     // set the serviceGroupContextID
                     serviceGroupContextId = UUIDGenerator.getUUID();
                     serviceGroupContext.setId(serviceGroupContextId);
@@ -194,16 +191,13 @@
                 }
                 messageContext.setServiceGroupContext(serviceGroupContext);
                 messageContext.setServiceContext(
-                        ContextFactory.createServiceContext(serviceGroupContext, axisService));
+                        serviceGroupContext.getServiceContext(axisService));
             } else if (Constants.SCOPE_REQUEST.equals(scope)) {
                 AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
-                serviceGroupContext =
-                        ContextFactory.createServiceGroupContext(this, axisServiceGroup);
+                serviceGroupContext = createServiceGroupContext(axisServiceGroup);
                 messageContext.setServiceGroupContext(serviceGroupContext);
-                serviceContext =
-                        ContextFactory.createServiceContext(serviceGroupContext, axisService);
+                serviceContext = serviceGroupContext.getServiceContext(axisService);
                 messageContext.setServiceContext(serviceContext);
-                messageContext.getOperationContext().setParent(serviceContext);
             }
         }
         if (messageContext.getOperationContext() != null) {
@@ -335,6 +329,56 @@
         // if we got here, we did not find an operation context
         // that fits the criteria
         return null;
+    }
+
+    protected ArrayList contextListeners;
+
+    /**
+     * Register a ContextListener to be notified of all sub-context creation events.
+     * Note that we currently only support a single listener.
+     *
+     * @param contextListener a ContextListener
+     */
+    public void registerContextListener(ContextListener contextListener) {
+        if (contextListeners == null) contextListeners = new ArrayList();
+        contextListeners.add(contextListener);
+    }
+
+    /**
+     * Inform any listeners of a new context
+     *
+     * @param context the just-created subcontext
+     */
+    void contextCreated(AbstractContext context) {
+        if (contextListeners == null) return;
+        for (Iterator i = contextListeners.iterator(); i.hasNext();) {
+            ContextListener listener = (ContextListener)i.next();
+            listener.contextCreated(context);
+        }
+    }
+
+    /**
+     * Create a MessageContext, and notify any registered ContextListener.
+     * 
+     * @return a new MessageContext
+     */
+    public MessageContext createMessageContext() {
+        MessageContext msgCtx = new MessageContext(this);
+        contextCreated(msgCtx);
+        return msgCtx;
+    }
+
+    /**
+     * Create a ServiceGroupContext for the specified service group, and notify any
+     * registered ContextListener.
+     *
+     * @param serviceGroup an AxisServiceGroup
+     * @return a new ServiceGroupContext
+     */
+    public ServiceGroupContext createServiceGroupContext(AxisServiceGroup serviceGroup) {
+        ServiceGroupContext sgCtx = new ServiceGroupContext(this, serviceGroup);
+        contextCreated(sgCtx);
+        return sgCtx;
     }
 
     /**

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java Sat May  5 09:16:25 2007
@@ -85,8 +85,8 @@
             AxisServiceGroup axisServiceGroup = (AxisServiceGroup) serviceGroups.next();
             String maxScope = SessionUtils.calculateMaxScopeForServiceGroup(axisServiceGroup);
             if (Constants.SCOPE_APPLICATION.equals(maxScope)) {
-                ServiceGroupContext serviceGroupContext = ContextFactory.createServiceGroupContext(
-                        configCtx, axisServiceGroup);
+                ServiceGroupContext serviceGroupContext =
+                        configCtx.createServiceGroupContext(axisServiceGroup);
                 configCtx.addServiceGroupContextintoApplicatoionScopeTable(serviceGroupContext);
                 DependencyManager.initService(serviceGroupContext);
             }

Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java?view=auto&rev=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java Sat May  5 09:16:25 2007
@@ -0,0 +1,26 @@
+package org.apache.axis2.context;
+
+/*
+* Copyright 2007 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.
+*/
+
+/**
+ * A ContextListener gets informed about new context creations.  Register one with
+ * a ConfigurationContext and you'll get contextCreated() notifications for every
+ * sub-context creation event.
+ */
+public interface ContextListener {
+    void contextCreated(AbstractContext context);
+}

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Sat May  5 09:16:25 2007
@@ -501,6 +501,16 @@
         options = new Options();
     }
 
+    /**
+     * Constructor has package access
+     *
+     * @param configContext the associated ConfigurationContext
+     */
+    MessageContext(ConfigurationContext configContext) {
+        this();
+        setConfigurationContext(configContext);
+    }
+
     public String toString() {
         return getLogIDString();
     }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java Sat May  5 09:16:25 2007
@@ -38,7 +38,7 @@
                 || (WSDLConstants.MEP_CONSTANT_OUT_IN == mepURI) ||
                 (WSDLConstants.MEP_CONSTANT_OUT_OPTIONAL_IN == mepURI)
                 || (WSDLConstants.MEP_CONSTANT_ROBUST_OUT_ONLY == mepURI)) {
-            return ContextFactory.createOperationContext(axisOp, serviceContext);
+            return serviceContext.createOperationContext(axisOp);
         } else {
             throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));
         }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java Sat May  5 09:16:25 2007
@@ -131,16 +131,22 @@
     // end MetaData section
     //----------------------------------------------------------------
 
-    // simple constructor
+    /**
+     * Public constructor (only here because this class is Externalizable)
+     */
     public ServiceContext() {
-        super(null);
     }
 
-
-    public ServiceContext(AxisService serviceConfig, ServiceGroupContext serviceGroupContext) {
+    /**
+     * Constructor (package access, should only be used by ServiceGroupContext)
+     *
+     * @param axisService the AxisService for which to create a context
+     * @param serviceGroupContext the parent ServiceGroupContext
+     */
+    ServiceContext(AxisService axisService, ServiceGroupContext serviceGroupContext) {
         super(serviceGroupContext);
         this.serviceGroupContext = serviceGroupContext;
-        this.axisService = serviceConfig;
+        this.axisService = axisService;
         this.configContext = (ConfigurationContext) parent.getParent();
     }
 
@@ -150,7 +156,8 @@
     }
 
     public OperationContext createOperationContext(AxisOperation axisOp) {
-        OperationContext ctx = ContextFactory.createOperationContext(axisOp, this);
+        OperationContext ctx = new OperationContext(axisOp, this);
+        configContext.contextCreated(ctx);
         return ctx;
     }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java Sat May  5 09:16:25 2007
@@ -144,6 +144,7 @@
         ServiceContext serviceContext = (ServiceContext) serviceContextMap.get(service.getName());
         if (serviceContext == null) {
             serviceContext = new ServiceContext(service, this);
+            getRootContext().contextCreated(serviceContext);
             serviceContextMap.put(service.getName(), serviceContext);
 
             ClusterManager clusterManager = axisService.getAxisConfiguration().getClusterManager();

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java Sat May  5 09:16:25 2007
@@ -26,7 +26,6 @@
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
@@ -371,7 +370,7 @@
 
             // Its a new incoming message so get the factory to create a new
             // one
-            operationContext = ContextFactory.createOperationContext(this, serviceContext);
+            operationContext = serviceContext.createOperationContext(this);
         } else {
 
             // So this message is part of an ongoing MEP

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Sat May  5 09:16:25 2007
@@ -27,7 +27,6 @@
 import org.apache.axis2.client.async.AsyncResult;
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
@@ -312,8 +311,8 @@
 
         // create the responseMessageContext
 
-        MessageContext responseMessageContext = ContextFactory.createMessageContext(
-                msgctx.getConfigurationContext());
+        MessageContext responseMessageContext =
+                msgctx.getConfigurationContext().createMessageContext();
 
         // This is a hack - Needs to change
         responseMessageContext.setOptions(options);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java Sat May  5 09:16:25 2007
@@ -21,7 +21,6 @@
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
@@ -245,7 +244,7 @@
         // setting message ID if it null
 
         // create the operation context for myself
-        OperationContext oc = ContextFactory.createOperationContext(axisOp, sc);
+        OperationContext oc = sc.createOperationContext(axisOp);
         oc.addMessageContext(mc);
         // ship it out
         AxisEngine engine = new AxisEngine(cc);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java Sat May  5 09:16:25 2007
@@ -21,7 +21,6 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.client.OperationClient;
 import org.apache.axis2.client.Options;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.engine.AxisEngine;
@@ -62,8 +61,8 @@
             AxisEngine engine = new AxisEngine(msgctx.getConfigurationContext());
 
             // create the responseMessageContext
-            MessageContext responseMessageContext = ContextFactory.createMessageContext(
-                    msgctx.getConfigurationContext());
+            MessageContext responseMessageContext =
+                    msgctx.getConfigurationContext().createMessageContext();
 
             // This is a hack - Needs to change
             responseMessageContext.setOptions(options);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java Sat May  5 09:16:25 2007
@@ -19,7 +19,6 @@
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.axis2.description.AxisService;
@@ -79,8 +78,7 @@
         Iterator serviceItr = serviceGroup.getServices();
         while (serviceItr.hasNext()) {
             AxisService axisService = (AxisService) serviceItr.next();
-            ServiceContext serviceContext = ContextFactory.createServiceContext(
-                    serviceGroupContext, axisService);
+            ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
             AxisService service = serviceContext.getAxisService();
             ClassLoader classLoader = service.getClassLoader();
             Parameter implInfoParam = service.getParameter(Constants.SERVICE_CLASS);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java Sat May  5 09:16:25 2007
@@ -4,12 +4,12 @@
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingHelper;
 import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.axis2.context.SessionContext;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
@@ -170,30 +170,25 @@
             msgContext.setServiceGroupContext(serviceGroupContext);
             msgContext.setServiceGroupContextId(serviceGroupContext.getId());
         } else {    // 2. if null, create new opCtxt
-            operationContext = ContextFactory.createOperationContext(axisOperation, serviceContext);
-
-            axisOperation.registerMessageContext(msgContext, operationContext);
-            if (serviceContext != null) {
-                // no need to added to configuration conetxt , since we are happy in
-                //  storing in session context
-                operationContext.setParent(serviceContext);
-            } else {
+            if (serviceContext == null) {
                 // fill the service group context and service context info
-                msgContext.getConfigurationContext().fillServiceContextAndServiceGroupContext(
-                        msgContext);
+                msgContext.getConfigurationContext().
+                        fillServiceContextAndServiceGroupContext(msgContext);
+                serviceContext = msgContext.getServiceContext();
             }
+            operationContext = serviceContext.createOperationContext(axisOperation);
+            axisOperation.registerMessageContext(msgContext, operationContext);
         }
-        serviceContext = msgContext.getServiceContext();
-        if (serviceContext != null) {
-            serviceContext.setMyEPR(msgContext.getTo());
-        }
+
+        serviceContext.setMyEPR(msgContext.getTo());
     }
 
     /**
      * To check wether the incoming request has come in valid transport , simpley the transports
      * that service author wants to expose
      *
-     * @param msgctx
+     * @param msgctx the current MessageContext
+     * @throws AxisFault in case of error
      */
     private void validateTransport(MessageContext msgctx) throws AxisFault {
         AxisService service = msgctx.getAxisService();
@@ -229,14 +224,13 @@
             }
         }
         String serviceGroupName = msgContext.getAxisServiceGroup().getServiceGroupName();
-        ServiceGroupContext serviceGroupContext = sessionContext.getServiceGroupContext(
-                serviceGroupName);
+        ServiceGroupContext serviceGroupContext =
+                sessionContext.getServiceGroupContext(serviceGroupName);
         if (serviceGroupContext != null) {
             //setting service group context
             msgContext.setServiceGroupContext(serviceGroupContext);
-            // setting Service conetxt
-            msgContext.setServiceContext(
-                    ContextFactory.createServiceContext(serviceGroupContext, service));
+            // setting Service context
+            msgContext.setServiceContext(serviceGroupContext.getServiceContext(service));
         } else {
             createAndFillContexts(service, msgContext, sessionContext);
         }
@@ -253,12 +247,11 @@
                                        SessionContext sessionContext) throws AxisFault {
         ServiceGroupContext serviceGroupContext;
         AxisServiceGroup axisServiceGroup = (AxisServiceGroup) service.getParent();
-        serviceGroupContext = ContextFactory.createServiceGroupContext(
-                msgContext.getConfigurationContext(), axisServiceGroup);
+        ConfigurationContext configCtx = msgContext.getConfigurationContext();
+        serviceGroupContext = configCtx.createServiceGroupContext(axisServiceGroup);
 
         msgContext.setServiceGroupContext(serviceGroupContext);
-        ServiceContext serviceContext =
-                ContextFactory.createServiceContext(serviceGroupContext, service);
+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(service);
         msgContext.setServiceContext(serviceContext);
         if (sessionContext != null) {
             sessionContext.addServiceContext(serviceContext);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Sat May  5 09:16:25 2007
@@ -29,7 +29,6 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.SessionContext;
@@ -600,7 +599,7 @@
     protected MessageContext createMessageContext(HttpServletRequest request,
                                                   HttpServletResponse response,
                                                   boolean invocationType) throws IOException {
-        MessageContext msgContext = ContextFactory.createMessageContext(configContext);
+        MessageContext msgContext = configContext.createMessageContext();
         String requestURI = request.getRequestURI();
 
         String trsPrefix = request.getRequestURL().toString();

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Sat May  5 09:16:25 2007
@@ -39,7 +39,6 @@
 import org.apache.axis2.addressing.AddressingHelper;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
@@ -114,7 +113,7 @@
         this.configurationContext = configurationContext;
         this.worker = worker;
 
-        this.msgContext = ContextFactory.createMessageContext(configurationContext);
+        this.msgContext = configurationContext.createMessageContext();
         this.msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
     }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java Sat May  5 09:16:25 2007
@@ -22,7 +22,6 @@
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.util.MessageContextBuilder;
@@ -128,7 +127,7 @@
         InputStream in = JMSUtils.getInputStream(message);
 
         try {
-            MessageContext msgContext = ContextFactory.createMessageContext(axisConf);
+            MessageContext msgContext = axisConf.createMessageContext();
 
             // get destination and create correct EPR
             Destination dest = message.getJMSDestination();

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java Sat May  5 09:16:25 2007
@@ -24,7 +24,6 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.builder.BuilderUtil;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
@@ -58,7 +57,7 @@
 
             tOut.setSender(new LocalResponder(sender));
 
-            MessageContext msgCtx = ContextFactory.createMessageContext(confContext);
+            MessageContext msgCtx = confContext.createMessageContext();
             msgCtx.setTransportIn(tIn);
             msgCtx.setTransportOut(tOut);
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java Sat May  5 09:16:25 2007
@@ -315,7 +315,7 @@
                         .getTransportOut(org.apache.axis2.Constants.TRANSPORT_MAIL);
         if ((transportIn != null) && (transportOut != null)) {
             // create Message Context
-            msgContext = ContextFactory.createMessageContext(configurationContext);
+            msgContext = configurationContext.createMessageContext();
             msgContext.setTransportIn(transportIn);
             msgContext.setTransportOut(transportOut);
             msgContext.setServerSide(true);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java Sat May  5 09:16:25 2007
@@ -24,7 +24,6 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.builder.BuilderUtil;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.transport.mail.Constants;
@@ -73,7 +72,7 @@
 
         // create and initialize a message context
         try {
-            msgContext = ContextFactory.createMessageContext(confContext);
+            msgContext = confContext.createMessageContext();
             msgContext.setTransportIn(confContext.getAxisConfiguration().getTransportIn(
                     org.apache.axis2.Constants.TRANSPORT_MAIL));
             msgContext.setTransportOut(confContext.getAxisConfiguration().getTransportOut(

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java Sat May  5 09:16:25 2007
@@ -23,7 +23,6 @@
 import org.apache.axis2.Constants;
 import org.apache.axis2.builder.BuilderUtil;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
@@ -67,7 +66,7 @@
             if ((transportOut != null) && (transportIn != null)) {
 
                 // create the Message Context and fill in the values
-                msgContext = ContextFactory.createMessageContext(configurationContext);
+                msgContext = configurationContext.createMessageContext();
                 msgContext.setIncomingTransportName(Constants.TRANSPORT_TCP);
                 msgContext.setTransportIn(transportIn);
                 msgContext.setTransportOut(transportOut);

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java Sat May  5 09:16:25 2007
@@ -39,7 +39,6 @@
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
@@ -66,8 +65,8 @@
      */
     private static MessageContext createResponseMessageContext(MessageContext inMessageContext)
             throws AxisFault {
-        MessageContext newmsgCtx = ContextFactory.createMessageContext(
-                inMessageContext.getConfigurationContext());
+        MessageContext newmsgCtx =
+                inMessageContext.getConfigurationContext().createMessageContext();
 
         newmsgCtx.setSessionContext(inMessageContext.getSessionContext());
         newmsgCtx.setTransportIn(inMessageContext.getTransportIn());

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java Sat May  5 09:16:25 2007
@@ -26,7 +26,6 @@
 import org.apache.axis2.cluster.context.ContextManager;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
@@ -143,13 +142,12 @@
                                                                            ConfigurationContext configurationContext) throws AxisFault {
         String serviceGroupContextId = UUIDGenerator.getUUID();
         ServiceGroupContext serviceGroupContext =
-                ContextFactory.createServiceGroupContext(configurationContext,
-                                                         (AxisServiceGroup) axisService
-                                                                 .getParent());
+                configurationContext.createServiceGroupContext((AxisServiceGroup)axisService
+                        .getParent());
 
         serviceGroupContext.setId(serviceGroupContextId);
         configurationContext.registerServiceGroupContextintoSoapSessionTable(serviceGroupContext);
-        ServiceContext serviceContext = new ServiceContext(axisService, serviceGroupContext);
+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
 
         ClusterManager clusterManager =
                 configurationContext.getAxisConfiguration().getClusterManager();

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java Sat May  5 09:16:25 2007
@@ -41,14 +41,13 @@
         axisService.addOperation(axisOperation);
         axisConfiguration.addService(axisService);
         configurationContext = new ConfigurationContext(axisConfiguration);
-        msgctx = ContextFactory.createMessageContext(configurationContext);
+        msgctx = configurationContext.createMessageContext();
     }
 
     public void testCompleteHierarchy() throws AxisFault {
-        ServiceGroupContext serviceGroupContext = ContextFactory.createServiceGroupContext(
-                configurationContext, (AxisServiceGroup) axisService.getParent());
-        ServiceContext serviceContext =
-                ContextFactory.createServiceContext(serviceGroupContext, axisService);
+        ServiceGroupContext serviceGroupContext = configurationContext.createServiceGroupContext(
+                (AxisServiceGroup) axisService.getParent());
+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
         OperationContext opContext = axisOperation.findOperationContext(msgctx,
                                                                         serviceContext);
         axisOperation.registerOperationContext(msgctx, opContext);

Added: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java?view=auto&rev=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java Sat May  5 09:16:25 2007
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2007 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.
+ */
+package org.apache.axis2.context;
+
+import junit.framework.TestCase;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.InOutAxisOperation;
+
+import javax.xml.namespace.QName;
+
+public class ContextListenerTest extends TestCase {
+    static class MyListener implements ContextListener {
+        private AbstractContext lastContext;
+
+        public void contextCreated(AbstractContext context) {
+            lastContext = context;
+        }
+
+        public AbstractContext getLastContext() {
+            return lastContext;
+        }
+    }
+
+    /**
+     * Confirm that creating contexts at various levels correctly causes notifications to
+     * ContextListeners that are registered on a given ConfigurationContext.
+     *
+     * @throws Exception if an error occurs
+     */
+    public void testContextListener() throws Exception {
+        // Set up metadata
+        AxisConfiguration axisConfig = new AxisConfiguration();
+        ConfigurationContext configCtx = new ConfigurationContext(axisConfig);
+        AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
+        AxisService service = new AxisService("TestService");
+        AxisOperation operation = new InOutAxisOperation(new QName("ns", "op1"));
+        service.addOperation(operation);
+        serviceGroup.addService(service);
+
+        // Register a listener and make sure it starts out clean
+        MyListener listener = new MyListener();
+        configCtx.registerContextListener(listener);
+        assertNull(listener.getLastContext());
+
+        MessageContext mc = configCtx.createMessageContext();
+        assertNotNull(mc);
+        assertEquals("MessageContext not stored", mc, listener.getLastContext());
+
+        ServiceGroupContext sgc = configCtx.createServiceGroupContext(serviceGroup);
+        assertNotNull(sgc);
+        assertEquals("ServiceGroupContext not stored", sgc, listener.getLastContext());
+
+        ServiceContext sc = sgc.getServiceContext(service);
+        assertNotNull(sc);
+        assertEquals("ServiceContext not stored", sc, listener.getLastContext());
+
+        OperationContext oc = sc.createOperationContext(operation);
+        assertNotNull(oc);
+        assertEquals("OperationContext not stored", oc, listener.getLastContext());
+
+        // Try a second listener and make sure they both get notified
+        MyListener listener2 = new MyListener();
+        configCtx.registerContextListener(listener2);
+
+        mc = configCtx.createMessageContext();
+        assertNotNull(mc);
+        assertEquals("MessageContext not stored", mc, listener.getLastContext());
+        assertEquals("MessageContext not stored in listener 2", mc, listener2.getLastContext());
+    }
+}

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java Sat May  5 09:16:25 2007
@@ -43,10 +43,9 @@
 
         AxisService axisService = new AxisService("TempSC");
         configContext.getAxisConfiguration().addService(axisService);
-        ServiceGroupContext sgc = ContextFactory.createServiceGroupContext(configContext,
-                                                                           (AxisServiceGroup) axisService
-                                                                                   .getParent());
-        ServiceContext sessionContext = ContextFactory.createServiceContext(sgc, axisService);
+        ServiceGroupContext sgc = configContext.createServiceGroupContext(
+                (AxisServiceGroup) axisService.getParent());
+        ServiceContext sessionContext = sgc.getServiceContext(axisService);
         MessageContext messageContext1 = this.getBasicMessageContext();
 
         messageContext1.setMessageID(UUIDGenerator.getUUID());
@@ -66,7 +65,7 @@
     }
 
     public MessageContext getBasicMessageContext() throws AxisFault {
-        MessageContext messageContext = ContextFactory.createMessageContext(configContext);
+        MessageContext messageContext = configContext.createMessageContext();
         messageContext.setTransportIn(new TransportInDescription("axis2"));
         messageContext.setTransportOut(new TransportOutDescription("axis2"));
 

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java?view=diff&rev=535544&r1=535543&r2=535544
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java Sat May  5 09:16:25 2007
@@ -17,12 +17,14 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.InOnlyAxisOperation;
+import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.engine.AxisConfiguration;
 
 import javax.xml.namespace.QName;
@@ -42,11 +44,13 @@
         as1.addOperation(operation2);
 
         ConfigurationContext cc = new ConfigurationContext(ac);
-        OperationContext oc1 = ContextFactory.createOperationContext(operation1, null);
-        OperationContext oc2 = ContextFactory.createOperationContext(operation2, null);
+        ServiceGroupContext sgc = cc.createServiceGroupContext((AxisServiceGroup)as1.getParent());
+        ServiceContext serviceContext = sgc.getServiceContext(as1);
+        OperationContext oc1 = serviceContext.createOperationContext(operation1);
+        OperationContext oc2 = serviceContext.createOperationContext(operation2);
         cc.registerOperationContext("urn:org.apache.axis2.dispatchers.messageid:123", oc1);
         cc.registerOperationContext("urn:org.apache.axis2.dispatchers.messageid:456", oc2);
-        messageContext = ContextFactory.createMessageContext(cc);
+        messageContext = cc.createMessageContext();
         messageContext
                 .addRelatesTo(new RelatesTo("urn:org.apache.axis2.dispatchers.messageid:456"));
         messageContext.setAxisService(as1);



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Re: [axis2] Re: svn commit: r535544 [1/2] - in /webservices/axis2/trunk/java/modules: addressing/test/org/apache/axis2/handlers/addressing/ clustering/test/org/apache/axis2/clustering/ integration/test/org/apache/axis2/integration/ integration/test/org/apache/axis2/jm...

Posted by Sanjiva Weerawarana <sa...@opensource.lk>.
Glen Daniels wrote:
> 
> Yup, I was thinking exactly the same thing. :)  The thing is, the other 
> methods all definitively *create* new Context objects - the 
> ServiceGroupContext.getServiceContext() one finds OR creates a 
> ServiceContext (depending on whether there already is one for that 
> service), so "get" actually may be a little more appropriate here.  This 
> is one of the reasons I labeled that checkin "part one", and I'd like to 
> continue discussing these relationships in context of the design we want 
> for ServiceContext/ServiceGroupContext and session scoping.

Please don't change any of the scoping logic without serious discussion on 
the list! I know you've had reservations about the current approach from 
the beginning but I personally don't agree that something is broken!

Sanjiva.
-- 
Sanjiva Weerawarana, Ph.D.
Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Director; Open Source Initiative; http://www.opensource.org/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[axis2] Re: svn commit: r535544 [1/2] - in /webservices/axis2/trunk/java/modules: addressing/test/org/apache/axis2/handlers/addressing/ clustering/test/org/apache/axis2/clustering/ integration/test/org/apache/axis2/integration/ integration/test/org/apache/axis2/jm...

Posted by Glen Daniels <gl...@thoughtcraft.com>.
Hi Deepal!

Deepal Jayasinghe wrote:
 > All the methods are createXContext except getServiceContext , so shall
 > we re factor that as well . Inside logic may be the same , only the
 > signature will change.

Yup, I was thinking exactly the same thing. :)  The thing is, the other 
methods all definitively *create* new Context objects - the 
ServiceGroupContext.getServiceContext() one finds OR creates a 
ServiceContext (depending on whether there already is one for that 
service), so "get" actually may be a little more appropriate here.  This 
is one of the reasons I labeled that checkin "part one", and I'd like to 
continue discussing these relationships in context of the design we want 
for ServiceContext/ServiceGroupContext and session scoping.

--Glen

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Re: svn commit: r535544 [1/2] - in /webservices/axis2/trunk/java/modules: addressing/test/org/apache/axis2/handlers/addressing/ clustering/test/org/apache/axis2/clustering/ integration/test/org/apache/axis2/integration/ integration/test/org/apache/axis2/jm...

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Glen,

May I suggest smt ?

All the methods are createXContext except getServiceContext , so shall
we re factor that as well . Inside logic may be the same , only the
signature will change.

Thanks
Deepal

gdaniels@apache.org wrote:

>Author: gdaniels
>Date: Sat May  5 09:16:25 2007
>New Revision: 535544
>
>URL: http://svn.apache.org/viewvc?view=rev&rev=535544
>Log:
>Refactor context creation as per recent email thread, part 1.  The goal is twofold.  First to simplify the code and avoid an unneeded class, and second to do a better job of ensuring that the necessary layers in the context hierarchy are correctly configured.  This is "part 1" because there's still some work to do both here and on the Description side to really make this clean - but this gets us a lot of the way.
>
>* Get rid of ContextFactory.
>
>* Now the preferred way to generate contexts is to use the parent context.  So you can create ConfigurationContexts from scratch, then use configContexts to make serviceGroupContexts, etc.
>
>* Implement ContextListener, and the ability to register listeners on ConfigurationContext.  Multiple listeners may be registered, and each one will get a notification whenever any sub-context is created.  Add tests for this.
>
>Added:
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java
>Removed:
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextFactory.java
>Modified:
>    webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
>    webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java
>    webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
>    webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedServiceDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RequestURIBasedServiceDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/SOAPMessageBodyBasedServiceDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EngineWithoutPhaseResolvingTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/util/ThreadContextMigratorTest.java
>    webservices/axis2/trunk/java/modules/scripting/test/org/apache/axis2/scripting/ScriptReceiverTest.java
>    webservices/axis2/trunk/java/modules/scripting/test/org/apache/axis2/scripting/TestUtils.java
>    webservices/axis2/trunk/java/modules/webapp/src/main/webapp/axis2-web/viewServiceContext.jsp
>
>Modified: webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java (original)
>+++ webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java Sat May  5 09:16:25 2007
>@@ -29,8 +29,8 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
>+import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.handlers.util.TestUtil;
> 
> import javax.xml.namespace.QName;
>@@ -70,8 +70,9 @@
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
> 
>-        MessageContext msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext configCtx = 
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        MessageContext msgCtxt = configCtx.createMessageContext();
>         msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE);
>         msgCtxt.setTo(epr);
>         msgCtxt.setReplyTo(replyTo);
>@@ -104,8 +105,9 @@
>     }
> 
>     public void testHeaderCreationFromMsgCtxtInformation() throws Exception {
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
> 
>         EndpointReference epr = new EndpointReference("http://www.from.org/service/");
>         epr.addReferenceParameter(new QName("Reference2"),
>@@ -145,8 +147,9 @@
>     }
> 
>     public void testMustUnderstandSupport() throws Exception {
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
> 
>         msgCtxt.setProperty(AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS,
>                             Boolean.TRUE);
>@@ -194,8 +197,9 @@
>         EndpointReference eprOne = new EndpointReference("http://whatever.org");
>         EndpointReference duplicateEpr = new EndpointReference("http://whatever.duplicate.org");
>         RelatesTo reply = new RelatesTo("urn:id");
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
>         msgCtxt.setEnvelope(defaultEnvelope);
>@@ -227,8 +231,9 @@
>         // this will check whether we can add to epr, if there is one already.
>         EndpointReference eprOne = new EndpointReference("http://whatever.org");
>         RelatesTo custom = new RelatesTo("urn:id", "customRelationship");
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
>         OMNamespace addressingNamespace =
>@@ -269,8 +274,9 @@
>         // this will check whether we can add to epr, if there is one already.
>         EndpointReference eprOne = new EndpointReference("http://whatever.org");
>         RelatesTo custom = new RelatesTo("urn:id", "customRelationship");
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
>         OMNamespace addressingNamespace =
>
>Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java (original)
>+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java Sat May  5 09:16:25 2007
>@@ -15,20 +15,15 @@
>  */
> 
> package org.apache.axis2.clustering;
>-import java.util.Iterator;
> 
> import org.apache.axiom.om.util.UUIDGenerator;
>-import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
>-import org.apache.axis2.cluster.context.ContextManagerListener;
>-import org.apache.axis2.cluster.listeners.DefaultContextManagerListener;
>-import org.apache.axis2.clustering.configuration.TestConfigurationManagerListener;
>-import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> 
>+import java.util.Iterator;
>+
> 
> public abstract class ManageContextTestCase extends ClusterManagerTestCase {
> 
>@@ -43,11 +38,12 @@
> 		}
> 		
> 		//Adding contexts to the Node1
>-		ServiceGroupContext serviceGroupContext1 = ContextFactory.createServiceGroupContext(configurationContext1, serviceGroup1);
>+		ServiceGroupContext serviceGroupContext1 =
>+                configurationContext1.createServiceGroupContext(serviceGroup1);
> 		String sgcID = UUIDGenerator.getUUID();
> 		serviceGroupContext1.setId(sgcID);
> 		
>-		ServiceContext serviceContext1 = ContextFactory.createServiceContext(serviceGroupContext1, service1);
>+		ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1);
> 		
> 		//adding the Contexts to the first configContext 
> 		clusterManager1.getContextManager().addContext(serviceGroupContext1);
>
>Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java (original)
>+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java Sat May  5 09:16:25 2007
>@@ -19,12 +19,6 @@
> import java.util.Iterator;
> 
> import org.apache.axiom.om.util.UUIDGenerator;
>-import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
>-import org.apache.axis2.cluster.context.ContextManagerListener;
>-import org.apache.axis2.cluster.listeners.DefaultContextManagerListener;
>-import org.apache.axis2.clustering.configuration.TestConfigurationManagerListener;
>-import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.commons.logging.Log;
>@@ -63,11 +57,10 @@
> 		sgcID = UUIDGenerator.getUUID();
> 
> 		//Adding contexts to the Node1
>-		serviceGroupContext1 = ContextFactory.createServiceGroupContext(configurationContext1,
>-				serviceGroup1);
>+		serviceGroupContext1 = configurationContext1.createServiceGroupContext(serviceGroup1);
> 		serviceGroupContext1.setId(sgcID);
> 
>-		serviceContext1 = ContextFactory.createServiceContext(serviceGroupContext1, service1);
>+		serviceContext1 = serviceGroupContext1.getServiceContext(service1);
> 		serviceGroupContext1.addServiceContext(serviceContext1);
> 
> 		configurationContext1.setProperty(key1, val1);
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java Sat May  5 09:16:25 2007
>@@ -21,7 +21,6 @@
> import org.apache.axis2.Constants;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.axis2.deployment.DeploymentEngine;
>@@ -189,9 +188,9 @@
>         configContext.getAxisConfiguration().addService(service);
> 
> 
>-        ServiceGroupContext serviceGroupContext = ContextFactory
>-                .createServiceGroupContext(configContext, (AxisServiceGroup)service.getParent());
>-        return ContextFactory.createServiceContext(serviceGroupContext, service);
>+        ServiceGroupContext serviceGroupContext =
>+                configContext.createServiceGroupContext((AxisServiceGroup)service.getParent());
>+        return serviceGroupContext.getServiceContext(service);
>     }
> 
>     static class AddressingFilter implements FilenameFilter {
>@@ -245,9 +244,8 @@
> 
>         configContext.getAxisConfiguration().addService(service);
>         ServiceGroupContext serviceGroupContext =
>-                ContextFactory.createServiceGroupContext(configContext,
>-                                                         (AxisServiceGroup)service.getParent());
>-        return ContextFactory.createServiceContext(serviceGroupContext, service);
>+                configContext.createServiceGroupContext((AxisServiceGroup)service.getParent());
>+        return serviceGroupContext.getServiceContext(service);
>     }
> 
> }
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java Sat May  5 09:16:25 2007
>@@ -19,7 +19,6 @@
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.description.AxisServiceGroup;
> import org.apache.axis2.transport.tcp.TCPServer;
>@@ -44,8 +43,8 @@
>             throws AxisFault {
> 
>         receiver.getConfigurationContext().getAxisConfiguration().addService(service);
>-        ContextFactory.createServiceGroupContext(receiver.getConfigurationContext(),
>-                                                 (AxisServiceGroup)service.getParent());
>+        receiver.getConfigurationContext().
>+                createServiceGroupContext((AxisServiceGroup)service.getParent());
>     }
> 
>     public static synchronized void unDeployService(QName service)
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java Sat May  5 09:16:25 2007
>@@ -36,7 +36,6 @@
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.AxisOperation;
> import org.apache.axis2.description.AxisService;
>@@ -227,7 +226,7 @@
>         SOAPEnvelope envelope = factory.getDefaultEnvelope();
>         envelope.getBody().addChild(method);
> 
>-        MessageContext requestContext = ContextFactory.createMessageContext(configContext);
>+        MessageContext requestContext = configContext.createMessageContext();
>         requestContext.setAxisService(clientService);
>         requestContext.setAxisOperation(opdesc);
>         requestContext.setEnvelope(envelope);
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java Sat May  5 09:16:25 2007
>@@ -33,7 +33,6 @@
> import org.apache.axis2.client.Options;
> import org.apache.axis2.client.ServiceClient;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.engine.Echo;
>@@ -80,7 +79,7 @@
>                     .getNewConfigurationContext(Constants.TESTING_REPOSITORY);
>             serviceClient = new ServiceClient(configContext, clientService);
> 
>-            MessageContext msgctx = ContextFactory.createMessageContext(configContext);
>+            MessageContext msgctx = configContext.createMessageContext();
> 
>             msgctx.setEnvelope(envelope);
> 
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java Sat May  5 09:16:25 2007
>@@ -34,7 +34,6 @@
> import org.apache.axis2.client.ServiceClient;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.databinding.utils.BeanUtil;
>@@ -118,11 +117,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -171,11 +170,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -219,11 +218,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -271,11 +270,11 @@
>             options.setTo(targetEPR);
>             options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-            ConfigurationContext configConetxt = ConfigurationContextFactory
>+            ConfigurationContext configContext = ConfigurationContextFactory
>                     .createConfigurationContextFromFileSystem(null, null);
>-            RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+            RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>             rpcClient.setOptions(options);
>-            MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+            MessageContext reqMessageContext = configContext.createMessageContext();;
>             OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>             opClinet.setOptions(options);
>             reqMessageContext.setEnvelope(envelope);
>@@ -333,11 +332,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -395,11 +394,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();;
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -458,11 +457,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();;
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -527,11 +526,11 @@
>         Options options = new Options();
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -595,11 +594,11 @@
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>
>Modified: webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java (original)
>+++ webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java Sat May  5 09:16:25 2007
>@@ -47,7 +47,6 @@
> import java.util.Iterator;
> import java.util.List;
> import java.util.Map;
>-import java.util.Vector;
> import java.util.ArrayList;
> 
> public class CodeGenerationUtility {
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java Sat May  5 09:16:25 2007
>@@ -22,7 +22,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -69,7 +68,7 @@
>         this.sc = sc;
>         this.options = new Options(options);
>         completed = false;
>-        oc = ContextFactory.createOperationContext(axisOp, sc);
>+        oc = sc.createOperationContext(axisOp);
>     }
> 
>     /**
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java Sat May  5 09:16:25 2007
>@@ -29,7 +29,6 @@
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -135,26 +134,41 @@
> 
>     private void configureServiceClient(ConfigurationContext configContext, AxisService axisService)
>             throws AxisFault {
>-        initializeTransports(configContext);
>+        if (configContext == null) {
>+            if (ListenerManager.defaultConfigurationContext == null) {
>+                configContext = ConfigurationContextFactory.
>+                        createConfigurationContextFromFileSystem(null, null);
>+                createConfigCtx = true;
>+            } else {
>+                configContext = ListenerManager.defaultConfigurationContext;
>+            }
>+        }
>+        this.configContext = configContext;
>+
>+        // Initialize transports
>+        ListenerManager transportManager = configContext.getListenerManager();
>+        if (transportManager == null) {
>+            transportManager = new ListenerManager();
>+            transportManager.init(this.configContext);
>+        }
>+
>         // save the axisConfig and service
>-        this.axisConfig = this.configContext.getAxisConfiguration();
>-        if (axisService != null) {
>-            this.axisService = axisService;
>-        } else {
>-            this.axisService = createAnonymousService();
>+        axisConfig = configContext.getAxisConfiguration();
>+        if (axisService == null) {
>+            axisService = createAnonymousService();
>         }
>-        if (this.axisConfig.getService(this.axisService.getName()) == null) {
>-            this.axisService.setClientSide(true);
>-            this.axisConfig.addService(this.axisService);
>+        this.axisService = axisService;
>+        if (axisConfig.getService(axisService.getName()) == null) {
>+            axisService.setClientSide(true);
>+            axisConfig.addService(axisService);
>         } else {
>             throw new AxisFault(Messages.getMessage(
>                     "twoservicecannothavesamename",
>-                    this.axisService.getName()));
>+                    axisService.getName()));
>         }
>-        AxisServiceGroup axisServiceGroup = (AxisServiceGroup) this.axisService.getParent();
>-        ServiceGroupContext sgc = ContextFactory.createServiceGroupContext(this.configContext,
>-                                                                           axisServiceGroup);
>-        this.serviceContext = ContextFactory.createServiceContext(sgc, this.axisService);
>+        AxisServiceGroup axisServiceGroup = (AxisServiceGroup)axisService.getParent();
>+        ServiceGroupContext sgc = configContext.createServiceGroupContext(axisServiceGroup);
>+        serviceContext = sgc.getServiceContext(axisService);
>     }
> 
> 
>@@ -197,28 +211,6 @@
>                                                                                       options));
>     }
> 
>-    private void initializeTransports(ConfigurationContext configContext) throws AxisFault {
>-        ListenerManager transportManager;
>-        if (configContext != null) {
>-            this.configContext = configContext;
>-            transportManager = configContext.getListenerManager();
>-            if (transportManager == null) {
>-                transportManager = new ListenerManager();
>-                transportManager.init(this.configContext);
>-            }
>-        } else {
>-            if (ListenerManager.defaultConfigurationContext == null) {
>-                this.configContext = ConfigurationContextFactory.
>-                        createConfigurationContextFromFileSystem(null, null);
>-                transportManager = new ListenerManager();
>-                transportManager.init(this.configContext);
>-                createConfigCtx = true;
>-            } else {
>-                this.configContext = ListenerManager.defaultConfigurationContext;
>-            }
>-        }
>-    }
>-
>     /**
>      * Create a service client by assuming an anonymous service and any other
>      * necessary information.
>@@ -756,9 +748,7 @@
> 
>         AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>         ServiceGroupContext serviceGroupContext =
>-                ContextFactory.createServiceGroupContext(configContext,
>-                                                         axisServiceGroup);
>-        this.serviceContext = ContextFactory.createServiceContext(
>-                serviceGroupContext, this.axisService);
>+                configContext.createServiceGroupContext(axisServiceGroup);
>+        this.serviceContext = serviceGroupContext.getServiceContext(axisService);
>     }
> }
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java Sat May  5 09:16:25 2007
>@@ -123,8 +123,7 @@
>      * @param messageContext : MessageContext
>      * @throws org.apache.axis2.AxisFault : If something goes wrong
>      */
>-    public void fillServiceContextAndServiceGroupContext(
>-            MessageContext messageContext)
>+    public void fillServiceContextAndServiceGroupContext(MessageContext messageContext)
>             throws AxisFault {
>         // by this time service group context id must have a value. Either from transport or from addressing
>         ServiceGroupContext serviceGroupContext;
>@@ -146,8 +145,8 @@
>                         axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>                         messageContext.setAxisServiceGroup(axisServiceGroup);
>                     }
>-                    serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                            messageContext.getConfigurationContext(), axisServiceGroup);
>+                    ConfigurationContext cfgCtx = messageContext.getConfigurationContext();
>+                    serviceGroupContext = cfgCtx.createServiceGroupContext(axisServiceGroup);
>                     applicationSessionServiceGroupContextTable
>                             .put(serviceGroupName, serviceGroupContext);
> 
>@@ -160,8 +159,8 @@
>                     }
>                 }
>                 messageContext.setServiceGroupContext(serviceGroupContext);
>-                messageContext.setServiceContext(ContextFactory.createServiceContext(
>-                        serviceGroupContext, axisService));
>+                messageContext.setServiceContext(
>+                        serviceGroupContext.getServiceContext(axisService));
>             } else if (Constants.SCOPE_SOAP_SESSION.equals(scope)) {
>                 String serviceGroupContextId = messageContext.getServiceGroupContextId();
>                 if (serviceGroupContextId != null) {
>@@ -173,10 +172,8 @@
>                     }
>                 } else {
>                     AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>-                    serviceGroupContext =
>-                            ContextFactory.createServiceGroupContext(this, axisServiceGroup);
>-                    serviceContext =
>-                            ContextFactory.createServiceContext(serviceGroupContext, axisService);
>+                    serviceGroupContext = createServiceGroupContext(axisServiceGroup);
>+                    serviceContext = serviceGroupContext.getServiceContext(axisService);
>                     // set the serviceGroupContextID
>                     serviceGroupContextId = UUIDGenerator.getUUID();
>                     serviceGroupContext.setId(serviceGroupContextId);
>@@ -194,16 +191,13 @@
>                 }
>                 messageContext.setServiceGroupContext(serviceGroupContext);
>                 messageContext.setServiceContext(
>-                        ContextFactory.createServiceContext(serviceGroupContext, axisService));
>+                        serviceGroupContext.getServiceContext(axisService));
>             } else if (Constants.SCOPE_REQUEST.equals(scope)) {
>                 AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>-                serviceGroupContext =
>-                        ContextFactory.createServiceGroupContext(this, axisServiceGroup);
>+                serviceGroupContext = createServiceGroupContext(axisServiceGroup);
>                 messageContext.setServiceGroupContext(serviceGroupContext);
>-                serviceContext =
>-                        ContextFactory.createServiceContext(serviceGroupContext, axisService);
>+                serviceContext = serviceGroupContext.getServiceContext(axisService);
>                 messageContext.setServiceContext(serviceContext);
>-                messageContext.getOperationContext().setParent(serviceContext);
>             }
>         }
>         if (messageContext.getOperationContext() != null) {
>@@ -335,6 +329,56 @@
>         // if we got here, we did not find an operation context
>         // that fits the criteria
>         return null;
>+    }
>+
>+    protected ArrayList contextListeners;
>+
>+    /**
>+     * Register a ContextListener to be notified of all sub-context creation events.
>+     * Note that we currently only support a single listener.
>+     *
>+     * @param contextListener a ContextListener
>+     */
>+    public void registerContextListener(ContextListener contextListener) {
>+        if (contextListeners == null) contextListeners = new ArrayList();
>+        contextListeners.add(contextListener);
>+    }
>+
>+    /**
>+     * Inform any listeners of a new context
>+     *
>+     * @param context the just-created subcontext
>+     */
>+    void contextCreated(AbstractContext context) {
>+        if (contextListeners == null) return;
>+        for (Iterator i = contextListeners.iterator(); i.hasNext();) {
>+            ContextListener listener = (ContextListener)i.next();
>+            listener.contextCreated(context);
>+        }
>+    }
>+
>+    /**
>+     * Create a MessageContext, and notify any registered ContextListener.
>+     * 
>+     * @return a new MessageContext
>+     */
>+    public MessageContext createMessageContext() {
>+        MessageContext msgCtx = new MessageContext(this);
>+        contextCreated(msgCtx);
>+        return msgCtx;
>+    }
>+
>+    /**
>+     * Create a ServiceGroupContext for the specified service group, and notify any
>+     * registered ContextListener.
>+     *
>+     * @param serviceGroup an AxisServiceGroup
>+     * @return a new ServiceGroupContext
>+     */
>+    public ServiceGroupContext createServiceGroupContext(AxisServiceGroup serviceGroup) {
>+        ServiceGroupContext sgCtx = new ServiceGroupContext(this, serviceGroup);
>+        contextCreated(sgCtx);
>+        return sgCtx;
>     }
> 
>     /**
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java Sat May  5 09:16:25 2007
>@@ -85,8 +85,8 @@
>             AxisServiceGroup axisServiceGroup = (AxisServiceGroup) serviceGroups.next();
>             String maxScope = SessionUtils.calculateMaxScopeForServiceGroup(axisServiceGroup);
>             if (Constants.SCOPE_APPLICATION.equals(maxScope)) {
>-                ServiceGroupContext serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                        configCtx, axisServiceGroup);
>+                ServiceGroupContext serviceGroupContext =
>+                        configCtx.createServiceGroupContext(axisServiceGroup);
>                 configCtx.addServiceGroupContextintoApplicatoionScopeTable(serviceGroupContext);
>                 DependencyManager.initService(serviceGroupContext);
>             }
>
>Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java?view=auto&rev=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java (added)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java Sat May  5 09:16:25 2007
>@@ -0,0 +1,26 @@
>+package org.apache.axis2.context;
>+
>+/*
>+* Copyright 2007 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.
>+*/
>+
>+/**
>+ * A ContextListener gets informed about new context creations.  Register one with
>+ * a ConfigurationContext and you'll get contextCreated() notifications for every
>+ * sub-context creation event.
>+ */
>+public interface ContextListener {
>+    void contextCreated(AbstractContext context);
>+}
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Sat May  5 09:16:25 2007
>@@ -501,6 +501,16 @@
>         options = new Options();
>     }
> 
>+    /**
>+     * Constructor has package access
>+     *
>+     * @param configContext the associated ConfigurationContext
>+     */
>+    MessageContext(ConfigurationContext configContext) {
>+        this();
>+        setConfigurationContext(configContext);
>+    }
>+
>     public String toString() {
>         return getLogIDString();
>     }
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java Sat May  5 09:16:25 2007
>@@ -38,7 +38,7 @@
>                 || (WSDLConstants.MEP_CONSTANT_OUT_IN == mepURI) ||
>                 (WSDLConstants.MEP_CONSTANT_OUT_OPTIONAL_IN == mepURI)
>                 || (WSDLConstants.MEP_CONSTANT_ROBUST_OUT_ONLY == mepURI)) {
>-            return ContextFactory.createOperationContext(axisOp, serviceContext);
>+            return serviceContext.createOperationContext(axisOp);
>         } else {
>             throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));
>         }
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java Sat May  5 09:16:25 2007
>@@ -131,16 +131,22 @@
>     // end MetaData section
>     //----------------------------------------------------------------
> 
>-    // simple constructor
>+    /**
>+     * Public constructor (only here because this class is Externalizable)
>+     */
>     public ServiceContext() {
>-        super(null);
>     }
> 
>-
>-    public ServiceContext(AxisService serviceConfig, ServiceGroupContext serviceGroupContext) {
>+    /**
>+     * Constructor (package access, should only be used by ServiceGroupContext)
>+     *
>+     * @param axisService the AxisService for which to create a context
>+     * @param serviceGroupContext the parent ServiceGroupContext
>+     */
>+    ServiceContext(AxisService axisService, ServiceGroupContext serviceGroupContext) {
>         super(serviceGroupContext);
>         this.serviceGroupContext = serviceGroupContext;
>-        this.axisService = serviceConfig;
>+        this.axisService = axisService;
>         this.configContext = (ConfigurationContext) parent.getParent();
>     }
> 
>@@ -150,7 +156,8 @@
>     }
> 
>     public OperationContext createOperationContext(AxisOperation axisOp) {
>-        OperationContext ctx = ContextFactory.createOperationContext(axisOp, this);
>+        OperationContext ctx = new OperationContext(axisOp, this);
>+        configContext.contextCreated(ctx);
>         return ctx;
>     }
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java Sat May  5 09:16:25 2007
>@@ -144,6 +144,7 @@
>         ServiceContext serviceContext = (ServiceContext) serviceContextMap.get(service.getName());
>         if (serviceContext == null) {
>             serviceContext = new ServiceContext(service, this);
>+            getRootContext().contextCreated(serviceContext);
>             serviceContextMap.put(service.getName(), serviceContext);
> 
>             ClusterManager clusterManager = axisService.getAxisConfiguration().getClusterManager();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java Sat May  5 09:16:25 2007
>@@ -26,7 +26,6 @@
> import org.apache.axis2.client.OperationClient;
> import org.apache.axis2.client.Options;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -371,7 +370,7 @@
> 
>             // Its a new incoming message so get the factory to create a new
>             // one
>-            operationContext = ContextFactory.createOperationContext(this, serviceContext);
>+            operationContext = serviceContext.createOperationContext(this);
>         } else {
> 
>             // So this message is part of an ongoing MEP
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Sat May  5 09:16:25 2007
>@@ -27,7 +27,6 @@
> import org.apache.axis2.client.async.AsyncResult;
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -312,8 +311,8 @@
> 
>         // create the responseMessageContext
> 
>-        MessageContext responseMessageContext = ContextFactory.createMessageContext(
>-                msgctx.getConfigurationContext());
>+        MessageContext responseMessageContext =
>+                msgctx.getConfigurationContext().createMessageContext();
> 
>         // This is a hack - Needs to change
>         responseMessageContext.setOptions(options);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java Sat May  5 09:16:25 2007
>@@ -21,7 +21,6 @@
> import org.apache.axis2.client.Options;
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -245,7 +244,7 @@
>         // setting message ID if it null
> 
>         // create the operation context for myself
>-        OperationContext oc = ContextFactory.createOperationContext(axisOp, sc);
>+        OperationContext oc = sc.createOperationContext(axisOp);
>         oc.addMessageContext(mc);
>         // ship it out
>         AxisEngine engine = new AxisEngine(cc);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java Sat May  5 09:16:25 2007
>@@ -21,7 +21,6 @@
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.client.OperationClient;
> import org.apache.axis2.client.Options;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.engine.AxisEngine;
>@@ -62,8 +61,8 @@
>             AxisEngine engine = new AxisEngine(msgctx.getConfigurationContext());
> 
>             // create the responseMessageContext
>-            MessageContext responseMessageContext = ContextFactory.createMessageContext(
>-                    msgctx.getConfigurationContext());
>+            MessageContext responseMessageContext =
>+                    msgctx.getConfigurationContext().createMessageContext();
> 
>             // This is a hack - Needs to change
>             responseMessageContext.setOptions(options);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java Sat May  5 09:16:25 2007
>@@ -19,7 +19,6 @@
> 
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.Constants;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.axis2.description.AxisService;
>@@ -79,8 +78,7 @@
>         Iterator serviceItr = serviceGroup.getServices();
>         while (serviceItr.hasNext()) {
>             AxisService axisService = (AxisService) serviceItr.next();
>-            ServiceContext serviceContext = ContextFactory.createServiceContext(
>-                    serviceGroupContext, axisService);
>+            ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
>             AxisService service = serviceContext.getAxisService();
>             ClassLoader classLoader = service.getClassLoader();
>             Parameter implInfoParam = service.getParameter(Constants.SERVICE_CLASS);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java Sat May  5 09:16:25 2007
>@@ -4,12 +4,12 @@
> import org.apache.axis2.Constants;
> import org.apache.axis2.addressing.AddressingHelper;
> import org.apache.axis2.addressing.EndpointReference;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.axis2.context.SessionContext;
>+import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.description.AxisOperation;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.description.AxisServiceGroup;
>@@ -170,30 +170,25 @@
>             msgContext.setServiceGroupContext(serviceGroupContext);
>             msgContext.setServiceGroupContextId(serviceGroupContext.getId());
>         } else {    // 2. if null, create new opCtxt
>-            operationContext = ContextFactory.createOperationContext(axisOperation, serviceContext);
>-
>-            axisOperation.registerMessageContext(msgContext, operationContext);
>-            if (serviceContext != null) {
>-                // no need to added to configuration conetxt , since we are happy in
>-                //  storing in session context
>-                operationContext.setParent(serviceContext);
>-            } else {
>+            if (serviceContext == null) {
>                 // fill the service group context and service context info
>-                msgContext.getConfigurationContext().fillServiceContextAndServiceGroupContext(
>-                        msgContext);
>+                msgContext.getConfigurationContext().
>+                        fillServiceContextAndServiceGroupContext(msgContext);
>+                serviceContext = msgContext.getServiceContext();
>             }
>+            operationContext = serviceContext.createOperationContext(axisOperation);
>+            axisOperation.registerMessageContext(msgContext, operationContext);
>         }
>-        serviceContext = msgContext.getServiceContext();
>-        if (serviceContext != null) {
>-            serviceContext.setMyEPR(msgContext.getTo());
>-        }
>+
>+        serviceContext.setMyEPR(msgContext.getTo());
>     }
> 
>     /**
>      * To check wether the incoming request has come in valid transport , simpley the transports
>      * that service author wants to expose
>      *
>-     * @param msgctx
>+     * @param msgctx the current MessageContext
>+     * @throws AxisFault in case of error
>      */
>     private void validateTransport(MessageContext msgctx) throws AxisFault {
>         AxisService service = msgctx.getAxisService();
>@@ -229,14 +224,13 @@
>             }
>         }
>         String serviceGroupName = msgContext.getAxisServiceGroup().getServiceGroupName();
>-        ServiceGroupContext serviceGroupContext = sessionContext.getServiceGroupContext(
>-                serviceGroupName);
>+        ServiceGroupContext serviceGroupContext =
>+                sessionContext.getServiceGroupContext(serviceGroupName);
>         if (serviceGroupContext != null) {
>             //setting service group context
>             msgContext.setServiceGroupContext(serviceGroupContext);
>-            // setting Service conetxt
>-            msgContext.setServiceContext(
>-                    ContextFactory.createServiceContext(serviceGroupContext, service));
>+            // setting Service context
>+            msgContext.setServiceContext(serviceGroupContext.getServiceContext(service));
>         } else {
>             createAndFillContexts(service, msgContext, sessionContext);
>         }
>@@ -253,12 +247,11 @@
>                                        SessionContext sessionContext) throws AxisFault {
>         ServiceGroupContext serviceGroupContext;
>         AxisServiceGroup axisServiceGroup = (AxisServiceGroup) service.getParent();
>-        serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                msgContext.getConfigurationContext(), axisServiceGroup);
>+        ConfigurationContext configCtx = msgContext.getConfigurationContext();
>+        serviceGroupContext = configCtx.createServiceGroupContext(axisServiceGroup);
> 
>         msgContext.setServiceGroupContext(serviceGroupContext);
>-        ServiceContext serviceContext =
>-                ContextFactory.createServiceContext(serviceGroupContext, service);
>+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(service);
>         msgContext.setServiceContext(serviceContext);
>         if (sessionContext != null) {
>             sessionContext.addServiceContext(serviceContext);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Sat May  5 09:16:25 2007
>@@ -29,7 +29,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.SessionContext;
>@@ -600,7 +599,7 @@
>     protected MessageContext createMessageContext(HttpServletRequest request,
>                                                   HttpServletResponse response,
>                                                   boolean invocationType) throws IOException {
>-        MessageContext msgContext = ContextFactory.createMessageContext(configContext);
>+        MessageContext msgContext = configContext.createMessageContext();
>         String requestURI = request.getRequestURI();
> 
>         String trsPrefix = request.getRequestURL().toString();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Sat May  5 09:16:25 2007
>@@ -39,7 +39,6 @@
> import org.apache.axis2.addressing.AddressingHelper;
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportInDescription;
> import org.apache.axis2.description.TransportOutDescription;
>@@ -114,7 +113,7 @@
>         this.configurationContext = configurationContext;
>         this.worker = worker;
> 
>-        this.msgContext = ContextFactory.createMessageContext(configurationContext);
>+        this.msgContext = configurationContext.createMessageContext();
>         this.msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
>     }
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java Sat May  5 09:16:25 2007
>@@ -22,7 +22,6 @@
> import org.apache.axis2.description.Parameter;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.engine.AxisEngine;
> import org.apache.axis2.util.MessageContextBuilder;
>@@ -128,7 +127,7 @@
>         InputStream in = JMSUtils.getInputStream(message);
> 
>         try {
>-            MessageContext msgContext = ContextFactory.createMessageContext(axisConf);
>+            MessageContext msgContext = axisConf.createMessageContext();
> 
>             // get destination and create correct EPR
>             Destination dest = message.getJMSDestination();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java Sat May  5 09:16:25 2007
>@@ -24,7 +24,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.builder.BuilderUtil;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportInDescription;
> import org.apache.axis2.description.TransportOutDescription;
>@@ -58,7 +57,7 @@
> 
>             tOut.setSender(new LocalResponder(sender));
> 
>-            MessageContext msgCtx = ContextFactory.createMessageContext(confContext);
>+            MessageContext msgCtx = confContext.createMessageContext();
>             msgCtx.setTransportIn(tIn);
>             msgCtx.setTransportOut(tOut);
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java Sat May  5 09:16:25 2007
>@@ -315,7 +315,7 @@
>                         .getTransportOut(org.apache.axis2.Constants.TRANSPORT_MAIL);
>         if ((transportIn != null) && (transportOut != null)) {
>             // create Message Context
>-            msgContext = ContextFactory.createMessageContext(configurationContext);
>+            msgContext = configurationContext.createMessageContext();
>             msgContext.setTransportIn(transportIn);
>             msgContext.setTransportOut(transportOut);
>             msgContext.setServerSide(true);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java Sat May  5 09:16:25 2007
>@@ -24,7 +24,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.builder.BuilderUtil;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.engine.AxisEngine;
> import org.apache.axis2.transport.mail.Constants;
>@@ -73,7 +72,7 @@
> 
>         // create and initialize a message context
>         try {
>-            msgContext = ContextFactory.createMessageContext(confContext);
>+            msgContext = confContext.createMessageContext();
>             msgContext.setTransportIn(confContext.getAxisConfiguration().getTransportIn(
>                     org.apache.axis2.Constants.TRANSPORT_MAIL));
>             msgContext.setTransportOut(confContext.getAxisConfiguration().getTransportOut(
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java Sat May  5 09:16:25 2007
>@@ -23,7 +23,6 @@
> import org.apache.axis2.Constants;
> import org.apache.axis2.builder.BuilderUtil;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportInDescription;
> import org.apache.axis2.description.TransportOutDescription;
>@@ -67,7 +66,7 @@
>             if ((transportOut != null) && (transportIn != null)) {
> 
>                 // create the Message Context and fill in the values
>-                msgContext = ContextFactory.createMessageContext(configurationContext);
>+                msgContext = configurationContext.createMessageContext();
>                 msgContext.setIncomingTransportName(Constants.TRANSPORT_TCP);
>                 msgContext.setTransportIn(transportIn);
>                 msgContext.setTransportOut(transportOut);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java Sat May  5 09:16:25 2007
>@@ -39,7 +39,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -66,8 +65,8 @@
>      */
>     private static MessageContext createResponseMessageContext(MessageContext inMessageContext)
>             throws AxisFault {
>-        MessageContext newmsgCtx = ContextFactory.createMessageContext(
>-                inMessageContext.getConfigurationContext());
>+        MessageContext newmsgCtx =
>+                inMessageContext.getConfigurationContext().createMessageContext();
> 
>         newmsgCtx.setSessionContext(inMessageContext.getSessionContext());
>         newmsgCtx.setTransportIn(inMessageContext.getTransportIn());
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java Sat May  5 09:16:25 2007
>@@ -26,7 +26,6 @@
> import org.apache.axis2.cluster.context.ContextManager;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
>@@ -143,13 +142,12 @@
>                                                                            ConfigurationContext configurationContext) throws AxisFault {
>         String serviceGroupContextId = UUIDGenerator.getUUID();
>         ServiceGroupContext serviceGroupContext =
>-                ContextFactory.createServiceGroupContext(configurationContext,
>-                                                         (AxisServiceGroup) axisService
>-                                                                 .getParent());
>+                configurationContext.createServiceGroupContext((AxisServiceGroup)axisService
>+                        .getParent());
> 
>         serviceGroupContext.setId(serviceGroupContextId);
>         configurationContext.registerServiceGroupContextintoSoapSessionTable(serviceGroupContext);
>-        ServiceContext serviceContext = new ServiceContext(axisService, serviceGroupContext);
>+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
> 
>         ClusterManager clusterManager =
>                 configurationContext.getAxisConfiguration().getClusterManager();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java Sat May  5 09:16:25 2007
>@@ -41,14 +41,13 @@
>         axisService.addOperation(axisOperation);
>         axisConfiguration.addService(axisService);
>         configurationContext = new ConfigurationContext(axisConfiguration);
>-        msgctx = ContextFactory.createMessageContext(configurationContext);
>+        msgctx = configurationContext.createMessageContext();
>     }
> 
>     public void testCompleteHierarchy() throws AxisFault {
>-        ServiceGroupContext serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                configurationContext, (AxisServiceGroup) axisService.getParent());
>-        ServiceContext serviceContext =
>-                ContextFactory.createServiceContext(serviceGroupContext, axisService);
>+        ServiceGroupContext serviceGroupContext = configurationContext.createServiceGroupContext(
>+                (AxisServiceGroup) axisService.getParent());
>+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
>         OperationContext opContext = axisOperation.findOperationContext(msgctx,
>                                                                         serviceContext);
>         axisOperation.registerOperationContext(msgctx, opContext);
>
>Added: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java?view=auto&rev=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java (added)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java Sat May  5 09:16:25 2007
>@@ -0,0 +1,86 @@
>+/*
>+ * Copyright 2007 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.
>+ */
>+package org.apache.axis2.context;
>+
>+import junit.framework.TestCase;
>+import org.apache.axis2.engine.AxisConfiguration;
>+import org.apache.axis2.description.AxisServiceGroup;
>+import org.apache.axis2.description.AxisService;
>+import org.apache.axis2.description.AxisOperation;
>+import org.apache.axis2.description.InOutAxisOperation;
>+
>+import javax.xml.namespace.QName;
>+
>+public class ContextListenerTest extends TestCase {
>+    static class MyListener implements ContextListener {
>+        private AbstractContext lastContext;
>+
>+        public void contextCreated(AbstractContext context) {
>+            lastContext = context;
>+        }
>+
>+        public AbstractContext getLastContext() {
>+            return lastContext;
>+        }
>+    }
>+
>+    /**
>+     * Confirm that creating contexts at various levels correctly causes notifications to
>+     * ContextListeners that are registered on a given ConfigurationContext.
>+     *
>+     * @throws Exception if an error occurs
>+     */
>+    public void testContextListener() throws Exception {
>+        // Set up metadata
>+        AxisConfiguration axisConfig = new AxisConfiguration();
>+        ConfigurationContext configCtx = new ConfigurationContext(axisConfig);
>+        AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
>+        AxisService service = new AxisService("TestService");
>+        AxisOperation operation = new InOutAxisOperation(new QName("ns", "op1"));
>+        service.addOperation(operation);
>+        serviceGroup.addService(service);
>+
>+        // Register a listener and make sure it starts out clean
>+        MyListener listener = new MyListener();
>+        configCtx.registerContextListener(listener);
>+        assertNull(listener.getLastContext());
>+
>+        MessageContext mc = configCtx.createMessageContext();
>+        assertNotNull(mc);
>+        assertEquals("MessageContext not stored", mc, listener.getLastContext());
>+
>+        ServiceGroupContext sgc = configCtx.createServiceGroupContext(serviceGroup);
>+        assertNotNull(sgc);
>+        assertEquals("ServiceGroupContext not stored", sgc, listener.getLastContext());
>+
>+        ServiceContext sc = sgc.getServiceContext(service);
>+        assertNotNull(sc);
>+        assertEquals("ServiceContext not stored", sc, listener.getLastContext());
>+
>+        OperationContext oc = sc.createOperationContext(operation);
>+        assertNotNull(oc);
>+        assertEquals("OperationContext not stored", oc, listener.getLastContext());
>+
>+        // Try a second listener and make sure they both get notified
>+        MyListener listener2 = new MyListener();
>+        configCtx.registerContextListener(listener2);
>+
>+        mc = configCtx.createMessageContext();
>+        assertNotNull(mc);
>+        assertEquals("MessageContext not stored", mc, listener.getLastContext());
>+        assertEquals("MessageContext not stored in listener 2", mc, listener2.getLastContext());
>+    }
>+}
>
>Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java Sat May  5 09:16:25 2007
>@@ -43,10 +43,9 @@
> 
>         AxisService axisService = new AxisService("TempSC");
>         configContext.getAxisConfiguration().addService(axisService);
>-        ServiceGroupContext sgc = ContextFactory.createServiceGroupContext(configContext,
>-                                                                           (AxisServiceGroup) axisService
>-                                                                                   .getParent());
>-        ServiceContext sessionContext = ContextFactory.createServiceContext(sgc, axisService);
>+        ServiceGroupContext sgc = configContext.createServiceGroupContext(
>+                (AxisServiceGroup) axisService.getParent());
>+        ServiceContext sessionContext = sgc.getServiceContext(axisService);
>         MessageContext messageContext1 = this.getBasicMessageContext();
> 
>         messageContext1.setMessageID(UUIDGenerator.getUUID());
>@@ -66,7 +65,7 @@
>     }
> 
>     public MessageContext getBasicMessageContext() throws AxisFault {
>-        MessageContext messageContext = ContextFactory.createMessageContext(configContext);
>+        MessageContext messageContext = configContext.createMessageContext();
>         messageContext.setTransportIn(new TransportInDescription("axis2"));
>         messageContext.setTransportOut(new TransportOutDescription("axis2"));
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java Sat May  5 09:16:25 2007
>@@ -17,12 +17,14 @@
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
>+import org.apache.axis2.context.ServiceGroupContext;
>+import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.description.AxisOperation;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.description.InOnlyAxisOperation;
>+import org.apache.axis2.description.AxisServiceGroup;
> import org.apache.axis2.engine.AxisConfiguration;
> 
> import javax.xml.namespace.QName;
>@@ -42,11 +44,13 @@
>         as1.addOperation(operation2);
> 
>         ConfigurationContext cc = new ConfigurationContext(ac);
>-        OperationContext oc1 = ContextFactory.createOperationContext(operation1, null);
>-        OperationContext oc2 = ContextFactory.createOperationContext(operation2, null);
>+        ServiceGroupContext sgc = cc.createServiceGroupContext((AxisServiceGroup)as1.getParent());
>+        ServiceContext serviceContext = sgc.getServiceContext(as1);
>+        OperationContext oc1 = serviceContext.createOperationContext(operation1);
>+        OperationContext oc2 = serviceContext.createOperationContext(operation2);
>         cc.registerOperationContext("urn:org.apache.axis2.dispatchers.messageid:123", oc1);
>         cc.registerOperationContext("urn:org.apache.axis2.dispatchers.messageid:456", oc2);
>-        messageContext = ContextFactory.createMessageContext(cc);
>+        messageContext = cc.createMessageContext();
>         messageContext
>                 .addRelatesTo(new RelatesTo("urn:org.apache.axis2.dispatchers.messageid:456"));
>         messageContext.setAxisService(as1);
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-cvs-help@ws.apache.org
>
>
>
>  
>

-- 
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org


Re: svn commit: r535544 [1/2] - in /webservices/axis2/trunk/java/modules: addressing/test/org/apache/axis2/handlers/addressing/ clustering/test/org/apache/axis2/clustering/ integration/test/org/apache/axis2/integration/ integration/test/org/apache/axis2/jm...

Posted by Deepal Jayasinghe <de...@opensource.lk>.
Hi Glen,

May I suggest smt ?

All the methods are createXContext except getServiceContext , so shall
we re factor that as well . Inside logic may be the same , only the
signature will change.

Thanks
Deepal

gdaniels@apache.org wrote:

>Author: gdaniels
>Date: Sat May  5 09:16:25 2007
>New Revision: 535544
>
>URL: http://svn.apache.org/viewvc?view=rev&rev=535544
>Log:
>Refactor context creation as per recent email thread, part 1.  The goal is twofold.  First to simplify the code and avoid an unneeded class, and second to do a better job of ensuring that the necessary layers in the context hierarchy are correctly configured.  This is "part 1" because there's still some work to do both here and on the Description side to really make this clean - but this gets us a lot of the way.
>
>* Get rid of ContextFactory.
>
>* Now the preferred way to generate contexts is to use the parent context.  So you can create ConfigurationContexts from scratch, then use configContexts to make serviceGroupContexts, etc.
>
>* Implement ContextListener, and the ability to register listeners on ConfigurationContext.  Multiple listeners may be registered, and each one will get a notification whenever any sub-context is created.  Add tests for this.
>
>Added:
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java
>Removed:
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextFactory.java
>Modified:
>    webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
>    webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java
>    webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
>    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
>    webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
>    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedServiceDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RequestURIBasedOperationDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RequestURIBasedServiceDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/SOAPMessageBodyBasedOperationDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/SOAPMessageBodyBasedServiceDispatcherTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EnginePausingTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/EngineWithoutPhaseResolvingTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/phaserule/PhaseRuleTests.java
>    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/util/ThreadContextMigratorTest.java
>    webservices/axis2/trunk/java/modules/scripting/test/org/apache/axis2/scripting/ScriptReceiverTest.java
>    webservices/axis2/trunk/java/modules/scripting/test/org/apache/axis2/scripting/TestUtils.java
>    webservices/axis2/trunk/java/modules/webapp/src/main/webapp/axis2-web/viewServiceContext.jsp
>
>Modified: webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java (original)
>+++ webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingOutHandlerTest.java Sat May  5 09:16:25 2007
>@@ -29,8 +29,8 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
>+import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.handlers.util.TestUtil;
> 
> import javax.xml.namespace.QName;
>@@ -70,8 +70,9 @@
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
> 
>-        MessageContext msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext configCtx = 
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        MessageContext msgCtxt = configCtx.createMessageContext();
>         msgCtxt.setProperty(WS_ADDRESSING_VERSION, Submission.WSA_NAMESPACE);
>         msgCtxt.setTo(epr);
>         msgCtxt.setReplyTo(replyTo);
>@@ -104,8 +105,9 @@
>     }
> 
>     public void testHeaderCreationFromMsgCtxtInformation() throws Exception {
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
> 
>         EndpointReference epr = new EndpointReference("http://www.from.org/service/");
>         epr.addReferenceParameter(new QName("Reference2"),
>@@ -145,8 +147,9 @@
>     }
> 
>     public void testMustUnderstandSupport() throws Exception {
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
> 
>         msgCtxt.setProperty(AddressingConstants.ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS,
>                             Boolean.TRUE);
>@@ -194,8 +197,9 @@
>         EndpointReference eprOne = new EndpointReference("http://whatever.org");
>         EndpointReference duplicateEpr = new EndpointReference("http://whatever.duplicate.org");
>         RelatesTo reply = new RelatesTo("urn:id");
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
>         msgCtxt.setEnvelope(defaultEnvelope);
>@@ -227,8 +231,9 @@
>         // this will check whether we can add to epr, if there is one already.
>         EndpointReference eprOne = new EndpointReference("http://whatever.org");
>         RelatesTo custom = new RelatesTo("urn:id", "customRelationship");
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
>         OMNamespace addressingNamespace =
>@@ -269,8 +274,9 @@
>         // this will check whether we can add to epr, if there is one already.
>         EndpointReference eprOne = new EndpointReference("http://whatever.org");
>         RelatesTo custom = new RelatesTo("urn:id", "customRelationship");
>-        msgCtxt = ContextFactory.createMessageContext(
>-                ConfigurationContextFactory.createDefaultConfigurationContext());
>+        ConfigurationContext cfgCtx =
>+                ConfigurationContextFactory.createDefaultConfigurationContext();
>+        msgCtxt = cfgCtx.createMessageContext();
>         SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
>         SOAPEnvelope defaultEnvelope = factory.getDefaultEnvelope();
>         OMNamespace addressingNamespace =
>
>Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java (original)
>+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/ManageContextTestCase.java Sat May  5 09:16:25 2007
>@@ -15,20 +15,15 @@
>  */
> 
> package org.apache.axis2.clustering;
>-import java.util.Iterator;
> 
> import org.apache.axiom.om.util.UUIDGenerator;
>-import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
>-import org.apache.axis2.cluster.context.ContextManagerListener;
>-import org.apache.axis2.cluster.listeners.DefaultContextManagerListener;
>-import org.apache.axis2.clustering.configuration.TestConfigurationManagerListener;
>-import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> 
>+import java.util.Iterator;
>+
> 
> public abstract class ManageContextTestCase extends ClusterManagerTestCase {
> 
>@@ -43,11 +38,12 @@
> 		}
> 		
> 		//Adding contexts to the Node1
>-		ServiceGroupContext serviceGroupContext1 = ContextFactory.createServiceGroupContext(configurationContext1, serviceGroup1);
>+		ServiceGroupContext serviceGroupContext1 =
>+                configurationContext1.createServiceGroupContext(serviceGroup1);
> 		String sgcID = UUIDGenerator.getUUID();
> 		serviceGroupContext1.setId(sgcID);
> 		
>-		ServiceContext serviceContext1 = ContextFactory.createServiceContext(serviceGroupContext1, service1);
>+		ServiceContext serviceContext1 = serviceGroupContext1.getServiceContext(service1);
> 		
> 		//adding the Contexts to the first configContext 
> 		clusterManager1.getContextManager().addContext(serviceGroupContext1);
>
>Modified: webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java (original)
>+++ webservices/axis2/trunk/java/modules/clustering/test/org/apache/axis2/clustering/UpdateStateTestCase.java Sat May  5 09:16:25 2007
>@@ -19,12 +19,6 @@
> import java.util.Iterator;
> 
> import org.apache.axiom.om.util.UUIDGenerator;
>-import org.apache.axis2.cluster.configuration.ConfigurationManagerListener;
>-import org.apache.axis2.cluster.context.ContextManagerListener;
>-import org.apache.axis2.cluster.listeners.DefaultContextManagerListener;
>-import org.apache.axis2.clustering.configuration.TestConfigurationManagerListener;
>-import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.commons.logging.Log;
>@@ -63,11 +57,10 @@
> 		sgcID = UUIDGenerator.getUUID();
> 
> 		//Adding contexts to the Node1
>-		serviceGroupContext1 = ContextFactory.createServiceGroupContext(configurationContext1,
>-				serviceGroup1);
>+		serviceGroupContext1 = configurationContext1.createServiceGroupContext(serviceGroup1);
> 		serviceGroupContext1.setId(sgcID);
> 
>-		serviceContext1 = ContextFactory.createServiceContext(serviceGroupContext1, service1);
>+		serviceContext1 = serviceGroupContext1.getServiceContext(service1);
> 		serviceGroupContext1.addServiceContext(serviceContext1);
> 
> 		configurationContext1.setProperty(key1, val1);
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilServer.java Sat May  5 09:16:25 2007
>@@ -21,7 +21,6 @@
> import org.apache.axis2.Constants;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.axis2.deployment.DeploymentEngine;
>@@ -189,9 +188,9 @@
>         configContext.getAxisConfiguration().addService(service);
> 
> 
>-        ServiceGroupContext serviceGroupContext = ContextFactory
>-                .createServiceGroupContext(configContext, (AxisServiceGroup)service.getParent());
>-        return ContextFactory.createServiceContext(serviceGroupContext, service);
>+        ServiceGroupContext serviceGroupContext =
>+                configContext.createServiceGroupContext((AxisServiceGroup)service.getParent());
>+        return serviceGroupContext.getServiceContext(service);
>     }
> 
>     static class AddressingFilter implements FilenameFilter {
>@@ -245,9 +244,8 @@
> 
>         configContext.getAxisConfiguration().addService(service);
>         ServiceGroupContext serviceGroupContext =
>-                ContextFactory.createServiceGroupContext(configContext,
>-                                                         (AxisServiceGroup)service.getParent());
>-        return ContextFactory.createServiceContext(serviceGroupContext, service);
>+                configContext.createServiceGroupContext((AxisServiceGroup)service.getParent());
>+        return serviceGroupContext.getServiceContext(service);
>     }
> 
> }
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/integration/UtilsTCPServer.java Sat May  5 09:16:25 2007
>@@ -19,7 +19,6 @@
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.description.AxisServiceGroup;
> import org.apache.axis2.transport.tcp.TCPServer;
>@@ -44,8 +43,8 @@
>             throws AxisFault {
> 
>         receiver.getConfigurationContext().getAxisConfiguration().addService(service);
>-        ContextFactory.createServiceGroupContext(receiver.getConfigurationContext(),
>-                                                 (AxisServiceGroup)service.getParent());
>+        receiver.getConfigurationContext().
>+                createServiceGroupContext((AxisServiceGroup)service.getParent());
>     }
> 
>     public static synchronized void unDeployService(QName service)
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/jms/JMSEchoRawXMLTest.java Sat May  5 09:16:25 2007
>@@ -36,7 +36,6 @@
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.AxisOperation;
> import org.apache.axis2.description.AxisService;
>@@ -227,7 +226,7 @@
>         SOAPEnvelope envelope = factory.getDefaultEnvelope();
>         envelope.getBody().addChild(method);
> 
>-        MessageContext requestContext = ContextFactory.createMessageContext(configContext);
>+        MessageContext requestContext = configContext.createMessageContext();
>         requestContext.setAxisService(clientService);
>         requestContext.setAxisOperation(opdesc);
>         requestContext.setEnvelope(envelope);
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/processingModel/SoapProcessingModelTest.java Sat May  5 09:16:25 2007
>@@ -33,7 +33,6 @@
> import org.apache.axis2.client.Options;
> import org.apache.axis2.client.ServiceClient;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.engine.Echo;
>@@ -80,7 +79,7 @@
>                     .getNewConfigurationContext(Constants.TESTING_REPOSITORY);
>             serviceClient = new ServiceClient(configContext, clientService);
> 
>-            MessageContext msgctx = ContextFactory.createMessageContext(configContext);
>+            MessageContext msgctx = configContext.createMessageContext();
> 
>             msgctx.setEnvelope(envelope);
> 
>
>Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java (original)
>+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/MultirefTest.java Sat May  5 09:16:25 2007
>@@ -34,7 +34,6 @@
> import org.apache.axis2.client.ServiceClient;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.databinding.utils.BeanUtil;
>@@ -118,11 +117,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -171,11 +170,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -219,11 +218,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -271,11 +270,11 @@
>             options.setTo(targetEPR);
>             options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-            ConfigurationContext configConetxt = ConfigurationContextFactory
>+            ConfigurationContext configContext = ConfigurationContextFactory
>                     .createConfigurationContextFromFileSystem(null, null);
>-            RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+            RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>             rpcClient.setOptions(options);
>-            MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+            MessageContext reqMessageContext = configContext.createMessageContext();;
>             OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>             opClinet.setOptions(options);
>             reqMessageContext.setEnvelope(envelope);
>@@ -333,11 +332,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -395,11 +394,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();;
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -458,11 +457,11 @@
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();;
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -527,11 +526,11 @@
>         Options options = new Options();
>         options.setTo(targetEPR);
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>@@ -595,11 +594,11 @@
>         options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
> 
> 
>-        ConfigurationContext configConetxt = ConfigurationContextFactory
>+        ConfigurationContext configContext = ConfigurationContextFactory
>                 .createConfigurationContextFromFileSystem(null, null);
>-        RPCServiceClient rpcClient = new RPCServiceClient(configConetxt, null);
>+        RPCServiceClient rpcClient = new RPCServiceClient(configContext, null);
>         rpcClient.setOptions(options);
>-        MessageContext reqMessageContext = ContextFactory.createMessageContext(configConetxt);
>+        MessageContext reqMessageContext = configContext.createMessageContext();
>         OperationClient opClinet = rpcClient.createClient(ServiceClient.ANON_OUT_IN_OP);
>         opClinet.setOptions(options);
>         reqMessageContext.setEnvelope(envelope);
>
>Modified: webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java (original)
>+++ webservices/axis2/trunk/java/modules/jaxbri/src/org/apache/axis2/jaxbri/CodeGenerationUtility.java Sat May  5 09:16:25 2007
>@@ -47,7 +47,6 @@
> import java.util.Iterator;
> import java.util.List;
> import java.util.Map;
>-import java.util.Vector;
> import java.util.ArrayList;
> 
> public class CodeGenerationUtility {
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/OperationClient.java Sat May  5 09:16:25 2007
>@@ -22,7 +22,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -69,7 +68,7 @@
>         this.sc = sc;
>         this.options = new Options(options);
>         completed = false;
>-        oc = ContextFactory.createOperationContext(axisOp, sc);
>+        oc = sc.createOperationContext(axisOp);
>     }
> 
>     /**
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/client/ServiceClient.java Sat May  5 09:16:25 2007
>@@ -29,7 +29,6 @@
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -135,26 +134,41 @@
> 
>     private void configureServiceClient(ConfigurationContext configContext, AxisService axisService)
>             throws AxisFault {
>-        initializeTransports(configContext);
>+        if (configContext == null) {
>+            if (ListenerManager.defaultConfigurationContext == null) {
>+                configContext = ConfigurationContextFactory.
>+                        createConfigurationContextFromFileSystem(null, null);
>+                createConfigCtx = true;
>+            } else {
>+                configContext = ListenerManager.defaultConfigurationContext;
>+            }
>+        }
>+        this.configContext = configContext;
>+
>+        // Initialize transports
>+        ListenerManager transportManager = configContext.getListenerManager();
>+        if (transportManager == null) {
>+            transportManager = new ListenerManager();
>+            transportManager.init(this.configContext);
>+        }
>+
>         // save the axisConfig and service
>-        this.axisConfig = this.configContext.getAxisConfiguration();
>-        if (axisService != null) {
>-            this.axisService = axisService;
>-        } else {
>-            this.axisService = createAnonymousService();
>+        axisConfig = configContext.getAxisConfiguration();
>+        if (axisService == null) {
>+            axisService = createAnonymousService();
>         }
>-        if (this.axisConfig.getService(this.axisService.getName()) == null) {
>-            this.axisService.setClientSide(true);
>-            this.axisConfig.addService(this.axisService);
>+        this.axisService = axisService;
>+        if (axisConfig.getService(axisService.getName()) == null) {
>+            axisService.setClientSide(true);
>+            axisConfig.addService(axisService);
>         } else {
>             throw new AxisFault(Messages.getMessage(
>                     "twoservicecannothavesamename",
>-                    this.axisService.getName()));
>+                    axisService.getName()));
>         }
>-        AxisServiceGroup axisServiceGroup = (AxisServiceGroup) this.axisService.getParent();
>-        ServiceGroupContext sgc = ContextFactory.createServiceGroupContext(this.configContext,
>-                                                                           axisServiceGroup);
>-        this.serviceContext = ContextFactory.createServiceContext(sgc, this.axisService);
>+        AxisServiceGroup axisServiceGroup = (AxisServiceGroup)axisService.getParent();
>+        ServiceGroupContext sgc = configContext.createServiceGroupContext(axisServiceGroup);
>+        serviceContext = sgc.getServiceContext(axisService);
>     }
> 
> 
>@@ -197,28 +211,6 @@
>                                                                                       options));
>     }
> 
>-    private void initializeTransports(ConfigurationContext configContext) throws AxisFault {
>-        ListenerManager transportManager;
>-        if (configContext != null) {
>-            this.configContext = configContext;
>-            transportManager = configContext.getListenerManager();
>-            if (transportManager == null) {
>-                transportManager = new ListenerManager();
>-                transportManager.init(this.configContext);
>-            }
>-        } else {
>-            if (ListenerManager.defaultConfigurationContext == null) {
>-                this.configContext = ConfigurationContextFactory.
>-                        createConfigurationContextFromFileSystem(null, null);
>-                transportManager = new ListenerManager();
>-                transportManager.init(this.configContext);
>-                createConfigCtx = true;
>-            } else {
>-                this.configContext = ListenerManager.defaultConfigurationContext;
>-            }
>-        }
>-    }
>-
>     /**
>      * Create a service client by assuming an anonymous service and any other
>      * necessary information.
>@@ -756,9 +748,7 @@
> 
>         AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>         ServiceGroupContext serviceGroupContext =
>-                ContextFactory.createServiceGroupContext(configContext,
>-                                                         axisServiceGroup);
>-        this.serviceContext = ContextFactory.createServiceContext(
>-                serviceGroupContext, this.axisService);
>+                configContext.createServiceGroupContext(axisServiceGroup);
>+        this.serviceContext = serviceGroupContext.getServiceContext(axisService);
>     }
> }
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContext.java Sat May  5 09:16:25 2007
>@@ -123,8 +123,7 @@
>      * @param messageContext : MessageContext
>      * @throws org.apache.axis2.AxisFault : If something goes wrong
>      */
>-    public void fillServiceContextAndServiceGroupContext(
>-            MessageContext messageContext)
>+    public void fillServiceContextAndServiceGroupContext(MessageContext messageContext)
>             throws AxisFault {
>         // by this time service group context id must have a value. Either from transport or from addressing
>         ServiceGroupContext serviceGroupContext;
>@@ -146,8 +145,8 @@
>                         axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>                         messageContext.setAxisServiceGroup(axisServiceGroup);
>                     }
>-                    serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                            messageContext.getConfigurationContext(), axisServiceGroup);
>+                    ConfigurationContext cfgCtx = messageContext.getConfigurationContext();
>+                    serviceGroupContext = cfgCtx.createServiceGroupContext(axisServiceGroup);
>                     applicationSessionServiceGroupContextTable
>                             .put(serviceGroupName, serviceGroupContext);
> 
>@@ -160,8 +159,8 @@
>                     }
>                 }
>                 messageContext.setServiceGroupContext(serviceGroupContext);
>-                messageContext.setServiceContext(ContextFactory.createServiceContext(
>-                        serviceGroupContext, axisService));
>+                messageContext.setServiceContext(
>+                        serviceGroupContext.getServiceContext(axisService));
>             } else if (Constants.SCOPE_SOAP_SESSION.equals(scope)) {
>                 String serviceGroupContextId = messageContext.getServiceGroupContextId();
>                 if (serviceGroupContextId != null) {
>@@ -173,10 +172,8 @@
>                     }
>                 } else {
>                     AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>-                    serviceGroupContext =
>-                            ContextFactory.createServiceGroupContext(this, axisServiceGroup);
>-                    serviceContext =
>-                            ContextFactory.createServiceContext(serviceGroupContext, axisService);
>+                    serviceGroupContext = createServiceGroupContext(axisServiceGroup);
>+                    serviceContext = serviceGroupContext.getServiceContext(axisService);
>                     // set the serviceGroupContextID
>                     serviceGroupContextId = UUIDGenerator.getUUID();
>                     serviceGroupContext.setId(serviceGroupContextId);
>@@ -194,16 +191,13 @@
>                 }
>                 messageContext.setServiceGroupContext(serviceGroupContext);
>                 messageContext.setServiceContext(
>-                        ContextFactory.createServiceContext(serviceGroupContext, axisService));
>+                        serviceGroupContext.getServiceContext(axisService));
>             } else if (Constants.SCOPE_REQUEST.equals(scope)) {
>                 AxisServiceGroup axisServiceGroup = (AxisServiceGroup) axisService.getParent();
>-                serviceGroupContext =
>-                        ContextFactory.createServiceGroupContext(this, axisServiceGroup);
>+                serviceGroupContext = createServiceGroupContext(axisServiceGroup);
>                 messageContext.setServiceGroupContext(serviceGroupContext);
>-                serviceContext =
>-                        ContextFactory.createServiceContext(serviceGroupContext, axisService);
>+                serviceContext = serviceGroupContext.getServiceContext(axisService);
>                 messageContext.setServiceContext(serviceContext);
>-                messageContext.getOperationContext().setParent(serviceContext);
>             }
>         }
>         if (messageContext.getOperationContext() != null) {
>@@ -335,6 +329,56 @@
>         // if we got here, we did not find an operation context
>         // that fits the criteria
>         return null;
>+    }
>+
>+    protected ArrayList contextListeners;
>+
>+    /**
>+     * Register a ContextListener to be notified of all sub-context creation events.
>+     * Note that we currently only support a single listener.
>+     *
>+     * @param contextListener a ContextListener
>+     */
>+    public void registerContextListener(ContextListener contextListener) {
>+        if (contextListeners == null) contextListeners = new ArrayList();
>+        contextListeners.add(contextListener);
>+    }
>+
>+    /**
>+     * Inform any listeners of a new context
>+     *
>+     * @param context the just-created subcontext
>+     */
>+    void contextCreated(AbstractContext context) {
>+        if (contextListeners == null) return;
>+        for (Iterator i = contextListeners.iterator(); i.hasNext();) {
>+            ContextListener listener = (ContextListener)i.next();
>+            listener.contextCreated(context);
>+        }
>+    }
>+
>+    /**
>+     * Create a MessageContext, and notify any registered ContextListener.
>+     * 
>+     * @return a new MessageContext
>+     */
>+    public MessageContext createMessageContext() {
>+        MessageContext msgCtx = new MessageContext(this);
>+        contextCreated(msgCtx);
>+        return msgCtx;
>+    }
>+
>+    /**
>+     * Create a ServiceGroupContext for the specified service group, and notify any
>+     * registered ContextListener.
>+     *
>+     * @param serviceGroup an AxisServiceGroup
>+     * @return a new ServiceGroupContext
>+     */
>+    public ServiceGroupContext createServiceGroupContext(AxisServiceGroup serviceGroup) {
>+        ServiceGroupContext sgCtx = new ServiceGroupContext(this, serviceGroup);
>+        contextCreated(sgCtx);
>+        return sgCtx;
>     }
> 
>     /**
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ConfigurationContextFactory.java Sat May  5 09:16:25 2007
>@@ -85,8 +85,8 @@
>             AxisServiceGroup axisServiceGroup = (AxisServiceGroup) serviceGroups.next();
>             String maxScope = SessionUtils.calculateMaxScopeForServiceGroup(axisServiceGroup);
>             if (Constants.SCOPE_APPLICATION.equals(maxScope)) {
>-                ServiceGroupContext serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                        configCtx, axisServiceGroup);
>+                ServiceGroupContext serviceGroupContext =
>+                        configCtx.createServiceGroupContext(axisServiceGroup);
>                 configCtx.addServiceGroupContextintoApplicatoionScopeTable(serviceGroupContext);
>                 DependencyManager.initService(serviceGroupContext);
>             }
>
>Added: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java?view=auto&rev=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java (added)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ContextListener.java Sat May  5 09:16:25 2007
>@@ -0,0 +1,26 @@
>+package org.apache.axis2.context;
>+
>+/*
>+* Copyright 2007 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.
>+*/
>+
>+/**
>+ * A ContextListener gets informed about new context creations.  Register one with
>+ * a ConfigurationContext and you'll get contextCreated() notifications for every
>+ * sub-context creation event.
>+ */
>+public interface ContextListener {
>+    void contextCreated(AbstractContext context);
>+}
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/MessageContext.java Sat May  5 09:16:25 2007
>@@ -501,6 +501,16 @@
>         options = new Options();
>     }
> 
>+    /**
>+     * Constructor has package access
>+     *
>+     * @param configContext the associated ConfigurationContext
>+     */
>+    MessageContext(ConfigurationContext configContext) {
>+        this();
>+        setConfigurationContext(configContext);
>+    }
>+
>     public String toString() {
>         return getLogIDString();
>     }
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/OperationContextFactory.java Sat May  5 09:16:25 2007
>@@ -38,7 +38,7 @@
>                 || (WSDLConstants.MEP_CONSTANT_OUT_IN == mepURI) ||
>                 (WSDLConstants.MEP_CONSTANT_OUT_OPTIONAL_IN == mepURI)
>                 || (WSDLConstants.MEP_CONSTANT_ROBUST_OUT_ONLY == mepURI)) {
>-            return ContextFactory.createOperationContext(axisOp, serviceContext);
>+            return serviceContext.createOperationContext(axisOp);
>         } else {
>             throw new AxisFault(Messages.getMessage("unSupportedMEP", "ID is " + mepURI));
>         }
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceContext.java Sat May  5 09:16:25 2007
>@@ -131,16 +131,22 @@
>     // end MetaData section
>     //----------------------------------------------------------------
> 
>-    // simple constructor
>+    /**
>+     * Public constructor (only here because this class is Externalizable)
>+     */
>     public ServiceContext() {
>-        super(null);
>     }
> 
>-
>-    public ServiceContext(AxisService serviceConfig, ServiceGroupContext serviceGroupContext) {
>+    /**
>+     * Constructor (package access, should only be used by ServiceGroupContext)
>+     *
>+     * @param axisService the AxisService for which to create a context
>+     * @param serviceGroupContext the parent ServiceGroupContext
>+     */
>+    ServiceContext(AxisService axisService, ServiceGroupContext serviceGroupContext) {
>         super(serviceGroupContext);
>         this.serviceGroupContext = serviceGroupContext;
>-        this.axisService = serviceConfig;
>+        this.axisService = axisService;
>         this.configContext = (ConfigurationContext) parent.getParent();
>     }
> 
>@@ -150,7 +156,8 @@
>     }
> 
>     public OperationContext createOperationContext(AxisOperation axisOp) {
>-        OperationContext ctx = ContextFactory.createOperationContext(axisOp, this);
>+        OperationContext ctx = new OperationContext(axisOp, this);
>+        configContext.contextCreated(ctx);
>         return ctx;
>     }
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/context/ServiceGroupContext.java Sat May  5 09:16:25 2007
>@@ -144,6 +144,7 @@
>         ServiceContext serviceContext = (ServiceContext) serviceContextMap.get(service.getName());
>         if (serviceContext == null) {
>             serviceContext = new ServiceContext(service, this);
>+            getRootContext().contextCreated(serviceContext);
>             serviceContextMap.put(service.getName(), serviceContext);
> 
>             ClusterManager clusterManager = axisService.getAxisConfiguration().getClusterManager();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisOperation.java Sat May  5 09:16:25 2007
>@@ -26,7 +26,6 @@
> import org.apache.axis2.client.OperationClient;
> import org.apache.axis2.client.Options;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -371,7 +370,7 @@
> 
>             // Its a new incoming message so get the factory to create a new
>             // one
>-            operationContext = ContextFactory.createOperationContext(this, serviceContext);
>+            operationContext = serviceContext.createOperationContext(this);
>         } else {
> 
>             // So this message is part of an ongoing MEP
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Sat May  5 09:16:25 2007
>@@ -27,7 +27,6 @@
> import org.apache.axis2.client.async.AsyncResult;
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -312,8 +311,8 @@
> 
>         // create the responseMessageContext
> 
>-        MessageContext responseMessageContext = ContextFactory.createMessageContext(
>-                msgctx.getConfigurationContext());
>+        MessageContext responseMessageContext =
>+                msgctx.getConfigurationContext().createMessageContext();
> 
>         // This is a hack - Needs to change
>         responseMessageContext.setOptions(options);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/OutOnlyAxisOperation.java Sat May  5 09:16:25 2007
>@@ -21,7 +21,6 @@
> import org.apache.axis2.client.Options;
> import org.apache.axis2.client.async.Callback;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -245,7 +244,7 @@
>         // setting message ID if it null
> 
>         // create the operation context for myself
>-        OperationContext oc = ContextFactory.createOperationContext(axisOp, sc);
>+        OperationContext oc = sc.createOperationContext(axisOp);
>         oc.addMessageContext(mc);
>         // ship it out
>         AxisEngine engine = new AxisEngine(cc);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/RobustOutOnlyAxisOperation.java Sat May  5 09:16:25 2007
>@@ -21,7 +21,6 @@
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.client.OperationClient;
> import org.apache.axis2.client.Options;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.engine.AxisEngine;
>@@ -62,8 +61,8 @@
>             AxisEngine engine = new AxisEngine(msgctx.getConfigurationContext());
> 
>             // create the responseMessageContext
>-            MessageContext responseMessageContext = ContextFactory.createMessageContext(
>-                    msgctx.getConfigurationContext());
>+            MessageContext responseMessageContext =
>+                    msgctx.getConfigurationContext().createMessageContext();
> 
>             // This is a hack - Needs to change
>             responseMessageContext.setOptions(options);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DependencyManager.java Sat May  5 09:16:25 2007
>@@ -19,7 +19,6 @@
> 
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.Constants;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.axis2.description.AxisService;
>@@ -79,8 +78,7 @@
>         Iterator serviceItr = serviceGroup.getServices();
>         while (serviceItr.hasNext()) {
>             AxisService axisService = (AxisService) serviceItr.next();
>-            ServiceContext serviceContext = ContextFactory.createServiceContext(
>-                    serviceGroupContext, axisService);
>+            ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
>             AxisService service = serviceContext.getAxisService();
>             ClassLoader classLoader = service.getClassLoader();
>             Parameter implInfoParam = service.getParameter(Constants.SERVICE_CLASS);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/DispatchPhase.java Sat May  5 09:16:25 2007
>@@ -4,12 +4,12 @@
> import org.apache.axis2.Constants;
> import org.apache.axis2.addressing.AddressingHelper;
> import org.apache.axis2.addressing.EndpointReference;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
> import org.apache.axis2.context.SessionContext;
>+import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.description.AxisOperation;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.description.AxisServiceGroup;
>@@ -170,30 +170,25 @@
>             msgContext.setServiceGroupContext(serviceGroupContext);
>             msgContext.setServiceGroupContextId(serviceGroupContext.getId());
>         } else {    // 2. if null, create new opCtxt
>-            operationContext = ContextFactory.createOperationContext(axisOperation, serviceContext);
>-
>-            axisOperation.registerMessageContext(msgContext, operationContext);
>-            if (serviceContext != null) {
>-                // no need to added to configuration conetxt , since we are happy in
>-                //  storing in session context
>-                operationContext.setParent(serviceContext);
>-            } else {
>+            if (serviceContext == null) {
>                 // fill the service group context and service context info
>-                msgContext.getConfigurationContext().fillServiceContextAndServiceGroupContext(
>-                        msgContext);
>+                msgContext.getConfigurationContext().
>+                        fillServiceContextAndServiceGroupContext(msgContext);
>+                serviceContext = msgContext.getServiceContext();
>             }
>+            operationContext = serviceContext.createOperationContext(axisOperation);
>+            axisOperation.registerMessageContext(msgContext, operationContext);
>         }
>-        serviceContext = msgContext.getServiceContext();
>-        if (serviceContext != null) {
>-            serviceContext.setMyEPR(msgContext.getTo());
>-        }
>+
>+        serviceContext.setMyEPR(msgContext.getTo());
>     }
> 
>     /**
>      * To check wether the incoming request has come in valid transport , simpley the transports
>      * that service author wants to expose
>      *
>-     * @param msgctx
>+     * @param msgctx the current MessageContext
>+     * @throws AxisFault in case of error
>      */
>     private void validateTransport(MessageContext msgctx) throws AxisFault {
>         AxisService service = msgctx.getAxisService();
>@@ -229,14 +224,13 @@
>             }
>         }
>         String serviceGroupName = msgContext.getAxisServiceGroup().getServiceGroupName();
>-        ServiceGroupContext serviceGroupContext = sessionContext.getServiceGroupContext(
>-                serviceGroupName);
>+        ServiceGroupContext serviceGroupContext =
>+                sessionContext.getServiceGroupContext(serviceGroupName);
>         if (serviceGroupContext != null) {
>             //setting service group context
>             msgContext.setServiceGroupContext(serviceGroupContext);
>-            // setting Service conetxt
>-            msgContext.setServiceContext(
>-                    ContextFactory.createServiceContext(serviceGroupContext, service));
>+            // setting Service context
>+            msgContext.setServiceContext(serviceGroupContext.getServiceContext(service));
>         } else {
>             createAndFillContexts(service, msgContext, sessionContext);
>         }
>@@ -253,12 +247,11 @@
>                                        SessionContext sessionContext) throws AxisFault {
>         ServiceGroupContext serviceGroupContext;
>         AxisServiceGroup axisServiceGroup = (AxisServiceGroup) service.getParent();
>-        serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                msgContext.getConfigurationContext(), axisServiceGroup);
>+        ConfigurationContext configCtx = msgContext.getConfigurationContext();
>+        serviceGroupContext = configCtx.createServiceGroupContext(axisServiceGroup);
> 
>         msgContext.setServiceGroupContext(serviceGroupContext);
>-        ServiceContext serviceContext =
>-                ContextFactory.createServiceContext(serviceGroupContext, service);
>+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(service);
>         msgContext.setServiceContext(serviceContext);
>         if (sessionContext != null) {
>             sessionContext.addServiceContext(serviceContext);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Sat May  5 09:16:25 2007
>@@ -29,7 +29,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.SessionContext;
>@@ -600,7 +599,7 @@
>     protected MessageContext createMessageContext(HttpServletRequest request,
>                                                   HttpServletResponse response,
>                                                   boolean invocationType) throws IOException {
>-        MessageContext msgContext = ContextFactory.createMessageContext(configContext);
>+        MessageContext msgContext = configContext.createMessageContext();
>         String requestURI = request.getRequestURI();
> 
>         String trsPrefix = request.getRequestURL().toString();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Sat May  5 09:16:25 2007
>@@ -39,7 +39,6 @@
> import org.apache.axis2.addressing.AddressingHelper;
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportInDescription;
> import org.apache.axis2.description.TransportOutDescription;
>@@ -114,7 +113,7 @@
>         this.configurationContext = configurationContext;
>         this.worker = worker;
> 
>-        this.msgContext = ContextFactory.createMessageContext(configurationContext);
>+        this.msgContext = configurationContext.createMessageContext();
>         this.msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
>     }
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/jms/JMSMessageReceiver.java Sat May  5 09:16:25 2007
>@@ -22,7 +22,6 @@
> import org.apache.axis2.description.Parameter;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.engine.AxisEngine;
> import org.apache.axis2.util.MessageContextBuilder;
>@@ -128,7 +127,7 @@
>         InputStream in = JMSUtils.getInputStream(message);
> 
>         try {
>-            MessageContext msgContext = ContextFactory.createMessageContext(axisConf);
>+            MessageContext msgContext = axisConf.createMessageContext();
> 
>             // get destination and create correct EPR
>             Destination dest = message.getJMSDestination();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/local/LocalTransportReceiver.java Sat May  5 09:16:25 2007
>@@ -24,7 +24,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.builder.BuilderUtil;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportInDescription;
> import org.apache.axis2.description.TransportOutDescription;
>@@ -58,7 +57,7 @@
> 
>             tOut.setSender(new LocalResponder(sender));
> 
>-            MessageContext msgCtx = ContextFactory.createMessageContext(confContext);
>+            MessageContext msgCtx = confContext.createMessageContext();
>             msgCtx.setTransportIn(tIn);
>             msgCtx.setTransportOut(tOut);
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/SimpleMailListener.java Sat May  5 09:16:25 2007
>@@ -315,7 +315,7 @@
>                         .getTransportOut(org.apache.axis2.Constants.TRANSPORT_MAIL);
>         if ((transportIn != null) && (transportOut != null)) {
>             // create Message Context
>-            msgContext = ContextFactory.createMessageContext(configurationContext);
>+            msgContext = configurationContext.createMessageContext();
>             msgContext.setTransportIn(transportIn);
>             msgContext.setTransportOut(transportOut);
>             msgContext.setServerSide(true);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java Sat May  5 09:16:25 2007
>@@ -24,7 +24,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.builder.BuilderUtil;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.engine.AxisEngine;
> import org.apache.axis2.transport.mail.Constants;
>@@ -73,7 +72,7 @@
> 
>         // create and initialize a message context
>         try {
>-            msgContext = ContextFactory.createMessageContext(confContext);
>+            msgContext = confContext.createMessageContext();
>             msgContext.setTransportIn(confContext.getAxisConfiguration().getTransportIn(
>                     org.apache.axis2.Constants.TRANSPORT_MAIL));
>             msgContext.setTransportOut(confContext.getAxisConfiguration().getTransportOut(
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java Sat May  5 09:16:25 2007
>@@ -23,7 +23,6 @@
> import org.apache.axis2.Constants;
> import org.apache.axis2.builder.BuilderUtil;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.description.TransportInDescription;
> import org.apache.axis2.description.TransportOutDescription;
>@@ -67,7 +66,7 @@
>             if ((transportOut != null) && (transportIn != null)) {
> 
>                 // create the Message Context and fill in the values
>-                msgContext = ContextFactory.createMessageContext(configurationContext);
>+                msgContext = configurationContext.createMessageContext();
>                 msgContext.setIncomingTransportName(Constants.TRANSPORT_TCP);
>                 msgContext.setTransportIn(transportIn);
>                 msgContext.setTransportOut(transportOut);
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java Sat May  5 09:16:25 2007
>@@ -39,7 +39,6 @@
> import org.apache.axis2.addressing.EndpointReference;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
> import org.apache.axis2.context.ServiceContext;
>@@ -66,8 +65,8 @@
>      */
>     private static MessageContext createResponseMessageContext(MessageContext inMessageContext)
>             throws AxisFault {
>-        MessageContext newmsgCtx = ContextFactory.createMessageContext(
>-                inMessageContext.getConfigurationContext());
>+        MessageContext newmsgCtx =
>+                inMessageContext.getConfigurationContext().createMessageContext();
> 
>         newmsgCtx.setSessionContext(inMessageContext.getSessionContext());
>         newmsgCtx.setTransportIn(inMessageContext.getTransportIn());
>
>Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java Sat May  5 09:16:25 2007
>@@ -26,7 +26,6 @@
> import org.apache.axis2.cluster.context.ContextManager;
> import org.apache.axis2.context.ConfigurationContext;
> import org.apache.axis2.context.ConfigurationContextFactory;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.context.ServiceGroupContext;
>@@ -143,13 +142,12 @@
>                                                                            ConfigurationContext configurationContext) throws AxisFault {
>         String serviceGroupContextId = UUIDGenerator.getUUID();
>         ServiceGroupContext serviceGroupContext =
>-                ContextFactory.createServiceGroupContext(configurationContext,
>-                                                         (AxisServiceGroup) axisService
>-                                                                 .getParent());
>+                configurationContext.createServiceGroupContext((AxisServiceGroup)axisService
>+                        .getParent());
> 
>         serviceGroupContext.setId(serviceGroupContextId);
>         configurationContext.registerServiceGroupContextintoSoapSessionTable(serviceGroupContext);
>-        ServiceContext serviceContext = new ServiceContext(axisService, serviceGroupContext);
>+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
> 
>         ClusterManager clusterManager =
>                 configurationContext.getAxisConfiguration().getClusterManager();
>
>Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextHierarchyTest.java Sat May  5 09:16:25 2007
>@@ -41,14 +41,13 @@
>         axisService.addOperation(axisOperation);
>         axisConfiguration.addService(axisService);
>         configurationContext = new ConfigurationContext(axisConfiguration);
>-        msgctx = ContextFactory.createMessageContext(configurationContext);
>+        msgctx = configurationContext.createMessageContext();
>     }
> 
>     public void testCompleteHierarchy() throws AxisFault {
>-        ServiceGroupContext serviceGroupContext = ContextFactory.createServiceGroupContext(
>-                configurationContext, (AxisServiceGroup) axisService.getParent());
>-        ServiceContext serviceContext =
>-                ContextFactory.createServiceContext(serviceGroupContext, axisService);
>+        ServiceGroupContext serviceGroupContext = configurationContext.createServiceGroupContext(
>+                (AxisServiceGroup) axisService.getParent());
>+        ServiceContext serviceContext = serviceGroupContext.getServiceContext(axisService);
>         OperationContext opContext = axisOperation.findOperationContext(msgctx,
>                                                                         serviceContext);
>         axisOperation.registerOperationContext(msgctx, opContext);
>
>Added: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java?view=auto&rev=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java (added)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/ContextListenerTest.java Sat May  5 09:16:25 2007
>@@ -0,0 +1,86 @@
>+/*
>+ * Copyright 2007 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.
>+ */
>+package org.apache.axis2.context;
>+
>+import junit.framework.TestCase;
>+import org.apache.axis2.engine.AxisConfiguration;
>+import org.apache.axis2.description.AxisServiceGroup;
>+import org.apache.axis2.description.AxisService;
>+import org.apache.axis2.description.AxisOperation;
>+import org.apache.axis2.description.InOutAxisOperation;
>+
>+import javax.xml.namespace.QName;
>+
>+public class ContextListenerTest extends TestCase {
>+    static class MyListener implements ContextListener {
>+        private AbstractContext lastContext;
>+
>+        public void contextCreated(AbstractContext context) {
>+            lastContext = context;
>+        }
>+
>+        public AbstractContext getLastContext() {
>+            return lastContext;
>+        }
>+    }
>+
>+    /**
>+     * Confirm that creating contexts at various levels correctly causes notifications to
>+     * ContextListeners that are registered on a given ConfigurationContext.
>+     *
>+     * @throws Exception if an error occurs
>+     */
>+    public void testContextListener() throws Exception {
>+        // Set up metadata
>+        AxisConfiguration axisConfig = new AxisConfiguration();
>+        ConfigurationContext configCtx = new ConfigurationContext(axisConfig);
>+        AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
>+        AxisService service = new AxisService("TestService");
>+        AxisOperation operation = new InOutAxisOperation(new QName("ns", "op1"));
>+        service.addOperation(operation);
>+        serviceGroup.addService(service);
>+
>+        // Register a listener and make sure it starts out clean
>+        MyListener listener = new MyListener();
>+        configCtx.registerContextListener(listener);
>+        assertNull(listener.getLastContext());
>+
>+        MessageContext mc = configCtx.createMessageContext();
>+        assertNotNull(mc);
>+        assertEquals("MessageContext not stored", mc, listener.getLastContext());
>+
>+        ServiceGroupContext sgc = configCtx.createServiceGroupContext(serviceGroup);
>+        assertNotNull(sgc);
>+        assertEquals("ServiceGroupContext not stored", sgc, listener.getLastContext());
>+
>+        ServiceContext sc = sgc.getServiceContext(service);
>+        assertNotNull(sc);
>+        assertEquals("ServiceContext not stored", sc, listener.getLastContext());
>+
>+        OperationContext oc = sc.createOperationContext(operation);
>+        assertNotNull(oc);
>+        assertEquals("OperationContext not stored", oc, listener.getLastContext());
>+
>+        // Try a second listener and make sure they both get notified
>+        MyListener listener2 = new MyListener();
>+        configCtx.registerContextListener(listener2);
>+
>+        mc = configCtx.createMessageContext();
>+        assertNotNull(mc);
>+        assertEquals("MessageContext not stored", mc, listener.getLastContext());
>+        assertEquals("MessageContext not stored in listener 2", mc, listener2.getLastContext());
>+    }
>+}
>
>Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/context/OperationContextTest.java Sat May  5 09:16:25 2007
>@@ -43,10 +43,9 @@
> 
>         AxisService axisService = new AxisService("TempSC");
>         configContext.getAxisConfiguration().addService(axisService);
>-        ServiceGroupContext sgc = ContextFactory.createServiceGroupContext(configContext,
>-                                                                           (AxisServiceGroup) axisService
>-                                                                                   .getParent());
>-        ServiceContext sessionContext = ContextFactory.createServiceContext(sgc, axisService);
>+        ServiceGroupContext sgc = configContext.createServiceGroupContext(
>+                (AxisServiceGroup) axisService.getParent());
>+        ServiceContext sessionContext = sgc.getServiceContext(axisService);
>         MessageContext messageContext1 = this.getBasicMessageContext();
> 
>         messageContext1.setMessageID(UUIDGenerator.getUUID());
>@@ -66,7 +65,7 @@
>     }
> 
>     public MessageContext getBasicMessageContext() throws AxisFault {
>-        MessageContext messageContext = ContextFactory.createMessageContext(configContext);
>+        MessageContext messageContext = configContext.createMessageContext();
>         messageContext.setTransportIn(new TransportInDescription("axis2"));
>         messageContext.setTransportOut(new TransportOutDescription("axis2"));
> 
>
>Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java
>URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java?view=diff&rev=535544&r1=535543&r2=535544
>==============================================================================
>--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java (original)
>+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/dispatchers/RelatesToBasedOperationDispatcherTest.java Sat May  5 09:16:25 2007
>@@ -17,12 +17,14 @@
> import org.apache.axis2.AxisFault;
> import org.apache.axis2.addressing.RelatesTo;
> import org.apache.axis2.context.ConfigurationContext;
>-import org.apache.axis2.context.ContextFactory;
> import org.apache.axis2.context.MessageContext;
> import org.apache.axis2.context.OperationContext;
>+import org.apache.axis2.context.ServiceGroupContext;
>+import org.apache.axis2.context.ServiceContext;
> import org.apache.axis2.description.AxisOperation;
> import org.apache.axis2.description.AxisService;
> import org.apache.axis2.description.InOnlyAxisOperation;
>+import org.apache.axis2.description.AxisServiceGroup;
> import org.apache.axis2.engine.AxisConfiguration;
> 
> import javax.xml.namespace.QName;
>@@ -42,11 +44,13 @@
>         as1.addOperation(operation2);
> 
>         ConfigurationContext cc = new ConfigurationContext(ac);
>-        OperationContext oc1 = ContextFactory.createOperationContext(operation1, null);
>-        OperationContext oc2 = ContextFactory.createOperationContext(operation2, null);
>+        ServiceGroupContext sgc = cc.createServiceGroupContext((AxisServiceGroup)as1.getParent());
>+        ServiceContext serviceContext = sgc.getServiceContext(as1);
>+        OperationContext oc1 = serviceContext.createOperationContext(operation1);
>+        OperationContext oc2 = serviceContext.createOperationContext(operation2);
>         cc.registerOperationContext("urn:org.apache.axis2.dispatchers.messageid:123", oc1);
>         cc.registerOperationContext("urn:org.apache.axis2.dispatchers.messageid:456", oc2);
>-        messageContext = ContextFactory.createMessageContext(cc);
>+        messageContext = cc.createMessageContext();
>         messageContext
>                 .addRelatesTo(new RelatesTo("urn:org.apache.axis2.dispatchers.messageid:456"));
>         messageContext.setAxisService(as1);
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-cvs-help@ws.apache.org
>
>
>
>  
>

-- 
Thanks,
Deepal
................................................................
"The highest tower is built one brick at a time"



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org