You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ch...@apache.org on 2005/09/13 18:55:27 UTC

svn commit: r280587 - in /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: ./ context/ engine/

Author: chinthaka
Date: Tue Sep 13 09:55:12 2005
New Revision: 280587

URL: http://svn.apache.org/viewcvs?rev=280587&view=rev
Log:
More stuff coming in for service groups

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/InstanceDispatcher.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AbstractDispatcher.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/InstanceDispatcher.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/InstanceDispatcher.java?rev=280587&r1=280586&r2=280587&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/InstanceDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/InstanceDispatcher.java Tue Sep 13 09:55:12 2005
@@ -1,11 +1,7 @@
 package org.apache.axis2;
 
-import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.OperationContext;
-import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.context.*;
 import org.apache.axis2.description.OperationDescription;
-import org.apache.axis2.description.ServiceDescription;
-import org.apache.axis2.description.ServiceGroupDescription;
 import org.apache.axis2.handlers.AbstractHandler;
 
 /*
@@ -45,28 +41,25 @@
         System.out.println("Instance Dispatcher invoked .........");
 
         OperationDescription operationDesc = msgContext.getOperationDescription();
-        ServiceDescription serviceDesc = msgContext.getServiceDescription();
-        ServiceGroupDescription serviceGroupDesc = msgContext.getServiceGroupDescription();
-        String serviceGroupContextId = msgContext.getServiceGroupContextId();
 
         //  1. look up opCtxt using mc.addressingHeaders.relatesTo[0]
         OperationContext operationContext = operationDesc.findForExistingOperationContext(msgContext);
         if (operationContext != null) {
             operationDesc.registerOperationContext(msgContext, operationContext);
+            ServiceContext serviceContext = (ServiceContext) operationContext.getParent();
+            ServiceGroupContext serviceGroupContext = (ServiceGroupContext) serviceContext.getParent();
+            msgContext.setServiceContext(serviceContext);
+            msgContext.setServiceGroupContext(serviceGroupContext);
+            return;
+
         } else { //  2. if null, create new opCtxt
             operationContext =
                     OperationContextFactory.createOperationContext(operationDesc.getAxisSpecifMEPConstant(), operationDesc);
             operationDesc.registerOperationContext(msgContext, operationContext);
 
+            //  fill the service group context and service context info
+            msgContext.getSystemContext().
+                    fillServiceContextAndServiceGroupContext(msgContext);
         }
-
-//  4. look up SGC using mc.getServiceGroupContextID() as the key
-//  5. if null create new sgc
-//  6. look up service ctxt as service name as the key
-//  7. if null create new
-//  8. set opCtxt.setServiceCtxt(sc)
-// 9. return
-
-
     }
 }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java?rev=280587&r1=280586&r2=280587&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContext.java Tue Sep 13 09:55:12 2005
@@ -22,6 +22,7 @@
 import org.apache.axis2.description.ServiceDescription;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.storage.AxisStorage;
+import org.apache.axis2.util.UUIDGenerator;
 import org.apache.axis2.util.threadpool.ThreadPool;
 
 import javax.xml.namespace.QName;
@@ -31,7 +32,7 @@
 
 /**
  * This is the biggest memeber of the Axis2 information hierachy, and if this is serialized completly
- * the whole Axis2 is saved to the disc.  
+ * the whole Axis2 is saved to the disc.
  */
 
 public class ConfigurationContext extends AbstractContext {
@@ -52,6 +53,8 @@
 
     private final Map serviceContextMap;
 
+    private final Map serviceGroupContextMap = new HashMap();
+
     public ConfigurationContext(AxisConfiguration registry) {
         super(null);
         this.axisConfiguration = registry;
@@ -62,6 +65,7 @@
 
     /**
      * The method is used to do the intialization of the EngineContext
+     *
      * @throws AxisFault
      */
 
@@ -86,19 +90,22 @@
     public void setAxisConfiguration(AxisConfiguration configuration) {
         axisConfiguration = configuration;
     }
-    
+
     /**
      * Register a OperationContext agienst a given Message ID.
+     *
      * @param messageID
      * @param mepContext
      */
     public synchronized void registerOperationContext(
-        String messageID,
-        OperationContext mepContext) {
+            String messageID,
+            OperationContext mepContext) {
         this.operationContextMap.put(messageID, mepContext);
     }
+
     /**
      * get a OperationContext given a Message ID
+     *
      * @param messageID
      * @return OperationContext <code>OperationContext<code>
      */
@@ -109,18 +116,19 @@
     public Map getOperationContextMap() {
         return this.operationContextMap;
     }
-    
+
     /**
      * Register a ServiceContext agienst a given Message ID.
      */
     public synchronized void registerServiceContext(
-        String serviceInstanceID,
-        ServiceContext serviceContext) {
+            String serviceInstanceID,
+            ServiceContext serviceContext) {
         this.serviceContextMap.put(serviceInstanceID, serviceContext);
     }
 
     /**
      * get the ServiceContext given a id
+     *
      * @param serviceInstanceID
      * @return
      */
@@ -129,7 +137,7 @@
     }
 
     public AxisStorage getStorage() {
-        return  axisConfiguration.getAxisStorage();   //storage;
+        return axisConfiguration.getAxisStorage();   //storage;
     }
 
     public void setStorage(AxisStorage storage) {
@@ -137,13 +145,13 @@
     }
 
     public ServiceContext createServiceContext(QName serviceName)
-        throws AxisFault {
+            throws AxisFault {
         ServiceDescription service = axisConfiguration.getService(serviceName);
         if (service != null) {
             return new ServiceContext(service, this);
         } else {
             throw new AxisFault(
-                "Service not found service name = " + serviceName);
+                    "Service not found service name = " + serviceName);
         }
     }
 
@@ -156,9 +164,11 @@
         }
         return threadPool;
     }
+
     /**
-     * This method allows users to reolve the paths relative to the 
+     * This method allows users to reolve the paths relative to the
      * root diretory
+     *
      * @param path
      * @return
      */
@@ -177,4 +187,51 @@
         rootDir = file;
     }
 
+    /**
+     * This method should search for a SGC in the map with given id as the key.
+     * If(key != null && found)
+     * check for a service context for the intended service.
+     * if (!found)
+     * create one and hook up to SGC
+     * else
+     * create new sgc with the given key or if key is null with a new key
+     * create a new service context for the service
+     *
+     * @param messageContext
+     * @return
+     */
+    public ServiceGroupContext fillServiceContextAndServiceGroupContext(MessageContext messageContext) {
+        String serviceGroupContextId = messageContext.getServiceGroupContextId();
+
+        ServiceGroupContext serviceGroupContext = null;
+        ServiceContext serviceContext = null;
+        if (!isNull(serviceGroupContextId) && serviceGroupContextMap.get(serviceGroupContextId) != null) {
+            serviceGroupContext = (ServiceGroupContext) serviceGroupContextMap.get(serviceGroupContextId);
+            serviceContext = serviceGroupContext.getServiceContext(messageContext.getServiceDescription().getName().
+                    getLocalPart());
+            if (serviceContext == null) {
+                serviceContext = messageContext.getServiceDescription().findServiceContext(messageContext);
+                serviceContext.setParent(serviceGroupContext);
+            }
+        } else {
+            // either the key is null or no SGC is found from the give key
+            if (isNull(serviceGroupContextId)) {
+                serviceGroupContextId = UUIDGenerator.getUUID();
+                messageContext.setServiceGroupContextId(serviceGroupContextId);
+            }
+            serviceGroupContext = new ServiceGroupContext(this);
+            serviceGroupContextMap.put(serviceGroupContextId, serviceGroupContext);
+            serviceContext = messageContext.getServiceDescription().findServiceContext(messageContext);
+            serviceContext.setParent(serviceGroupContext);
+        }
+
+        messageContext.getOperationContext().setParent(serviceContext);
+        messageContext.setServiceContext(serviceContext);
+        messageContext.setServiceGroupContext(serviceGroupContext);
+        return serviceGroupContext;
+    }
+
+    private boolean isNull(String string) {
+        return "".equals(string) || string == null;
+    }
 }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java?rev=280587&r1=280586&r2=280587&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/OperationContext.java Tue Sep 13 09:55:12 2005
@@ -77,8 +77,6 @@
         super(null);
         this.axisOperation = axisOperation;
         this.operationMEP = axisOperation.getAxisSpecifMEPConstant();
-        this.operationContextMap = getServiceContext().getEngineContext()
-                .getOperationContextMap();
     }
 
     /**
@@ -196,5 +194,11 @@
 //    public MessageContext createMessageContext(AxisM){
 //    
 //    }
+
+    public void setParent(AbstractContext context) {
+        super.setParent(context);
+        this.operationContextMap = getServiceContext().getEngineContext()
+                .getOperationContextMap();
+    }
 
 }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java?rev=280587&r1=280586&r2=280587&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceContext.java Tue Sep 13 09:55:12 2005
@@ -62,7 +62,7 @@
     }
 
     public ConfigurationContext getEngineContext() {
-        return (ConfigurationContext) parent;
+        return (ConfigurationContext) parent.getParent();
     }
 
     public OperationContext createOperationContext(QName name) {

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java?rev=280587&r1=280586&r2=280587&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ServiceGroupContext.java Tue Sep 13 09:55:12 2005
@@ -1,4 +1,7 @@
 package org.apache.axis2.context;
+
+import java.util.HashMap;
+import java.util.Map;
 /*
 * Copyright 2004,2005 The Apache Software Foundation.
 *
@@ -19,8 +22,27 @@
 
 /**
  * Author: Deepal Jayasinghe
- * Date: Sep 13, 2005
- * Time: 9:54:22 AM
+ *       : Eran Chinthaka
  */
-public class ServiceGroupContext {
+public class ServiceGroupContext extends AbstractContext{
+
+    private String id;
+    private Map serviceContextMap;
+
+    protected ServiceGroupContext(AbstractContext parent) {
+        super(parent);
+        serviceContextMap = new HashMap();
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public ServiceContext getServiceContext(String serviceName){
+        return (ServiceContext) serviceContextMap.get(serviceName);
+    }
 }

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AbstractDispatcher.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AbstractDispatcher.java?rev=280587&r1=280586&r2=280587&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AbstractDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/AbstractDispatcher.java Tue Sep 13 09:55:12 2005
@@ -60,8 +60,8 @@
      */
     public final void invoke(MessageContext msgctx) throws AxisFault {
 
-        ServiceDescription serviceDescription = null;
-        if(msgctx.getServiceDescription() == null){
+        ServiceDescription serviceDescription = msgctx.getServiceDescription();
+        if(serviceDescription == null){
             serviceDescription = findService(msgctx);
             if (serviceDescription != null) {
                 msgctx.setServiceDescription(serviceDescription);