You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2005/07/21 06:28:20 UTC

svn commit: r219995 - in /geronimo/trunk/modules: axis-builder/src/java/org/apache/geronimo/axis/builder/ j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/ j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/ tomcat-builder/src/java/org/apa...

Author: djencks
Date: Wed Jul 20 21:28:19 2005
New Revision: 219995

URL: http://svn.apache.org/viewcvs?rev=219995&view=rev
Log:
GERONIMO-782 step 2 use WebServiceBuilder methods from tomcat builder and openejb builder.  Still needs cleanup in openejb builder

Modified:
    geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
    geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java
    geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/UnavailableWebServiceBuilder.java
    geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java
    geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java
    geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
    geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java
    geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java

Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java (original)
+++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisBuilder.java Wed Jul 20 21:28:19 2005
@@ -151,8 +151,25 @@
         }
     }
 
-    public void configureEJB(GBeanData targetGBean, Object portInfoObject, String seiClassName) throws DeploymentException {
-
+    public void configureEJB(GBeanData targetGBean, JarFile moduleFile, Object portInfoObject, ClassLoader classLoader) throws DeploymentException {
+        PortInfo portInfo = (PortInfo) portInfoObject;
+        ServiceInfo serviceInfo = AxisServiceBuilder.createServiceInfo(portInfo, classLoader);
+        targetGBean.setAttribute("serviceInfo", serviceInfo);
+        JavaServiceDesc serviceDesc = serviceInfo.getServiceDesc();
+        URI location = null;
+        try {
+            location = new URI(serviceDesc.getEndpointURL());
+        } catch (URISyntaxException e) {
+            throw new DeploymentException("Invalid webservice endpoint URI", e);
+        }
+        targetGBean.setAttribute("location", location);
+        URI wsdlURI = null;
+        try {
+            wsdlURI = new URI(serviceDesc.getWSDLFile());
+        } catch (URISyntaxException e) {
+            throw new DeploymentException("Invalid wsdl URI", e);
+        }
+        targetGBean.setAttribute("wsdlURI", wsdlURI);
     }
 
 

Modified: geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java (original)
+++ geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/AxisServiceBuilder.java Wed Jul 20 21:28:19 2005
@@ -17,10 +17,8 @@
 package org.apache.geronimo.axis.builder;
 
 import java.lang.reflect.Method;
-import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -29,12 +27,9 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.Collections;
-import java.util.jar.JarFile;
 import javax.wsdl.Binding;
 import javax.wsdl.BindingInput;
 import javax.wsdl.BindingOperation;
-import javax.wsdl.Definition;
 import javax.wsdl.Port;
 import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.wsdl.extensions.soap.SOAPBinding;
@@ -47,27 +42,22 @@
 import org.apache.axis.description.OperationDesc;
 import org.apache.axis.encoding.TypeMapping;
 import org.apache.axis.encoding.TypeMappingRegistryImpl;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.axis.client.TypeInfo;
-import org.apache.geronimo.axis.server.AxisWebServiceContainer;
 import org.apache.geronimo.axis.server.ReadOnlyServiceDesc;
 import org.apache.geronimo.axis.server.ServiceInfo;
 import org.apache.geronimo.common.DeploymentException;
-import org.apache.geronimo.deployment.util.DeploymentUtil;
 import org.apache.geronimo.xbeans.j2ee.JavaXmlTypeMappingType;
 import org.apache.geronimo.xbeans.j2ee.ServiceEndpointMethodMappingType;
 import org.apache.geronimo.xbeans.wsdl.DefinitionsDocument;
 import org.apache.geronimo.xbeans.wsdl.TDefinitions;
 import org.apache.geronimo.xbeans.wsdl.TImport;
-import org.apache.geronimo.xbeans.wsdl.TPort;
-import org.apache.geronimo.xbeans.wsdl.TService;
 import org.apache.geronimo.xbeans.wsdl.TTypes;
 import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
 import org.apache.xmlbeans.impl.xb.xsdschema.ImportDocument;
 import org.apache.xmlbeans.impl.xb.xsdschema.IncludeDocument;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
 
 /**
  * @version $Rev$ $Date$
@@ -79,27 +69,6 @@
     public static final QName SCHEMA_QNAME = new QName(XSD_NS, "schema");
 
 
-    private static void validateLightweightMapping(Definition definition) throws DeploymentException {
-        // TODO Plum in the validator
-    }
-
-
-    public static ServiceInfo createServiceInfo(JarFile jarFile, String ejbName, ClassLoader classLoader) throws DeploymentException {
-        Map portComponentsMap = null;
-        try {
-            URL webservicesURL = DeploymentUtil.createJarURL(jarFile, "META-INF/webservices.xml");
-            //todo make sure ejbs can't be deployed elsewhere
-            portComponentsMap = WSDescriptorParser.parseWebServiceDescriptor(webservicesURL, jarFile, true, Collections.EMPTY_MAP);
-        } catch (MalformedURLException e1) {
-            throw new DeploymentException("Invalid URL to webservices.xml", e1);
-        }
-
-        // Grab the portInfo for this ejb
-        PortInfo portInfo = (PortInfo) portComponentsMap.get(ejbName);
-        return createServiceInfo(portInfo, classLoader);
-    }
-
-
     public static ServiceInfo createServiceInfo(PortInfo portInfo, ClassLoader classLoader) throws DeploymentException {
         JavaServiceDesc serviceDesc = createServiceDesc(portInfo, classLoader);
         List handlerInfos = WSDescriptorParser.createHandlerInfoList(portInfo.getHandlers(), classLoader);
@@ -147,9 +116,9 @@
 
         boolean isLightweight = portInfo.getServiceEndpointInterfaceMapping() == null;
 
-        if (isLightweight) {
-            validateLightweightMapping(portInfo.getDefinition());
-        }
+//        if (isLightweight) {
+//            validateLightweightMapping(portInfo.getDefinition());
+//        }
 
         Collection operations = new ArrayList();
         Set wrapperElementQNames = buildOperations(binding, serviceEndpointInterface, isLightweight, portInfo, exceptionMap, classLoader, operations);

Modified: geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/UnavailableWebServiceBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/UnavailableWebServiceBuilder.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/UnavailableWebServiceBuilder.java (original)
+++ geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/UnavailableWebServiceBuilder.java Wed Jul 20 21:28:19 2005
@@ -40,7 +40,7 @@
         throw new DeploymentException("Web services are not available in this configuration");
     }
 
-    public void configureEJB(GBeanData targetGBean, Object portInfoObject, String seiClassName) throws DeploymentException {
+    public void configureEJB(GBeanData targetGBean, JarFile moduleFile, Object portInfoObject, ClassLoader classLoader) throws DeploymentException {
         throw new DeploymentException("Web services are not available in this configuration");
     }
 

Modified: geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java (original)
+++ geronimo/trunk/modules/j2ee-builder/src/java/org/apache/geronimo/j2ee/deployment/WebServiceBuilder.java Wed Jul 20 21:28:19 2005
@@ -46,8 +46,10 @@
      * configure the supplied EJBContainer gbeandata to implement the ejb web service described in the deployment descriptor
      * N.B. this method is a complete guess and should be replaced by something useable right away!
      * @param targetGBean
+     * @param moduleFile
+     * @param classLoader
      * @throws DeploymentException
      */
-    void configureEJB(GBeanData targetGBean, Object portInfoObject, String seiClassName) throws DeploymentException;
+    void configureEJB(GBeanData targetGBean, JarFile moduleFile, Object portInfo, ClassLoader classLoader) throws DeploymentException;
 
 }

Modified: geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java (original)
+++ geronimo/trunk/modules/j2ee/src/java/org/apache/geronimo/j2ee/j2eeobjectnames/NameFactory.java Wed Jul 20 21:28:19 2005
@@ -101,6 +101,7 @@
     public static final String SERVLET_WEB_SERVICE_TEMPLATE = "ServletWebServiceTemplate";
     public static final String CORBA_CSS = "CORBACSS";
     public static final String CORBA_TSS = "CORBATSS";
+    public static final String WEB_SERVICE_LINK = "WSLink";
 
     public static ObjectName getDomainName(String j2eeDomainName, J2eeContext context) throws MalformedObjectNameException {
         Properties props = new Properties();

Modified: geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/trunk/modules/tomcat-builder/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Wed Jul 20 21:28:19 2005
@@ -36,26 +36,13 @@
 import java.util.Set;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
-
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.security.jacc.WebResourcePermission;
 import javax.security.jacc.WebRoleRefPermission;
 import javax.security.jacc.WebUserDataPermission;
 import javax.transaction.UserTransaction;
-import javax.wsdl.WSDLException;
 
-import org.apache.axis.description.JavaServiceDesc;
-import org.apache.axis.handlers.HandlerInfoChainFactory;
-import org.apache.axis.handlers.soap.SOAPService;
-import org.apache.axis.providers.java.RPCProvider;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.geronimo.axis.builder.AxisServiceBuilder;
-import org.apache.geronimo.axis.builder.PortInfo;
-import org.apache.geronimo.axis.server.AxisWebServiceContainer;
-import org.apache.geronimo.axis.server.POJOProvider;
-import org.apache.geronimo.axis.server.ServiceInfo;
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.service.ServiceConfigBuilder;
 import org.apache.geronimo.deployment.util.DeploymentUtil;
@@ -72,7 +59,6 @@
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
-import org.apache.geronimo.kernel.ClassLoaderReference;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.StoredObject;
 import org.apache.geronimo.kernel.repository.Repository;
@@ -90,11 +76,10 @@
 import org.apache.geronimo.tomcat.ValveGBean;
 import org.apache.geronimo.tomcat.util.SecurityHolder;
 import org.apache.geronimo.transaction.context.OnlineUserTransaction;
-import org.apache.geronimo.webservices.WebServiceContainer;
+import org.apache.geronimo.xbeans.geronimo.web.GerConfigParamType;
+import org.apache.geronimo.xbeans.geronimo.web.GerContainerConfigType;
 import org.apache.geronimo.xbeans.geronimo.web.GerWebAppDocument;
 import org.apache.geronimo.xbeans.geronimo.web.GerWebAppType;
-import org.apache.geronimo.xbeans.geronimo.web.GerContainerConfigType;
-import org.apache.geronimo.xbeans.geronimo.web.GerConfigParamType;
 import org.apache.geronimo.xbeans.geronimo.web.GerWebContainerType;
 import org.apache.geronimo.xbeans.j2ee.FilterMappingType;
 import org.apache.geronimo.xbeans.j2ee.HttpMethodType;
@@ -116,7 +101,6 @@
  * @version $Rev: 161588 $ $Date: 2005-04-16 12:06:59 -0600 (Sat, 16 Apr 2005) $
  */
 public class TomcatModuleBuilder implements ModuleBuilder {
-    private static Log log = LogFactory.getLog(TomcatModuleBuilder.class);
 
     private final URI defaultParentId;
     private final ObjectName tomcatContainerObjectName;
@@ -124,19 +108,15 @@
     private final WebServiceBuilder webServiceBuilder;
 
     private final Repository repository;
-    private final Kernel kernel;
 
     public TomcatModuleBuilder(URI defaultParentId,
                                ObjectName tomcatContainerObjectName,
                                WebServiceBuilder webServiceBuilder,
-                               Repository repository,
-                               Kernel kernel) {
+                               Repository repository) {
         this.defaultParentId = defaultParentId;
         this.tomcatContainerObjectName = tomcatContainerObjectName;
         this.webServiceBuilder = webServiceBuilder;
         this.repository = repository;
-        this.kernel = kernel;
-
     }
 
     public Module createModule(File plan, JarFile moduleFile) throws DeploymentException {
@@ -494,7 +474,7 @@
             if (tomcatWebApp.isSetSecurityRealmName()) {
 
                 SecurityHolder securityHolder = new SecurityHolder();
-                String securityRealmName = tomcatWebApp.getSecurityRealmName().trim();
+//                String securityRealmName = tomcatWebApp.getSecurityRealmName().trim();
 
                 /**
                  * TODO - go back to commented version when possible.
@@ -563,7 +543,7 @@
 
     private void processRoleRefPermissions(ServletType servletType,
                                            Set securityRoles,
-                                           Map rolePermissions) throws MalformedObjectNameException, DeploymentException {
+                                           Map rolePermissions) {
         String servletName = servletType.getServletName().getStringValue().trim();
 
         //WebRoleRefPermissions
@@ -907,44 +887,13 @@
     }
 
     public StoredObject configurePOJO(JarFile moduleFile, Object portInfoObject, String seiClassName, ClassLoader classLoader) throws DeploymentException, IOException {
-
-        PortInfo portInfo = (PortInfo) portInfoObject;
-        ServiceInfo serviceInfo = AxisServiceBuilder.createServiceInfo(portInfo, classLoader);
-        JavaServiceDesc serviceDesc = serviceInfo.getServiceDesc();
-
-        try {
-            classLoader.loadClass(seiClassName);
-        } catch (ClassNotFoundException e) {
-            throw new DeploymentException("Unable to load servlet class for pojo webservice: " + seiClassName, e);
-        }
-
-        RPCProvider provider = new POJOProvider();
-
-        SOAPService service = new SOAPService(null, provider, null);
-        service.setServiceDescription(serviceDesc);
-        service.setOption("className", seiClassName);
-
-        HandlerInfoChainFactory handlerInfoChainFactory = new HandlerInfoChainFactory(serviceInfo.getHandlerInfos());
-        service.setOption(org.apache.axis.Constants.ATTR_HANDLERINFOCHAIN, handlerInfoChainFactory);
-
-        URI location = null;
-        try {
-            location = new URI(serviceDesc.getEndpointURL());
-        } catch (URISyntaxException e) {
-            throw new DeploymentException("Invalid webservice endpoint URI", e);
-        }
-        URI wsdlURI = null;
-        try {
-            wsdlURI = new URI(serviceDesc.getWSDLFile());
-        } catch (URISyntaxException e) {
-            throw new DeploymentException("Invalid wsdl URI", e);
-
-        }
-
-        classLoader = new ClassLoaderReference(classLoader);
-        AxisWebServiceContainer axisWebServiceContainer = new AxisWebServiceContainer(location, wsdlURI, service, serviceInfo.getWsdlMap(), classLoader);
-
-        return new StoredObject(axisWebServiceContainer);
+        //the reason to configure a gbeandata rather than just fetch the WebServiceContainer is that fetching the WSContainer ties us to that
+        //ws implementation.  By configuring a servlet gbean, you can provide a different servlet for each combination of
+        //web container and ws implementation while assuming almost nothing about their relationship.
+
+        GBeanData fakeData = new GBeanData();
+        webServiceBuilder.configurePOJO(fakeData, moduleFile, portInfoObject, seiClassName, classLoader);
+        return (StoredObject) fakeData.getAttribute("webServiceContainer");
     }
 
     class UncheckedItem {
@@ -1012,8 +961,7 @@
             "defaultParentId",
             "tomcatContainerObjectName",
             "WebServiceBuilder",
-            "Repository",
-            "kernel"});
+            "Repository"});
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }
 

Modified: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java (original)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/PlanParsingTest.java Wed Jul 20 21:28:19 2005
@@ -14,7 +14,7 @@
  */
 public class PlanParsingTest extends TestCase {
     ObjectName tomcatContainerObjectName = JMXUtil.getObjectName("test:type=TomcatContainer");
-    private TomcatModuleBuilder builder = new TomcatModuleBuilder(null, tomcatContainerObjectName, null, null, null);
+    private TomcatModuleBuilder builder = new TomcatModuleBuilder(null, tomcatContainerObjectName, null, null);
     private File basedir = new File(System.getProperty("basedir", "."));
 
     public void testResourceRef() throws Exception {

Modified: geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java?rev=219995&r1=219994&r2=219995&view=diff
==============================================================================
--- geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java (original)
+++ geronimo/trunk/modules/tomcat-builder/src/test/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilderTest.java Wed Jul 20 21:28:19 2005
@@ -378,7 +378,7 @@
 
         WebServiceBuilder webServiceBuilder = new AxisBuilder();
 
-        builder = new TomcatModuleBuilder(new URI("null"), containerName, webServiceBuilder, null, kernel);
+        builder = new TomcatModuleBuilder(new URI("null"), containerName, webServiceBuilder, null);
 
         // Default Realm
         Map initParams = new HashMap();