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 2008/10/28 20:48:31 UTC

svn commit: r708650 - in /geronimo/server/trunk: assemblies/geronimo-boilerplate/ assemblies/geronimo-boilerplate/src/main/assembly/ assemblies/geronimo-boilerplate/src/main/underlay/ assemblies/geronimo-boilerplate/src/main/underlay/bin/ assemblies/ge...

Author: djencks
Date: Tue Oct 28 12:48:22 2008
New Revision: 708650

URL: http://svn.apache.org/viewvc?rev=708650&view=rev
Log:
GERONIMO-4382 Use plugin installing to create a new server instance in a geronimo installation.  Also requires separating boilerplate into the installation and server (var) bits

Added:
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/DISCLAIMER
      - copied unchanged from r707296, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/DISCLAIMER
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/LICENSE
      - copied unchanged from r707296, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/LICENSE
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/NOTICE
      - copied unchanged from r707296, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/NOTICE
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/
      - copied from r707296, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/client.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/client.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/client.sh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/client.sh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/deploy.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/deploy.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/deploy.sh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/deploy.sh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/geronimo.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/geronimo.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/geronimo.sh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/geronimo.sh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/gsh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/gsh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/gsh.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/gsh.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/setjavaenv.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/setjavaenv.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/setjavaenv.sh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/setjavaenv.sh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/shutdown.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/shutdown.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/shutdown.sh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/shutdown.sh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/start-server
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/start-server
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/start-server.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/start-server.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/startup.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/startup.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/startup.sh
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/startup.sh
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/stop-server
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/stop-server
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/bin/stop-server.bat
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/stop-server.bat
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/
      - copied from r707296, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/META-INF/
      - copied from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/META-INF/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/gsh-classworlds.conf
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/gsh-classworlds.conf
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/gsh-log4j.properties
      - copied unchanged from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/gsh-log4j.properties
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/layout.xml
      - copied, changed from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/layout.xml
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/rc.d/
      - copied from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/rc.d/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/instance/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/instance/var/
      - copied from r707296, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/var/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/instance/var/config/
      - copied from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/var/config/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/instance/var/log/
      - copied from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/var/log/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/instance/var/temp/
      - copied from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/var/temp/
    geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java   (with props)
    geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java   (with props)
Removed:
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/DISCLAIMER
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/LICENSE
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/NOTICE
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/bin/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/var/
Modified:
    geronimo/server/trunk/assemblies/geronimo-boilerplate/pom.xml
    geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/assembly/boilerplate.xml
    geronimo/server/trunk/framework/configs/plugin/src/main/plan/plan.xml
    geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
    geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ServerInstanceData.java
    geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/serverinfo/BasicServerInfo.java

Modified: geronimo/server/trunk/assemblies/geronimo-boilerplate/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/assemblies/geronimo-boilerplate/pom.xml?rev=708650&r1=708649&r2=708650&view=diff
==============================================================================
--- geronimo/server/trunk/assemblies/geronimo-boilerplate/pom.xml (original)
+++ geronimo/server/trunk/assemblies/geronimo-boilerplate/pom.xml Tue Oct 28 12:48:22 2008
@@ -249,6 +249,7 @@
                             <instance>
                                 <plugin-artifact>
                                     <copy-file relative-to="geronimo" dest-dir="">contents/</copy-file>
+                                    <copy-file relative-to="server" dest-dir="">instance/</copy-file>
                                 </plugin-artifact>
                             </instance>
                         </configuration>

Modified: geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/assembly/boilerplate.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/assembly/boilerplate.xml?rev=708650&r1=708649&r2=708650&view=diff
==============================================================================
--- geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/assembly/boilerplate.xml (original)
+++ geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/assembly/boilerplate.xml Tue Oct 28 12:48:22 2008
@@ -24,7 +24,7 @@
     <fileSets>
         <fileSet>
             <directory>src/main/underlay</directory>
-            <outputDirectory>contents</outputDirectory>
+            <outputDirectory></outputDirectory>
         </fileSet>
     </fileSets>
     

Copied: geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/layout.xml (from r708647, geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/layout.xml)
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/layout.xml?p2=geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/layout.xml&p1=geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/layout.xml&r1=708647&r2=708650&rev=708650&view=diff
==============================================================================
--- geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/etc/layout.xml (original)
+++ geronimo/server/trunk/assemblies/geronimo-boilerplate/src/main/underlay/contents/etc/layout.xml Tue Oct 28 12:48:22 2008
@@ -200,6 +200,11 @@
                     <name>install-plugin</name>
                     <id>geronimo-commands:install-plugin</id>
                 </command>
+
+                <command>
+                    <name>new-instance</name>
+                    <id>geronimo-commands:new-server-instance</id>
+                </command>
             </nodes>
         </group>
 

Modified: geronimo/server/trunk/framework/configs/plugin/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/configs/plugin/src/main/plan/plan.xml?rev=708650&r1=708649&r2=708650&view=diff
==============================================================================
--- geronimo/server/trunk/framework/configs/plugin/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/framework/configs/plugin/src/main/plan/plan.xml Tue Oct 28 12:48:22 2008
@@ -22,6 +22,7 @@
 
     <!-- Configuration Installer -->
     <gbean name="PluginInstaller" class="org.apache.geronimo.system.plugin.PluginInstallerGBean">
+        <!-- TODO no artifactManager specified-->
         <attribute name="installedPluginsList">var/config/installed-plugins.properties</attribute>
         <reference name="Repository">
             <name>Repository</name>
@@ -109,4 +110,19 @@
         </reference>
     </gbean>
 
+    <gbean name="NewServerInstance" class="org.apache.geronimo.system.plugin.NewServerInstanceGBean">
+        <attribute name="defaultPlugins">org.apache.geronimo.plugingroups/framework/${version}/car</attribute>
+        <reference name="PluginInstallerGBean">
+            <name>PluginInstaller</name>
+        </reference>
+        <reference name="ConfigManager">
+            <name>ConfigurationManager</name>
+        </reference>
+        <references name="PersistentConfigurationLists">
+            <pattern>
+                <name>AttributeManager</name>
+            </pattern>
+        </references>
+    </gbean>
+
 </module>

Added: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java?rev=708650&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java Tue Oct 28 12:48:22 2008
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.geronimo.system.plugin;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public interface NewServerInstance {
+    void newServerInstance(String serverName) throws Exception;
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstance.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java?rev=708650&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java Tue Oct 28 12:48:22 2008
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.geronimo.system.plugin;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.basic.BasicKernel;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.PersistentConfigurationList;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.system.plugin.model.ArtifactType;
+import org.apache.geronimo.system.plugin.model.PluginArtifactType;
+import org.apache.geronimo.system.plugin.model.PluginListType;
+import org.apache.geronimo.system.plugin.model.PluginType;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+@GBean
+public class NewServerInstanceGBean implements NewServerInstance {
+
+    private final Set<String> defaultPlugins;
+    private final Collection<PersistentConfigurationList> persistentConfigurationLists;
+    private final PluginInstallerGBean oldPluginInstallerGBean;
+    private final ConfigurationManager configManager;
+    private final Kernel kernel;
+
+    public NewServerInstanceGBean(@ParamAttribute(name = "defaultPlugins")Map<String, String> defaultPlugins,
+                                  @ParamReference(name = "PersistentConfigurationLists")Collection<PersistentConfigurationList> persistentConfigurationLists,
+                                  @ParamReference(name = "PluginInstallerGBean")PluginInstallerGBean pluginInstallerGBean,
+                                  @ParamReference(name = "ConfigManager", namingType = "ConfigurationManager")ConfigurationManager configManager,
+                                  @ParamSpecial(type = SpecialAttributeType.kernel)Kernel kernel) {
+        this.persistentConfigurationLists = persistentConfigurationLists;
+        this.oldPluginInstallerGBean = pluginInstallerGBean;
+        this.configManager = configManager;
+        this.defaultPlugins = defaultPlugins == null ? Collections.<String>emptySet() : defaultPlugins.keySet();
+        this.kernel = kernel;
+    }
+
+    public void newServerInstance(String serverName) throws Exception {
+        try {
+            PluginListType pluginList = new PluginListType();
+            for (String artifactString : defaultPlugins) {
+                Artifact artifact = Artifact.create(artifactString);
+                PluginType plugin = getPlugin(artifact);
+                pluginList.getPlugin().add(plugin);
+            }
+            Artifact query = Artifact.createPartial("///");
+            for (PersistentConfigurationList persistentConfigurationList : persistentConfigurationLists) {
+                for (Artifact installed : persistentConfigurationList.getListedConfigurations(query)) {
+                    PluginType plugin = getPlugin(installed);
+                    pluginList.getPlugin().add(plugin);
+                }
+            }
+
+            Kernel kernel = new BasicKernel("assembly");
+
+            try {
+                PluginInstallerGBean pluginInstallerGBean = oldPluginInstallerGBean.pluginInstallerCopy(serverName, kernel);
+                GeronimoSourceRepository localSourceRepository = new GeronimoSourceRepository(configManager.getRepositories(), configManager.getArtifactResolver());
+
+                DownloadResults downloadPoller = new DownloadResults();
+                pluginInstallerGBean.install(pluginList, localSourceRepository, true, null, null, downloadPoller);
+            } finally {
+                kernel.shutdown();
+            }
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    public PluginType getPlugin(Artifact sourceArtifact) {
+        PluginType plugin = new PluginType();
+        PluginArtifactType pluginArtifact = new PluginArtifactType();
+        ArtifactType artifact = new ArtifactType();
+        artifact.setGroupId(sourceArtifact.getGroupId());
+        artifact.setArtifactId(sourceArtifact.getArtifactId());
+        artifact.setVersion(sourceArtifact.getVersion().toString());
+        artifact.setType(sourceArtifact.getType());
+        pluginArtifact.setModuleId(artifact);
+        plugin.getPluginArtifact().add(pluginArtifact);
+        return plugin;
+    }
+
+
+}

Propchange: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/NewServerInstanceGBean.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java?rev=708650&r1=708649&r2=708650&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/PluginInstallerGBean.java Tue Oct 28 12:48:22 2008
@@ -164,12 +164,29 @@
                                 @ParamReference(name = "PersistentConfigurationLists", namingType = "AttributeStore")Collection<PersistentConfigurationList> persistentConfigurationLists,
                                 @ParamReference(name = "PluginRepositoryList")PluginRepositoryList pluginRepositoryList,
                                 @ParamSpecial(type = SpecialAttributeType.classLoader) final ClassLoader classLoader) throws IOException {
+        this(installedPluginsList, configManager, repository, configStore, serverInstanceDatas, serverInfo, threadPool, artifactManager, persistentConfigurationLists, pluginRepositoryList, classLoader, true);
+    }
+
+    private PluginInstallerGBean(String installedPluginsList,
+                                 ConfigurationManager configManager,
+                                 WritableListableRepository repository,
+                                 ConfigurationStore configStore,
+                                 Collection<? extends ServerInstanceData> serverInstanceDatas,
+                                 ServerInfo serverInfo,
+                                 ThreadPool threadPool,
+                                 ArtifactManager artifactManager,
+                                 Collection<PersistentConfigurationList> persistentConfigurationLists,
+                                 PluginRepositoryList pluginRepositoryList,
+                                 ClassLoader classLoader,
+                                 boolean live) throws IOException {
         this.writeableRepo = repository;
         this.configStore = configStore;
         this.serverInfo = serverInfo;
         this.threadPool = threadPool;
         asyncKeys = Collections.synchronizedMap(new HashMap<Object, DownloadResults>());
         this.serverInstanceDatas = serverInstanceDatas;
+        if (artifactManager == null) artifactManager = new DefaultArtifactManager();
+        setUpServerInstances(serverInstanceDatas, serverInfo, artifactManager, servers, writeableRepo, live);
         this.persistentConfigurationLists = persistentConfigurationLists == null ? Collections.<PersistentConfigurationList>emptyList() : persistentConfigurationLists;
         this.classLoader = classLoader;
         if (configManager == null) {
@@ -177,7 +194,6 @@
         }
         this.configManager = configManager;
         localSourceRepository = new GeronimoSourceRepository(configManager.getRepositories(), configManager.getArtifactResolver());
-        setUpServerInstances(serverInstanceDatas, serverInfo, artifactManager, servers, writeableRepo, true);
         this.pluginRepositoryList = pluginRepositoryList;
         this.installedPluginsList = installedPluginsList;
         loadHistory();
@@ -193,6 +209,7 @@
      * @param pluginRepositoryList
      * @param kernel               kernel for current server
      * @param classLoader          classLoader @throws IOException if layouts can't be loaded
+     * @deprecated only used by car-maven-plugin
      */
     public PluginInstallerGBean(String targetRepositoryPath,
                                 String targetServerPath,
@@ -222,6 +239,32 @@
         loadHistory();
     }
 
+    public PluginInstallerGBean pluginInstallerCopy(String serverName, Kernel kernel) throws Exception {
+        ServerInfo newServerInfo = new BasicServerInfo(serverInfo.getCurrentBaseDirectory(), serverName);
+        final ArtifactManager artifactManager = new DefaultArtifactManager();
+        ConfigurationManager configManager = buildConfigurationManager(artifactManager, writeableRepo, kernel, configStore, classLoader, servers);
+//        ArrayList<ServerInstanceData> serverInstanceDatasCopy = new ArrayList<ServerInstanceData>(serverInstanceDatas.size());
+//        for (ServerInstanceData serverInstance: serverInstanceDatas) {
+//            if (serverInstance instanceof ReferenceServerInstanceData) {
+//                serverInstance = new ServerInstanceData(serverInstance);
+//            }
+//            serverInstanceDatasCopy.add(serverInstance);
+//        }
+        return new PluginInstallerGBean(
+                installedPluginsList,
+                configManager,
+                writeableRepo,
+                configStore,
+                serverInstanceDatas,
+                newServerInfo,
+                threadPool,
+                artifactManager,
+                persistentConfigurationLists,
+                pluginRepositoryList,
+                classLoader,
+                false);
+    }
+
     private static void setUpServerInstances(Collection<? extends ServerInstanceData> serverInstanceDatas,
                                              final ServerInfo serverInfo, final ArtifactManager artifactManager,
                                              final Map<String, ServerInstance> servers,
@@ -404,13 +447,27 @@
 
         try {
 //            kernel.boot();
+            final ArtifactManager artifactManager = new DefaultArtifactManager();
+
+            FileUtils.forceMkdir(new File(targetServerPathName));
+            ServerInfo serverInfo = new BasicServerInfo(targetServerPathName, false);
+            File targetRepositoryFile = serverInfo.resolve(targetRepositoryPath);
+            FileUtils.forceMkdir(targetRepositoryFile);
+            WritableListableRepository writeableRepo = new Maven2Repository(targetRepositoryFile);
+            ConfigurationStore configStore = new RepositoryConfigurationStore(writeableRepo);
             PluginInstallerGBean installer = new PluginInstallerGBean(
-                    targetRepositoryPath,
-                    targetServerPathName,
                     installedPluginsList,
+                    configManager,
+                    writeableRepo,
+                    configStore,
                     serverInstanceDatas,
-                    pluginRepositoryList, kernel,
-                    classLoader);
+                    serverInfo,
+                    threadPool,
+                    artifactManager,
+                    persistentConfigurationLists,
+                    pluginRepositoryList,
+                    classLoader,
+                    false);
 
             installer.install(pluginList, localSourceRepository, true, null, null, downloadPoller);
         } finally {
@@ -1140,7 +1197,7 @@
             if (result == null) {
                 throw new IllegalArgumentException("Could not find " + configID + " in any repo: " + repos);
             }
-            // Check if the result is already in server's repository
+            // Check if the result is already in server's repository (maybe the actual configId is not what was expected?)
             if (configManager.getArtifactResolver().queryArtifacts(result.getArtifact()).length > 0) {
                 String msg = "Not downloading " + configID + ". Query for " + configID + " resulted in " + result.getArtifact()
                         + " which is already available in server's repository.";
@@ -1234,6 +1291,12 @@
             // Download the dependencies
             parentStack.push(configID);
             if (instance == null) {
+                PluginType currentPlugin = getPluginMetadata(configID);
+                if (currentPlugin != null) {
+                    instance = currentPlugin.getPluginArtifact().get(0);
+                }
+            }
+            if (instance == null) {
                 //no plugin metadata, guess with something else
                 Dependency[] dependencies = data == null ? getDependencies(writeableRepo, configID) : getDependencies(data);
                 for (Dependency dep : dependencies) {
@@ -1265,12 +1328,6 @@
                 return;
             }
         }
-        if (instance == null) {
-            PluginType currentPlugin = getPluginMetadata(configID);
-            if (currentPlugin != null) {
-                instance = currentPlugin.getPluginArtifact().get(0);
-            }
-        }
         if (instance != null) {
             installedArtifacts.add(configID);
             try {

Modified: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ServerInstanceData.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ServerInstanceData.java?rev=708650&r1=708649&r2=708650&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ServerInstanceData.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ServerInstanceData.java Tue Oct 28 12:48:22 2008
@@ -45,6 +45,17 @@
     private String configSubstitutionsPrefix = "org.apache.geronimo.config.substitution.";
     private String artifactAliasesFile = "var/config/artifact_aliases.properties";
 
+    public ServerInstanceData() {
+    }
+
+    public ServerInstanceData(ServerInstanceData toCopy) {
+        this.name = toCopy.getName();
+        this.attributeManagerFrom = toCopy.getAttributeManagerFrom();
+        this.configFile = toCopy.getConfigFile();
+        this.configSubstitutionsFile = toCopy.getConfigSubstitutionsFile();
+        this.configSubstitutionsPrefix = toCopy.getConfigSubstitutionsPrefix();
+        this.artifactAliasesFile = toCopy.getArtifactAliasesFile();
+    }
 
     public String getName() {
         return name;

Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/serverinfo/BasicServerInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/serverinfo/BasicServerInfo.java?rev=708650&r1=708649&r2=708650&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/serverinfo/BasicServerInfo.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/serverinfo/BasicServerInfo.java Tue Oct 28 12:48:22 2008
@@ -47,6 +47,7 @@
         baseURI = null;
         baseServerURI = null;
     }
+
     public BasicServerInfo(String defaultBaseDirectory) throws Exception {
         this(defaultBaseDirectory, true);
     }
@@ -84,6 +85,14 @@
         System.setProperty("java.io.tmpdir", tmpDir);
     }
 
+    public BasicServerInfo(String baseDirectory, String serverName) {
+        this.baseDirectory = baseDirectory;
+        this.base = new File(baseDirectory);
+        this.baseURI = base.toURI();
+        this.baseServerURI = baseURI.resolve(serverName);
+        this.baseServer = new File(baseServerURI);
+    }
+
     /**
      * Resolves an abstract pathname to an absolute one.
      *