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/22 21:13:50 UTC

svn commit: r224385 - in /geronimo/trunk/modules: assembly/src/plan/ jetty-builder/src/java/org/apache/geronimo/jetty/deployment/ jetty-builder/src/test/org/apache/geronimo/jetty/deployment/

Author: djencks
Date: Fri Jul 22 12:13:40 2005
New Revision: 224385

URL: http://svn.apache.org/viewcvs?rev=224385&view=rev
Log:
GERONIMO-790. Use references instead of object names in jettyModuleBuilder.  Partial solution, all that is possible right now

Modified:
    geronimo/trunk/modules/assembly/src/plan/jetty-deployer-config.xml
    geronimo/trunk/modules/assembly/src/plan/jetty-runtime-deployer-config.xml
    geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
    geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
    geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java

Modified: geronimo/trunk/modules/assembly/src/plan/jetty-deployer-config.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/jetty-deployer-config.xml?rev=224385&r1=224384&r2=224385&view=diff
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/jetty-deployer-config.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/jetty-deployer-config.xml Fri Jul 22 12:13:40 2005
@@ -35,7 +35,7 @@
     <attribute name="defaultWelcomeFiles">index.html,index.htm,index.jsp</attribute>
     <attribute name="jettyContainerObjectName">geronimo.server:name=WebContainer,*</attribute>
     <attribute name="defaultServlets">geronimo.deployer:j2eeType=DefaultServlet,J2EEModule=org/apache/geronimo/J2EEDeployer,*</attribute>
-    <attribute name="pojoWebServiceTemplate">geronimo.deployer:J2EEApplication=null,J2EEModule=org/apache/geronimo/RuntimeDeployer,J2EEServer=deployer,j2eeType=ServletWebServiceTemplate,name=POJOTemplate</attribute>
+    <reference name="PojoWebServiceTemplate"><gbean-name>geronimo.deployer:J2EEApplication=null,J2EEModule=org/apache/geronimo/J2EEDeployer,J2EEServer=deployer,j2eeType=ServletWebServiceTemplate,name=POJOTemplate</gbean-name></reference>
     <reference name="WebServiceBuilder">
         <name>WebServiceBuilder</name>
     </reference>

Modified: geronimo/trunk/modules/assembly/src/plan/jetty-runtime-deployer-config.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/plan/jetty-runtime-deployer-config.xml?rev=224385&r1=224384&r2=224385&view=diff
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/jetty-runtime-deployer-config.xml (original)
+++ geronimo/trunk/modules/assembly/src/plan/jetty-runtime-deployer-config.xml Fri Jul 22 12:13:40 2005
@@ -30,7 +30,7 @@
     <attribute name="defaultWelcomeFiles">index.html,index.htm,index.jsp</attribute>
     <attribute name="jettyContainerObjectName">geronimo.server:name=WebContainer,*</attribute>
     <attribute name="defaultServlets">geronimo.server:j2eeType=DefaultServlet,J2EEModule=org/apache/geronimo/RuntimeDeployer,*</attribute>
-    <attribute name="pojoWebServiceTemplate">geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/RuntimeDeployer,J2EEServer=geronimo,j2eeType=ServletWebServiceTemplate,name=POJOTemplate</attribute>
+    <reference name="PojoWebServiceTemplate"><gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=org/apache/geronimo/RuntimeDeployer,J2EEServer=geronimo,j2eeType=ServletWebServiceTemplate,name=POJOTemplate</gbean-name></reference>
     <reference name="WebServiceBuilder"><name>WebServiceBuilder</name></reference>
     <reference name="Repository"><gbean-name>*:name=Repository,*</gbean-name></reference>
 </gbean>

Modified: geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java?rev=224385&r1=224384&r2=224385&view=diff
==============================================================================
--- geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java (original)
+++ geronimo/trunk/modules/jetty-builder/src/java/org/apache/geronimo/jetty/deployment/JettyModuleBuilder.java Fri Jul 22 12:13:40 2005
@@ -19,8 +19,8 @@
 
 import java.io.File;
 import java.io.FileFilter;
-import java.io.IOException;
 import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -50,6 +50,8 @@
 import javax.servlet.Servlet;
 import javax.transaction.UserTransaction;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.service.ServiceConfigBuilder;
 import org.apache.geronimo.deployment.util.DeploymentUtil;
@@ -61,8 +63,8 @@
 import org.apache.geronimo.j2ee.deployment.EARContext;
 import org.apache.geronimo.j2ee.deployment.Module;
 import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
-import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
 import org.apache.geronimo.j2ee.deployment.WebModule;
+import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
 import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
@@ -83,8 +85,8 @@
 import org.apache.geronimo.security.jacc.ComponentPermissions;
 import org.apache.geronimo.security.util.URLPattern;
 import org.apache.geronimo.transaction.context.OnlineUserTransaction;
-import org.apache.geronimo.xbeans.geronimo.web.GerWebAppType;
 import org.apache.geronimo.xbeans.geronimo.web.GerWebAppDocument;
+import org.apache.geronimo.xbeans.geronimo.web.GerWebAppType;
 import org.apache.geronimo.xbeans.j2ee.DispatcherType;
 import org.apache.geronimo.xbeans.j2ee.ErrorPageType;
 import org.apache.geronimo.xbeans.j2ee.FilterMappingType;
@@ -112,8 +114,6 @@
 import org.apache.geronimo.xbeans.j2ee.WelcomeFileListType;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.mortbay.http.BasicAuthenticator;
 import org.mortbay.http.ClientCertAuthenticator;
 import org.mortbay.http.DigestAuthenticator;
@@ -130,7 +130,7 @@
     private final ObjectName defaultServlets;
     private final ObjectName defaultFilters;
     private final ObjectName defaultFilterMappings;
-    private final ObjectName pojoWebServiceTemplate;
+    private final GBeanData pojoWebServiceTemplate;
 
     private final WebServiceBuilder webServiceBuilder;
 
@@ -147,17 +147,17 @@
                               ObjectName defaultServlets,
                               ObjectName defaultFilters,
                               ObjectName defaultFilterMappings,
-                              ObjectName pojoWebServiceTemplate,
+                              Object pojoWebServiceTemplate,
                               WebServiceBuilder webServiceBuilder,
                               Repository repository,
-                              Kernel kernel) {
+                              Kernel kernel) throws GBeanNotFoundException {
         this.defaultParentId = defaultParentId;
         this.defaultSessionTimeoutSeconds = (defaultSessionTimeoutSeconds == null) ? new Integer(30 * 60) : defaultSessionTimeoutSeconds;
         this.jettyContainerObjectName = jettyContainerObjectName;
         this.defaultServlets = defaultServlets;
         this.defaultFilters = defaultFilters;
         this.defaultFilterMappings = defaultFilterMappings;
-        this.pojoWebServiceTemplate = pojoWebServiceTemplate;
+        this.pojoWebServiceTemplate = getServletData(kernel, pojoWebServiceTemplate);
         this.webServiceBuilder = webServiceBuilder;
         this.repository = repository;
         this.kernel = kernel;
@@ -167,6 +167,15 @@
         this.defaultWelcomeFiles = defaultWelcomeFiles;
     }
 
+    private static GBeanData getServletData(Kernel kernel, Object template) throws GBeanNotFoundException {
+        if (template == null) {
+            return null;
+        }
+        ObjectName templateName = kernel.getProxyManager().getProxyTarget(template);
+        GBeanData templateData = kernel.getGBeanData(templateName);
+        return templateData;
+    }
+
     public Module createModule(File plan, JarFile moduleFile) throws DeploymentException {
         return createModule(plan, moduleFile, "war", null, true, null);
     }
@@ -250,6 +259,7 @@
     /**
      * Some servlets will have multiple url patterns.  However, webservice servlets
      * will only have one, which is what this method is intended for.
+     *
      * @param webApp
      * @param contextRoot
      * @return
@@ -286,7 +296,7 @@
                         } catch (FileNotFoundException e) {
                             path = DeploymentUtil.createJarURL(moduleFile, "WEB-INF/geronimo-jetty.xml");
                             XmlObject object = SchemaConversionUtils.parse(path);
-                            if(object != null) {
+                            if (object != null) {
                                 log.error("Incorrect deployment plan naming: found geronimo-jetty.xml, should be geronimo-web.xml");
                                 jettyWebAppdoc = TemporaryPlanAdapter.convertJettyDocumentToWeb(object);
                             }
@@ -805,28 +815,28 @@
     /**
      * Adds the provided servlets, taking into account the load-on-startup ordering.
      *
-     * @param webModuleName an <code>ObjectName</code> value
-     * @param moduleFile a <code>JarFile</code> value
-     * @param servletTypes a <code>ServletType[]</code> value, contains the <code>servlet</code> entries from <code>web.xml</code>.
-     * @param servletMappings a <code>Map</code> value
-     * @param securityRoles a <code>Set</code> value
-     * @param rolePermissions a <code>Map</code> value
-     * @param portMap a <code>Map</code> value
-     * @param webClassLoader a <code>ClassLoader</code> value
+     * @param webModuleName     an <code>ObjectName</code> value
+     * @param moduleFile        a <code>JarFile</code> value
+     * @param servletTypes      a <code>ServletType[]</code> value, contains the <code>servlet</code> entries from <code>web.xml</code>.
+     * @param servletMappings   a <code>Map</code> value
+     * @param securityRoles     a <code>Set</code> value
+     * @param rolePermissions   a <code>Map</code> value
+     * @param portMap           a <code>Map</code> value
+     * @param webClassLoader    a <code>ClassLoader</code> value
      * @param moduleJ2eeContext a <code>J2eeContext</code> value
-     * @param earContext an <code>EARContext</code> value
-     * @exception MalformedObjectNameException if an error occurs
-     * @exception DeploymentException if an error occurs
+     * @param earContext        an <code>EARContext</code> value
+     * @throws MalformedObjectNameException if an error occurs
+     * @throws DeploymentException          if an error occurs
      */
     private void addServlets(ObjectName webModuleName,
-                            JarFile moduleFile,
-                            ServletType[] servletTypes,
-                            Map servletMappings,
-                            Set securityRoles,
-                            Map rolePermissions, Map portMap,
-                            ClassLoader webClassLoader,
-                            J2eeContext moduleJ2eeContext,
-                            EARContext earContext) throws MalformedObjectNameException, DeploymentException {
+                             JarFile moduleFile,
+                             ServletType[] servletTypes,
+                             Map servletMappings,
+                             Set securityRoles,
+                             Map rolePermissions, Map portMap,
+                             ClassLoader webClassLoader,
+                             J2eeContext moduleJ2eeContext,
+                             EARContext earContext) throws MalformedObjectNameException, DeploymentException {
 
         // this TreeSet will order the ServletTypes based on whether
         // they have a load-on-startup element and what its value is
@@ -847,8 +857,8 @@
         // of how to do this.
         // http://issues.apache.org/jira/browse/GERONIMO-645
         ServletType previousServlet = null;
-        for (Iterator servlets = loadOrder.iterator(); servlets.hasNext(); ) {
-            ServletType servletType = (ServletType)servlets.next();
+        for (Iterator servlets = loadOrder.iterator(); servlets.hasNext();) {
+            ServletType servletType = (ServletType) servlets.next();
             addServlet(webModuleName, moduleFile, previousServlet, servletType, servletMappings, securityRoles, rolePermissions, portMap, webClassLoader, moduleJ2eeContext, earContext);
             previousServlet = servletType;
         }
@@ -886,11 +896,7 @@
                 servletData = new GBeanData(servletObjectName, JettyServletHolder.GBEAN_INFO);
                 servletData.setAttribute("servletClass", servletClassName);
             } else {
-                try {
-                    servletData = kernel.getGBeanData(pojoWebServiceTemplate);
-                } catch (GBeanNotFoundException e) {
-                    throw new DeploymentException("No POJO web service template gbean found at object name: " + pojoWebServiceTemplate, e);
-                }
+                servletData = new GBeanData(pojoWebServiceTemplate);
                 servletData.setName(servletObjectName);
                 //let the web service builder deal with configuring the gbean with the web service stack
                 Object portInfo = portMap.get(servletName);
@@ -1327,7 +1333,7 @@
         infoBuilder.addAttribute("defaultServlets", ObjectName.class, true);
         infoBuilder.addAttribute("defaultFilters", ObjectName.class, true);
         infoBuilder.addAttribute("defaultFilterMappings", ObjectName.class, true);
-        infoBuilder.addAttribute("pojoWebServiceTemplate", ObjectName.class, true);
+        infoBuilder.addReference("PojoWebServiceTemplate", Object.class);
         infoBuilder.addReference("WebServiceBuilder", WebServiceBuilder.class, NameFactory.MODULE_BUILDER);
         infoBuilder.addReference("Repository", Repository.class, NameFactory.GERONIMO_SERVICE);
         infoBuilder.addAttribute("kernel", Kernel.class, false);
@@ -1341,7 +1347,7 @@
             "defaultServlets",
             "defaultFilters",
             "defaultFilterMappings",
-            "pojoWebServiceTemplate",
+            "PojoWebServiceTemplate",
             "WebServiceBuilder",
             "Repository",
             "kernel"});
@@ -1358,14 +1364,14 @@
          * ordering of servlet name.  Since the servlet names have a uniqueness constraint, this should
          * provide a total ordering consistent with equals.  All servlets with no startup order are after
          * all servlets with a startup order.
-         * 
-         * @param o1  first ServletType object
-         * @param o2  second ServletType object
+         *
+         * @param o1 first ServletType object
+         * @param o2 second ServletType object
          * @return an int < 0 if o1 precedes o2, 0 if they are equal, and > 0 if o2 preceeds o1.
          */
         public int compare(Object o1, Object o2) {
-            ServletType s1 = (ServletType)o1;
-            ServletType s2 = (ServletType)o2;
+            ServletType s1 = (ServletType) o1;
+            ServletType s2 = (ServletType) o2;
 
             // load-on-startup is set for neither.  the
             // ordering at this point doesn't matter, but we

Modified: geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java?rev=224385&r1=224384&r2=224385&view=diff
==============================================================================
--- geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java (original)
+++ geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/JettyModuleBuilderTest.java Fri Jul 22 12:13:40 2005
@@ -28,6 +28,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.Collection;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 import javax.naming.Reference;
@@ -249,7 +250,7 @@
         kernel.startGBean(baseConfigName);
 
         ObjectName defaultServlets = ObjectName.getInstance("test:name=test,type=none,*");
-        ObjectName pojoWebServiceTemplate = null;
+        Object pojoWebServiceTemplate = null;
         WebServiceBuilder webServiceBuilder = new UnavailableWebServiceBuilder();
 
         serverInfoName = new ObjectName("geronimo.system:name=ServerInfo");

Modified: geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java?rev=224385&r1=224384&r2=224385&view=diff
==============================================================================
--- geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java (original)
+++ geronimo/trunk/modules/jetty-builder/src/test/org/apache/geronimo/jetty/deployment/PlanParsingTest.java Fri Jul 22 12:13:40 2005
@@ -2,6 +2,7 @@
 
 import java.io.File;
 import java.util.jar.JarFile;
+import java.util.Collections;
 import javax.management.ObjectName;
 
 import junit.framework.TestCase;
@@ -19,8 +20,12 @@
     ObjectName jettyContainerObjectName = JMXUtil.getObjectName("test:type=JettyContainer");
     ObjectName pojoWebServiceTemplate = null;
     WebServiceBuilder webServiceBuilder = null;
-    private JettyModuleBuilder builder = new JettyModuleBuilder(null, new Integer(1800), null, jettyContainerObjectName, null, null, null, pojoWebServiceTemplate, webServiceBuilder, null, null);
+    private JettyModuleBuilder builder;
     private File basedir = new File(System.getProperty("basedir", "."));
+
+    public PlanParsingTest() throws Exception {
+        builder = new JettyModuleBuilder(null, new Integer(1800), null, jettyContainerObjectName, null, null, null, pojoWebServiceTemplate, webServiceBuilder, null, null);
+    }
 
     public void testContents() throws Exception {
         File resourcePlan = new File(basedir, "src/test-resources/plans/plan1.xml");