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 di...@apache.org on 2007/06/17 04:19:16 UTC

svn commit: r548001 - /webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java

Author: dims
Date: Sat Jun 16 19:19:14 2007
New Revision: 548001

URL: http://svn.apache.org/viewvc?view=rev&rev=548001
Log:
Fix for AXIS2-2185 - Add 'Service Object Supplier' Support

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java?view=diff&rev=548001&r1=548000&r2=548001
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/endpoint/lifecycle/impl/EndpointLifecycleManagerImpl.java Sat Jun 16 19:19:14 2007
@@ -35,6 +35,10 @@
 import org.apache.axis2.jaxws.server.endpoint.injection.impl.ResourceInjectionException;
 import org.apache.axis2.jaxws.server.endpoint.lifecycle.EndpointLifecycleException;
 import org.apache.axis2.jaxws.server.endpoint.lifecycle.EndpointLifecycleManager;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.Constants;
+import org.apache.axis2.util.Loader;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -109,7 +113,7 @@
             return serviceimpl;
         } else {
             // create a new service impl class for that service
-            serviceimpl = createServiceInstance(serviceImplClass);
+            serviceimpl = createServiceInstance(msgContext.getAxisService(), serviceImplClass);
             this.endpointInstance = serviceimpl;
             this.endpointClazz = serviceImplClass;
             if (log.isDebugEnabled()) {
@@ -249,7 +253,7 @@
         return false;
     }
 
-    private Object createServiceInstance(Class serviceImplClass) {
+    private Object createServiceInstance(AxisService service, Class serviceImplClass) {
         if (log.isDebugEnabled()) {
             log.debug("Creating new instance of service endpoint");
         }
@@ -261,11 +265,31 @@
 
         Object instance = null;
         try {
+            // allow alternative definition of makeNewServiceObject
+            if (service != null && service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER) != null) {
+                ClassLoader classLoader = service.getClassLoader();
+
+                Parameter serviceObjectParam =
+                        service.getParameter(Constants.SERVICE_OBJECT_SUPPLIER);
+                Class serviceObjectMaker = Loader.loadClass(classLoader, ((String)
+                        serviceObjectParam.getValue()).trim());
+
+                // Find static getServiceObject() method, call it if there
+                Method method = serviceObjectMaker.
+                        getMethod("getServiceObject",
+                                new Class[]{AxisService.class});
+                if (method != null) {
+                    return method.invoke(serviceObjectMaker.newInstance(), new Object[]{service});
+                }
+            }
             instance = serviceImplClass.newInstance();
         } catch (IllegalAccessException e) {
             throw ExceptionFactory.makeWebServiceException(Messages.getMessage(
                     "EndpointControllerErr6", serviceImplClass.getName()));
         } catch (InstantiationException e) {
+            throw ExceptionFactory.makeWebServiceException(Messages.getMessage(
+                    "EndpointControllerErr6", serviceImplClass.getName()));
+        } catch (Exception e) {
             throw ExceptionFactory.makeWebServiceException(Messages.getMessage(
                     "EndpointControllerErr6", serviceImplClass.getName()));
         }



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