Return-Path: Delivered-To: apmail-incubator-geronimo-cvs-archive@www.apache.org Received: (qmail 55187 invoked from network); 9 Feb 2004 00:01:39 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 9 Feb 2004 00:01:39 -0000 Received: (qmail 68365 invoked by uid 500); 9 Feb 2004 00:01:06 -0000 Delivered-To: apmail-incubator-geronimo-cvs-archive@incubator.apache.org Received: (qmail 68334 invoked by uid 500); 9 Feb 2004 00:01:06 -0000 Mailing-List: contact geronimo-cvs-help@incubator.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: list-post: Reply-To: geronimo-dev@incubator.apache.org Delivered-To: mailing list geronimo-cvs@incubator.apache.org Received: (qmail 68298 invoked from network); 9 Feb 2004 00:01:06 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 9 Feb 2004 00:01:06 -0000 Received: (qmail 55080 invoked by uid 1716); 9 Feb 2004 00:01:20 -0000 Date: 9 Feb 2004 00:01:20 -0000 Message-ID: <20040209000120.55079.qmail@minotaur.apache.org> From: jboynes@apache.org To: incubator-geronimo-cvs@apache.org Subject: cvs commit: incubator-geronimo/modules/jetty/src/test/org/apache/geronimo/jetty/deployment DeployerTestCase.java WARConfigurationFactoryTest.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N jboynes 2004/02/08 16:01:20 Modified: modules/connector/src/java/org/apache/geronimo/connector/deployment AbstractRARConfigurationFactory.java RARConfigurationFactory.java modules/deployment/src/java/org/apache/geronimo/deployment/plugin DeploymentManagerImpl.java modules/deployment/src/java/org/apache/geronimo/deployment/plugin/application EARConfigurationFactory.java modules/deployment/src/java/org/apache/geronimo/deployment/plugin/client ClientConfigurationFactory.java modules/deployment/src/java/org/apache/geronimo/deployment/plugin/factories DeploymentConfigurationFactory.java DeploymentFactoryImpl.java modules/jetty/src/java/org/apache/geronimo/jetty/deployment WARConfigurationFactory.java modules/jetty/src/test/org/apache/geronimo/jetty/deployment DeployerTestCase.java WARConfigurationFactoryTest.java Added: modules/connector/src/java/org/apache/geronimo/connector/deployment RARConfigurer.java modules/deployment/src/java/org/apache/geronimo/deployment ModuleConfigurer.java modules/deployment/src/java/org/apache/geronimo/deployment/plugin/application EARConfigurer.java modules/jetty/src/java/org/apache/geronimo/jetty/deployment WARConfigurer.java Log: Split createConfiguration out from DeploymentConfigurationFactory into its own interface This is because the configure and distribute sides of JSR88 don't overlap much Revision Changes Path 1.3 +1 -8 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/AbstractRARConfigurationFactory.java Index: AbstractRARConfigurationFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/AbstractRARConfigurationFactory.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractRARConfigurationFactory.java 6 Feb 2004 08:56:42 -0000 1.2 +++ AbstractRARConfigurationFactory.java 9 Feb 2004 00:01:19 -0000 1.3 @@ -95,13 +95,6 @@ return connectionTrackerNamePattern; } - public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException { - if (!ModuleType.RAR.equals(deployable.getType())) { - throw new InvalidModuleException("DeployableObject must be a RAR"); - } - return new RARConfiguration(deployable); - } - public abstract DeploymentModule createModule(InputStream moduleArchive, XmlObject geronimoDD, URI configID, boolean isLocal) throws DeploymentException; public SchemaTypeLoader getSchemaTypeLoader() { 1.4 +1 -8 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/RARConfigurationFactory.java Index: RARConfigurationFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/RARConfigurationFactory.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- RARConfigurationFactory.java 8 Feb 2004 20:21:57 -0000 1.3 +++ RARConfigurationFactory.java 9 Feb 2004 00:01:19 -0000 1.4 @@ -98,13 +98,6 @@ return connectionTrackerNamePattern; } - public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException { - if (!ModuleType.RAR.equals(deployable.getType())) { - throw new InvalidModuleException("DeployableObject must be a RAR"); - } - return new RARConfiguration(deployable); - } - public DeploymentModule createModule(InputStream moduleArchive, XmlObject geronimoDD, URI configID, boolean isLocal) throws DeploymentException { GerConnectorDocument geronimoConnectorDocument = (GerConnectorDocument) geronimoDD; GerVersionType.Enum version = geronimoConnectorDocument.getConnector().getVersion(); 1.1 incubator-geronimo/modules/connector/src/java/org/apache/geronimo/connector/deployment/RARConfigurer.java Index: RARConfigurer.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . * * ==================================================================== */ package org.apache.geronimo.connector.deployment; import javax.enterprise.deploy.model.DeployableObject; import javax.enterprise.deploy.shared.ModuleType; import javax.enterprise.deploy.spi.DeploymentConfiguration; import org.apache.geronimo.deployment.ModuleConfigurer; import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoFactory; /** * * * @version $Revision: 1.1 $ $Date: 2004/02/09 00:01:19 $ */ public class RARConfigurer implements ModuleConfigurer { public DeploymentConfiguration createConfiguration(DeployableObject deployable) { if (ModuleType.RAR.equals(deployable.getType())) { return new RARConfiguration(deployable); } else { return null; } } public static final GBeanInfo GBEAN_INFO; static { GBeanInfoFactory infoFactory = new GBeanInfoFactory(RARConfigurer.class); infoFactory.addInterface(ModuleConfigurer.class); GBEAN_INFO = infoFactory.getBeanInfo(); } public static GBeanInfo getGBeanInfo() { return GBEAN_INFO; } } 1.1 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/ModuleConfigurer.java Index: ModuleConfigurer.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . * * ==================================================================== */ package org.apache.geronimo.deployment; import javax.enterprise.deploy.spi.DeploymentConfiguration; import javax.enterprise.deploy.model.DeployableObject; /** * Interface to be implemented by the deployment subsystem for any type * of component (e.g. EAR, WAR, ...) that needs configuration. * * @version $Revision: 1.1 $ $Date: 2004/02/09 00:01:19 $ */ public interface ModuleConfigurer { /** * JSR88 method for getting the vendor part of the deployment configuration * @param deployable the object the tool is trying to deploy * @return the vendor-specific deployment configuration, or null a configurer cannot handle the DeployableObject */ DeploymentConfiguration createConfiguration(DeployableObject deployable); } 1.9 +16 -8 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/DeploymentManagerImpl.java Index: DeploymentManagerImpl.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/DeploymentManagerImpl.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- DeploymentManagerImpl.java 6 Feb 2004 08:55:04 -0000 1.8 +++ DeploymentManagerImpl.java 9 Feb 2004 00:01:19 -0000 1.9 @@ -67,6 +67,7 @@ import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; +import java.util.Collection; import javax.enterprise.deploy.model.DeployableObject; import javax.enterprise.deploy.shared.CommandType; @@ -83,6 +84,7 @@ import org.apache.geronimo.deployment.DeploymentException; import org.apache.geronimo.deployment.DeploymentModule; +import org.apache.geronimo.deployment.ModuleConfigurer; import org.apache.geronimo.deployment.plugin.factories.DeploymentConfigurationFactory; import org.apache.geronimo.gbean.GBean; import org.apache.geronimo.gbean.GBeanContext; @@ -110,9 +112,11 @@ private final SchemaTypeLoader thisTypeLoader = XmlBeans.getContextTypeLoader(); private SchemaTypeLoader schemaTypeLoader = thisTypeLoader; private final Map configurationFactories; + private final Collection configurers; public DeploymentManagerImpl( DeploymentServer server, + Collection configurers, DeploymentConfigurationFactory earFactory, DeploymentConfigurationFactory warFactory, DeploymentConfigurationFactory ejbFactory, @@ -120,6 +124,7 @@ DeploymentConfigurationFactory carFactory ) { this.server = server; + this.configurers = configurers; //make sure context loader is always present //todo think if null is a plausible key here. schemaTypeToLoaderMap.put(null, thisTypeLoader); @@ -155,12 +160,14 @@ } public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException { - ModuleType type = deployable.getType(); - DeploymentConfigurationFactory factory = (DeploymentConfigurationFactory) configurationFactories.get(type); - if (factory == null) { - throw new InvalidModuleException("Unable to load DeploymentConfigurationFactory"); + for (Iterator i = configurers.iterator(); i.hasNext();) { + ModuleConfigurer configurer = (ModuleConfigurer) i.next(); + DeploymentConfiguration config = configurer.createConfiguration(deployable); + if (config != null) { + return config; + } } - return factory.createConfiguration(deployable); + throw new InvalidModuleException("Unable to load DeploymentConfigurationFactory"); } public DConfigBeanVersionType getDConfigBeanVersion() { @@ -355,14 +362,15 @@ infoFactory.addOperation(new GOperationInfo("addDeploymentConfigurationFactory", new String[]{SchemaType.class.getName(), SchemaTypeLoader.class.getName(), DeploymentConfigurationFactory.class.getName()})); infoFactory.addOperation(new GOperationInfo("removeDeploymentConfigurationFactory", new String[]{SchemaType.class.getName()})); infoFactory.addReference(new GReferenceInfo("Server", DeploymentServer.class.getName())); + infoFactory.addReference(new GReferenceInfo("Configurers", ModuleConfigurer.class)); infoFactory.addReference(new GReferenceInfo("EARFactory", DeploymentConfigurationFactory.class.getName())); infoFactory.addReference(new GReferenceInfo("WARFactory", DeploymentConfigurationFactory.class.getName())); infoFactory.addReference(new GReferenceInfo("EJBFactory", DeploymentConfigurationFactory.class.getName())); infoFactory.addReference(new GReferenceInfo("RARFactory", DeploymentConfigurationFactory.class.getName())); infoFactory.addReference(new GReferenceInfo("CARFactory", DeploymentConfigurationFactory.class.getName())); infoFactory.setConstructor(new GConstructorInfo( - Arrays.asList(new Object[]{"Server", "EARFactory", "WARFactory", "EJBFactory", "RARFactory", "CARFactory"}), - Arrays.asList(new Object[]{DeploymentServer.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class}) + Arrays.asList(new Object[]{"Server", "Configurers", "EARFactory", "WARFactory", "EJBFactory", "RARFactory", "CARFactory"}), + Arrays.asList(new Object[]{DeploymentServer.class, Collection.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class, DeploymentConfigurationFactory.class}) )); GBEAN_INFO = infoFactory.getBeanInfo(); } 1.6 +1 -7 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/application/EARConfigurationFactory.java Index: EARConfigurationFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/application/EARConfigurationFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- EARConfigurationFactory.java 6 Feb 2004 08:55:04 -0000 1.5 +++ EARConfigurationFactory.java 9 Feb 2004 00:01:19 -0000 1.6 @@ -83,12 +83,6 @@ public class EARConfigurationFactory implements DeploymentConfigurationFactory { private static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.getContextTypeLoader(); - public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException { - if (!ModuleType.EAR.equals(deployable.getType())) { - throw new InvalidModuleException("DeployableObject must be an EAR"); - } - return new EARConfiguration(deployable); - } public DeploymentModule createModule(InputStream moduleArchive, XmlObject deploymentPlan, URI configID, boolean isLocal) throws DeploymentException { return null; 1.1 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/application/EARConfigurer.java Index: EARConfigurer.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . * * ==================================================================== */ package org.apache.geronimo.deployment.plugin.application; import javax.enterprise.deploy.model.DeployableObject; import javax.enterprise.deploy.shared.ModuleType; import javax.enterprise.deploy.spi.DeploymentConfiguration; import org.apache.geronimo.deployment.ModuleConfigurer; import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoFactory; /** * * * @version $Revision: 1.1 $ $Date: 2004/02/09 00:01:19 $ */ public class EARConfigurer implements ModuleConfigurer { public DeploymentConfiguration createConfiguration(DeployableObject deployable) { if (ModuleType.EAR.equals(deployable.getType())) { return new EARConfiguration(deployable); } else { return null; } } public static final GBeanInfo GBEAN_INFO; static { GBeanInfoFactory infoFactory = new GBeanInfoFactory(EARConfigurer.class); infoFactory.addInterface(ModuleConfigurer.class); GBEAN_INFO = infoFactory.getBeanInfo(); } public static GBeanInfo getGBeanInfo() { return GBEAN_INFO; } } 1.6 +1 -4 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/client/ClientConfigurationFactory.java Index: ClientConfigurationFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/client/ClientConfigurationFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ClientConfigurationFactory.java 6 Feb 2004 08:55:04 -0000 1.5 +++ ClientConfigurationFactory.java 9 Feb 2004 00:01:19 -0000 1.6 @@ -78,9 +78,6 @@ */ public class ClientConfigurationFactory implements DeploymentConfigurationFactory { private static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.getContextTypeLoader(); - public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException { - return null; - } public DeploymentModule createModule(InputStream moduleArchive, XmlObject deploymentPlan, URI configID, boolean isLocal) throws DeploymentException { return null; 1.6 +1 -2 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/factories/DeploymentConfigurationFactory.java Index: DeploymentConfigurationFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/factories/DeploymentConfigurationFactory.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DeploymentConfigurationFactory.java 6 Feb 2004 08:55:04 -0000 1.5 +++ DeploymentConfigurationFactory.java 9 Feb 2004 00:01:19 -0000 1.6 @@ -74,7 +74,6 @@ * @version $Revision$ $Date$ */ public interface DeploymentConfigurationFactory { - public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException; public DeploymentModule createModule(InputStream moduleArchive, XmlObject deploymentPlan, URI configID, boolean isLocal) throws DeploymentException; 1.6 +12 -5 incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/factories/DeploymentFactoryImpl.java Index: DeploymentFactoryImpl.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/deployment/src/java/org/apache/geronimo/deployment/plugin/factories/DeploymentFactoryImpl.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DeploymentFactoryImpl.java 4 Feb 2004 05:43:31 -0000 1.5 +++ DeploymentFactoryImpl.java 9 Feb 2004 00:01:19 -0000 1.6 @@ -65,6 +65,7 @@ import org.apache.geronimo.deployment.plugin.DisconnectedServer; import org.apache.geronimo.deployment.plugin.local.LocalServer; import org.apache.geronimo.deployment.plugin.application.EARConfigurationFactory; +import org.apache.geronimo.deployment.plugin.application.EARConfigurer; import org.apache.geronimo.gbean.InvalidConfigurationException; import org.apache.geronimo.gbean.jmx.GBeanMBean; import org.apache.geronimo.kernel.Kernel; @@ -136,9 +137,10 @@ ObjectName managerName = new ObjectName("geronimo.deployment:role=DeploymentManager"); manager = new GBeanMBean(DeploymentManagerImpl.GBEAN_INFO); manager.setReferencePatterns("Server", Collections.singleton(serverName)); + manager.setReferencePatterns("Configurers", Collections.singleton(new ObjectName("geronimo.deployment:role=Configurer,*"))); // @todo for now lets hard code the deployers to use - ultimately this should use a predefined Configuration - loadFactory(kernel, manager, "EARFactory", EARConfigurationFactory.class.getName()); + loadFactory(kernel, manager, "EAR", EARConfigurationFactory.class.getName(), EARConfigurer.class.getName()); kernel.loadGBean(managerName, manager); kernel.startGBean(managerName); @@ -150,11 +152,16 @@ return (DeploymentManager) manager.getTarget(); } - private void loadFactory(Kernel kernel, GBeanMBean manager, String factory, String className) throws Exception { - ObjectName earFactoryName = new ObjectName("geronimo.deployment:role="+factory); + private void loadFactory(Kernel kernel, GBeanMBean manager, String factory, String className, String configurerClassName) throws Exception { + ObjectName earFactoryName = new ObjectName("geronimo.deployment:role=Factory,type="+factory); GBeanMBean earFactory = new GBeanMBean(className); kernel.loadGBean(earFactoryName, earFactory); kernel.startGBean(earFactoryName); - manager.setReferencePatterns(factory, Collections.singleton(earFactoryName)); + manager.setReferencePatterns(factory+"Factory", Collections.singleton(earFactoryName)); + + ObjectName configurerName = new ObjectName("geronimo.deployment:role=Configurer,type="+factory); + GBeanMBean configurer = new GBeanMBean(configurerClassName); + kernel.loadGBean(configurerName, configurer); + kernel.startGBean(configurerName); } } 1.7 +1 -8 incubator-geronimo/modules/jetty/src/java/org/apache/geronimo/jetty/deployment/WARConfigurationFactory.java Index: WARConfigurationFactory.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/jetty/src/java/org/apache/geronimo/jetty/deployment/WARConfigurationFactory.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- WARConfigurationFactory.java 8 Feb 2004 20:19:21 -0000 1.6 +++ WARConfigurationFactory.java 9 Feb 2004 00:01:20 -0000 1.7 @@ -82,13 +82,6 @@ public class WARConfigurationFactory implements DeploymentConfigurationFactory { private static final SchemaTypeLoader SCHEMA_TYPE_LOADER = XmlBeans.getContextTypeLoader(); - public DeploymentConfiguration createConfiguration(DeployableObject deployable) throws InvalidModuleException { - if (!ModuleType.WAR.equals(deployable.getType())) { - throw new InvalidModuleException("DeployableObject must be a WAR"); - } - return new WARConfiguration(deployable); - } - //TODO a createModule method taking a file/directory for unpacked jsp handling. //Should create a UnpackedModule if supplied file is a directory. public DeploymentModule createModule(InputStream moduleArchive, XmlObject deploymentPlan, URI configID, boolean isLocal) throws DeploymentException { 1.1 incubator-geronimo/modules/jetty/src/java/org/apache/geronimo/jetty/deployment/WARConfigurer.java Index: WARConfigurer.java =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" and * "Apache Geronimo" must not be used to endorse or promote products * derived from this software without prior written permission. For * written permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * "Apache Geronimo", nor may "Apache" appear in their name, without * prior written permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . * * ==================================================================== */ package org.apache.geronimo.jetty.deployment; import javax.enterprise.deploy.model.DeployableObject; import javax.enterprise.deploy.shared.ModuleType; import javax.enterprise.deploy.spi.DeploymentConfiguration; import org.apache.geronimo.deployment.ModuleConfigurer; import org.apache.geronimo.gbean.GBeanInfo; import org.apache.geronimo.gbean.GBeanInfoFactory; /** * * * @version $Revision: 1.1 $ $Date: 2004/02/09 00:01:20 $ */ public class WARConfigurer implements ModuleConfigurer { public DeploymentConfiguration createConfiguration(DeployableObject deployable) { if (ModuleType.WAR.equals(deployable.getType())) { return new WARConfiguration(deployable); } else { return null; } } public static final GBeanInfo GBEAN_INFO; static { GBeanInfoFactory infoFactory = new GBeanInfoFactory(WARConfigurer.class); infoFactory.addInterface(ModuleConfigurer.class); GBEAN_INFO = infoFactory.getBeanInfo(); } public static GBeanInfo getGBeanInfo() { return GBEAN_INFO; } } 1.5 +8 -2 incubator-geronimo/modules/jetty/src/test/org/apache/geronimo/jetty/deployment/DeployerTestCase.java Index: DeployerTestCase.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/jetty/src/test/org/apache/geronimo/jetty/deployment/DeployerTestCase.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- DeployerTestCase.java 4 Feb 2004 05:45:11 -0000 1.4 +++ DeployerTestCase.java 9 Feb 2004 00:01:20 -0000 1.5 @@ -99,13 +99,19 @@ serverName = new ObjectName("geronimo.deployment:role=Server"); - warName = new ObjectName("geronimo.deployment:role=WARFactory"); + warName = new ObjectName("geronimo.deployment:role=Factory,type=WAR"); GBeanMBean warFactoryGBean = new GBeanMBean(WARConfigurationFactory.GBEAN_INFO); + ObjectName warConfigurerName = new ObjectName("geronimo.deployment:role=Configurer,type=WAR"); + GBeanMBean warConfigurer = new GBeanMBean(WARConfigurer.GBEAN_INFO); + kernel.loadGBean(warConfigurerName, warConfigurer); + kernel.startGBean(warConfigurerName); + managerName = new ObjectName("geronimo.deployment:role=DeploymentManager"); managerGBean = new GBeanMBean(DeploymentManagerImpl.GBEAN_INFO); managerGBean.setReferencePatterns("WARFactory", Collections.singleton(warName)); managerGBean.setReferencePatterns("Server", Collections.singleton(serverName)); + managerGBean.setReferencePatterns("Configurers", Collections.singleton(new ObjectName("geronimo.deployment:role=Configurer,*"))); kernel.loadGBean(warName, warFactoryGBean); kernel.startGBean(warName); 1.8 +5 -11 incubator-geronimo/modules/jetty/src/test/org/apache/geronimo/jetty/deployment/WARConfigurationFactoryTest.java Index: WARConfigurationFactoryTest.java =================================================================== RCS file: /home/cvs/incubator-geronimo/modules/jetty/src/test/org/apache/geronimo/jetty/deployment/WARConfigurationFactoryTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- WARConfigurationFactoryTest.java 6 Feb 2004 08:55:49 -0000 1.7 +++ WARConfigurationFactoryTest.java 9 Feb 2004 00:01:20 -0000 1.8 @@ -75,15 +75,9 @@ */ public class WARConfigurationFactoryTest extends DeployerTestCase { - public void testFactory() throws Exception { - WebDeployable deployable = new WebDeployable(classLoader.getResource("deployables/war1/")); - DeploymentConfiguration config = manager.createConfiguration(deployable); - assertEquals(deployable, config.getDeployableObject()); - } - public void testConfig() throws Exception { WebDeployable deployable = new WebDeployable(classLoader.getResource("deployables/war1/")); - WARConfiguration config = (WARConfiguration) warFactory.createConfiguration(deployable); + WARConfiguration config = new WARConfiguration(deployable); assertNotNull(config); ByteArrayOutputStream baos = new ByteArrayOutputStream(); config.save(baos); @@ -98,7 +92,7 @@ public void testConfigSet() throws Exception { WebDeployable deployable = new WebDeployable(classLoader.getResource("deployables/war1/")); - WARConfiguration config = (WARConfiguration) warFactory.createConfiguration(deployable); + WARConfiguration config = new WARConfiguration(deployable); DConfigBeanRoot configRoot = config.getDConfigBeanRoot(deployable.getDDBeanRoot()); WebAppDConfigBean contextBean = (WebAppDConfigBean) configRoot.getDConfigBean(deployable.getChildBean("/web-app")[0]); contextBean.setContextRoot("/test"); @@ -118,7 +112,7 @@ public void testConfigSaveRestore() throws Exception { WebDeployable deployable = new WebDeployable(classLoader.getResource("deployables/war1/")); - WARConfiguration config = (WARConfiguration) warFactory.createConfiguration(deployable); + WARConfiguration config = new WARConfiguration(deployable); DConfigBeanRoot configRoot = config.getDConfigBeanRoot(deployable.getDDBeanRoot()); WebAppDConfigBean contextBean = (WebAppDConfigBean) configRoot.getDConfigBean(deployable.getChildBean("/web-app")[0]); contextBean.setContextRoot("/test"); @@ -131,7 +125,7 @@ String output = new String(bytes); System.out.println(output); - config = (WARConfiguration) warFactory.createConfiguration(deployable); + config = new WARConfiguration(deployable); configRoot = config.getDConfigBeanRoot(deployable.getDDBeanRoot()); contextBean = (WebAppDConfigBean) configRoot.getDConfigBean(deployable.getChildBean("/web-app")[0]);