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 ch...@apache.org on 2006/07/14 15:27:45 UTC

svn commit: r421899 - in /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: Service.java engine/DependencyManager.java

Author: chinthaka
Date: Fri Jul 14 06:27:45 2006
New Revision: 421899

URL: http://svn.apache.org/viewvc?rev=421899&view=rev
Log:
Adding an interface so that service authors can implement to get information from Axis2. see http://marc.theaimsgroup.com/?l=axis-user&m=115286531111675&w=2

Added:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/Service.java
Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/DependencyManager.java

Added: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/Service.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/Service.java?rev=421899&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/Service.java (added)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/Service.java Fri Jul 14 06:27:45 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2004,2005 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;
+
+import org.apache.axis2.context.OperationContext;
+
+/**
+ * This class *may* be implemented by any service which require some information from Axis2 engine,
+ * but its not a must.
+ */
+public interface Service {
+
+    /**
+     * This will pass the operation context to the service implementation class and will be called
+     * by the in-built Axis2 message receivers.
+     * @param operationContext
+     */
+    public void setOperationContext(OperationContext operationContext);
+}

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/DependencyManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/DependencyManager.java?rev=421899&r1=421898&r2=421899&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/DependencyManager.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/DependencyManager.java Fri Jul 14 06:27:45 2006
@@ -18,6 +18,7 @@
 package org.apache.axis2.engine;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.Service;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.ServiceContext;
 import org.apache.axis2.context.ServiceGroupContext;
@@ -44,18 +45,26 @@
                                                       OperationContext opCtx)
             throws AxisFault {
         try {
-            Class classToLoad = obj.getClass();
-            // We can not call classToLoad.getDeclaredMethed() , since there
-            //  can be insatnce where mutiple services extends using one class
-            // just for init and other reflection methods
-            Method[] methods = classToLoad.getMethods();
-
-            for (int i = 0; i < methods.length; i++) {
-                if (MESSAGE_CONTEXT_INJECTION_METHOD.equals(methods[i].getName())
-                        && (methods[i].getParameterTypes().length == 1)
-                        && (methods[i].getParameterTypes()[0] == OperationContext.class)) {
-                    methods[i].invoke(obj, new Object[]{opCtx});
-                    break;
+
+            // if this service is implementing the o.a.a.Service interface, then use that fact to invoke the
+            // proper method.
+            if (obj instanceof Service) {
+                ((Service) obj).setOperationContext(opCtx);
+            } else {
+                Class classToLoad = obj.getClass();
+
+                // We can not call classToLoad.getDeclaredMethed() , since there
+                //  can be insatnce where mutiple services extends using one class
+                // just for init and other reflection methods
+                Method[] methods = classToLoad.getMethods();
+
+                for (int i = 0; i < methods.length; i++) {
+                    if (MESSAGE_CONTEXT_INJECTION_METHOD.equals(methods[i].getName())
+                            && (methods[i].getParameterTypes().length == 1)
+                            && (methods[i].getParameterTypes()[0] == OperationContext.class)) {
+                        methods[i].invoke(obj, new Object[]{opCtx});
+                        break;
+                    }
                 }
             }
         } catch (SecurityException e) {



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