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/12/09 02:31:48 UTC

svn commit: r355300 - in /geronimo/branches/1.0/plugins/geronimo-packaging-plugin: ./ src/java/org/apache/geronimo/plugin/packaging/

Author: djencks
Date: Thu Dec  8 17:31:46 2005
New Revision: 355300

URL: http://svn.apache.org/viewcvs?rev=355300&view=rev
Log:
merge of GERONIMO-1312, make packagin plugin able to deploy app clients

Added:
    geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackagingCommandLine.java
      - copied unchanged from r355299, geronimo/trunk/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackagingCommandLine.java
Modified:
    geronimo/branches/1.0/plugins/geronimo-packaging-plugin/project.xml
    geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenConfigStore.java
    geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java
    geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilderShell.java

Modified: geronimo/branches/1.0/plugins/geronimo-packaging-plugin/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/plugins/geronimo-packaging-plugin/project.xml?rev=355300&r1=355299&r2=355300&view=diff
==============================================================================
--- geronimo/branches/1.0/plugins/geronimo-packaging-plugin/project.xml (original)
+++ geronimo/branches/1.0/plugins/geronimo-packaging-plugin/project.xml Thu Dec  8 17:31:46 2005
@@ -35,6 +35,15 @@
         </dependency>
 
         <dependency>
+            <groupId>geronimo</groupId>
+            <artifactId>geronimo-system</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <properties>
+                <packaging.classpath>true</packaging.classpath>
+            </properties>
+        </dependency>
+
+        <dependency>
             <groupId>cglib</groupId>
             <artifactId>cglib-nodep</artifactId>
             <version>2.1_2</version>

Modified: geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenConfigStore.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenConfigStore.java?rev=355300&r1=355299&r2=355300&view=diff
==============================================================================
--- geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenConfigStore.java (original)
+++ geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/MavenConfigStore.java Thu Dec  8 17:31:46 2005
@@ -37,6 +37,7 @@
 import org.apache.geronimo.kernel.config.ManageableAttributeStore;
 import org.apache.geronimo.kernel.repository.Repository;
 import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.system.configuration.ExecutableConfigurationUtil;
 
 /**
  * Implementation of ConfigurationStore that loads Configurations from a repository.
@@ -126,7 +127,13 @@
     }
 
     public void install(ConfigurationData configurationData, File source) throws IOException, InvalidConfigException {
-        throw new UnsupportedOperationException();
+        if (!source.isDirectory()) {
+            throw new InvalidConfigException("Source must be a directory: source=" + source);
+        }
+        URI configId = configurationData.getId();
+        URL targetURL = repository.getURL(configId);
+        File targetFile = new File(targetURL.getPath());
+        ExecutableConfigurationUtil.createExecutableConfiguration(configurationData, null, source, targetFile);
     }
 
     public void uninstall(URI configID) throws NoSuchConfigException, IOException {

Modified: geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java?rev=355300&r1=355299&r2=355300&view=diff
==============================================================================
--- geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java (original)
+++ geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilder.java Thu Dec  8 17:31:46 2005
@@ -20,17 +20,19 @@
 import java.net.URI;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
 import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GReferenceInfo;
+import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.KernelFactory;
 import org.apache.geronimo.kernel.KernelRegistry;
 import org.apache.geronimo.kernel.config.ConfigurationManager;
 import org.apache.geronimo.kernel.config.ConfigurationManagerImpl;
 import org.apache.geronimo.kernel.config.ConfigurationUtil;
-import org.apache.geronimo.kernel.config.InvalidConfigException;
 import org.apache.log4j.BasicConfigurator;
 
 /**
@@ -89,6 +91,9 @@
         }
     }
 
+    private String repositoryClass;
+    private String configurationStoreClass;
+
     private File repository;
     private String deploymentConfigString;
     private URI[] deploymentConfig;
@@ -102,6 +107,23 @@
     private String endorsedDirs;
     private String extensionDirs;
 
+    public String getRepositoryClass() {
+        return repositoryClass;
+    }
+
+    public void setRepositoryClass(String repositoryClass) {
+        this.repositoryClass = repositoryClass;
+    }
+
+    public String getConfigurationStoreClass() {
+        return configurationStoreClass;
+    }
+
+    public void setConfigurationStoreClass(String configurationStoreClass) {
+        this.configurationStoreClass = configurationStoreClass;
+    }
+
+
     public File getRepository() {
         return repository;
     }
@@ -228,7 +250,7 @@
     }
 
     public void execute() throws Exception {
-        Kernel kernel = createKernel(repository);
+        Kernel kernel = createKernel(repository, repositoryClass, configurationStoreClass);
 
         // start the Configuration we're going to use for this deployment
         ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
@@ -260,7 +282,7 @@
     /**
      * Create a Geronimo Kernel to contain the deployment configurations.
      */
-    private static synchronized Kernel createKernel(File repository) throws Exception {
+    private static synchronized Kernel createKernel(File repository, String repoClass, String configStoreClass) throws Exception {
         // first return our cached version
         if (kernel != null) {
             return kernel;
@@ -271,13 +293,13 @@
         if (kernel != null) {
             return kernel;
         }
-        
+
         BasicConfigurator.configure();
         // boot one ourselves
         kernel = KernelFactory.newInstance().createKernel(KERNEL_NAME);
         kernel.boot();
 
-        bootDeployerSystem(kernel, repository);
+        bootDeployerSystem(kernel, repository, repoClass, configStoreClass);
 
         return kernel;
     }
@@ -287,15 +309,24 @@
      * This contains Repository and ConfigurationStore GBeans that map to
      * the local maven installation.
      */
-    private static void bootDeployerSystem(Kernel kernel, File repository) throws Exception {
+    private static void bootDeployerSystem(Kernel kernel, File repository, String repoClass, String configStoreClass) throws Exception {
         ClassLoader cl = PackageBuilder.class.getClassLoader();
-        GBeanData repoGBean = new GBeanData(REPOSITORY_NAME, MavenRepository.GBEAN_INFO);
+        GBeanInfo repoInfo = GBeanInfo.getGBeanInfo(repoClass, cl);
+        GBeanData repoGBean = new GBeanData(REPOSITORY_NAME, repoInfo);
         repoGBean.setAttribute("root", repository);
         kernel.loadGBean(repoGBean, cl);
         kernel.startGBean(REPOSITORY_NAME);
 
-        GBeanData storeGBean = new GBeanData(CONFIGSTORE_NAME, MavenConfigStore.GBEAN_INFO);
-        storeGBean.setReferencePattern("Repository", REPOSITORY_NAME);
+        GBeanInfo configStoreInfo = GBeanInfo.getGBeanInfo(configStoreClass, cl);
+        GBeanData storeGBean = new GBeanData(CONFIGSTORE_NAME, configStoreInfo);
+        Set refs = configStoreInfo.getReferences();
+        for (Iterator iterator = refs.iterator(); iterator.hasNext();) {
+            GReferenceInfo refInfo = (GReferenceInfo) iterator.next();
+            if ("Repository".equals(refInfo.getName())) {
+                storeGBean.setReferencePattern("Repository", REPOSITORY_NAME);
+                break;
+            }
+        }
         kernel.loadGBean(storeGBean, cl);
         kernel.startGBean(CONFIGSTORE_NAME);
 

Modified: geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilderShell.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilderShell.java?rev=355300&r1=355299&r2=355300&view=diff
==============================================================================
--- geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilderShell.java (original)
+++ geronimo/branches/1.0/plugins/geronimo-packaging-plugin/src/java/org/apache/geronimo/plugin/packaging/PackageBuilderShell.java Thu Dec  8 17:31:46 2005
@@ -211,6 +211,8 @@
         set("setPackageFile", packageFile, File.class, packageBuilder);
         set("setPlanFile", planFile, File.class, packageBuilder);
         set("setRepository", repository, File.class, packageBuilder);
+        set("setRepositoryClass", MavenRepository.class.getName(), String.class, packageBuilder);
+        set("setConfigurationStoreClass", MavenConfigStore.class.getName(), String.class, packageBuilder);
 
         Method m = packageBuilder.getClass().getMethod("execute", new Class[]{});
         m.invoke(packageBuilder, new Object[]{});