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/11/15 04:55:25 UTC

svn commit: r344302 - in /geronimo/trunk: configs/client-system/src/plan/ configs/j2ee-system/src/plan/ plugins/geronimo-assembly-plugin/ plugins/geronimo-assembly-plugin/src/java/org/apache/geronimo/plugin/assembly/

Author: djencks
Date: Mon Nov 14 19:55:21 2005
New Revision: 344302

URL: http://svn.apache.org/viewcvs?rev=344302&view=rev
Log:
GERONIMO-1127 progress.  Load dependencies from configurations dependency lists

Modified:
    geronimo/trunk/configs/client-system/src/plan/plan.xml
    geronimo/trunk/configs/j2ee-system/src/plan/plan.xml
    geronimo/trunk/plugins/geronimo-assembly-plugin/plugin.jelly
    geronimo/trunk/plugins/geronimo-assembly-plugin/src/java/org/apache/geronimo/plugin/assembly/LocalConfigInstaller.java

Modified: geronimo/trunk/configs/client-system/src/plan/plan.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/configs/client-system/src/plan/plan.xml?rev=344302&r1=344301&r2=344302&view=diff
==============================================================================
--- geronimo/trunk/configs/client-system/src/plan/plan.xml (original)
+++ geronimo/trunk/configs/client-system/src/plan/plan.xml Mon Nov 14 19:55:21 2005
@@ -66,9 +66,6 @@
         <reference name="ServerInfo">
             <name>ServerInfo</name>
         </reference>
-        <reference name="AttributeStore">
-            <name>AttributeManager</name>
-        </reference>
     </gbean>
 
     <!-- Repository -->

Modified: geronimo/trunk/configs/j2ee-system/src/plan/plan.xml
URL: http://svn.apache.org/viewcvs/geronimo/trunk/configs/j2ee-system/src/plan/plan.xml?rev=344302&r1=344301&r2=344302&view=diff
==============================================================================
--- geronimo/trunk/configs/j2ee-system/src/plan/plan.xml (original)
+++ geronimo/trunk/configs/j2ee-system/src/plan/plan.xml Mon Nov 14 19:55:21 2005
@@ -64,9 +64,6 @@
         <reference name="ServerInfo">
             <name>ServerInfo</name>
         </reference>
-        <reference name="AttributeStore">
-            <name>AttributeManager</name>
-        </reference>
     </gbean>
 
     <!-- Persistent List of running Configurations service -->

Modified: geronimo/trunk/plugins/geronimo-assembly-plugin/plugin.jelly
URL: http://svn.apache.org/viewcvs/geronimo/trunk/plugins/geronimo-assembly-plugin/plugin.jelly?rev=344302&r1=344301&r2=344302&view=diff
==============================================================================
--- geronimo/trunk/plugins/geronimo-assembly-plugin/plugin.jelly (original)
+++ geronimo/trunk/plugins/geronimo-assembly-plugin/plugin.jelly Mon Nov 14 19:55:21 2005
@@ -98,6 +98,7 @@
                         <ant:include name="${dependency.getArtifactDirectory()}/${dependency.getType()}s/${dependency.getArtifact()}"/>
                     </j:if>
                 </j:forEach>
+                <ant:exclude name="**/*"/>
             </ant:fileset>
         </ant:copy>
     </goal>
@@ -105,14 +106,20 @@
     <!-- todo automatically add dependencies from configurations into the repo -->
     <!-- todo automatically add libraries listed in an executable's MCP in the right place, relative to it -->
     <goal name="geronimo:assemble-configurations">
-        <j:set var="configStore" value="${geronimo.assembly.dest}/config-store"/>
-        <ant:delete dir="${configStore}"/>
-        <ant:mkdir dir="${configStore}"/>
+        <j:set var="configStoreDir" value="${geronimo.assembly.dest}/config-store"/>
+        <ant:delete dir="${configStoreDir}"/>
+        <ant:mkdir dir="${configStoreDir}"/>
+        <ant:mkdir dir="${geronimo.assembly.dest}/repository"/>
         <j:forEach var="artifact" items="${pom.artifacts}">
             <j:set var="dependency" value="${artifact.dependency}"/>
             <j:if test="${dependency.type == 'car'}">
                 <j:if test="${dependency.getProperty('geronimo.assemble') == 'install'}">
-                    <assemble:installConfig root="${configStore}" artifact="${artifact.file}"/>
+                    <assemble:installConfig
+                        root="${geronimo.assembly.dest}"
+                        configStore="config-store"
+                        repository="repository"
+                        mavenRepoLocal="${maven.repo.local}"
+                        artifact="${artifact.file}"/>
                 </j:if>
 
                 <!-- handle executable configs -->

Modified: geronimo/trunk/plugins/geronimo-assembly-plugin/src/java/org/apache/geronimo/plugin/assembly/LocalConfigInstaller.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/plugins/geronimo-assembly-plugin/src/java/org/apache/geronimo/plugin/assembly/LocalConfigInstaller.java?rev=344302&r1=344301&r2=344302&view=diff
==============================================================================
--- geronimo/trunk/plugins/geronimo-assembly-plugin/src/java/org/apache/geronimo/plugin/assembly/LocalConfigInstaller.java (original)
+++ geronimo/trunk/plugins/geronimo-assembly-plugin/src/java/org/apache/geronimo/plugin/assembly/LocalConfigInstaller.java Mon Nov 14 19:55:21 2005
@@ -18,9 +18,19 @@
 package org.apache.geronimo.plugin.assembly;
 
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
 import java.net.URI;
-
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.kernel.repository.FileWriteMonitor;
+import org.apache.geronimo.kernel.repository.Repository;
 import org.apache.geronimo.system.configuration.LocalConfigStore;
+import org.apache.geronimo.system.repository.FileSystemRepository;
 
 /**
  * JellyBean that installs configuration artifacts into a LocalConfigurationStore
@@ -29,7 +39,11 @@
  */
 public class LocalConfigInstaller {
     private File root;
+    private String configStore;
+    private String repository;
     private File artifact;
+    private File mavenRepoLocal;
+    private URI mavenRepoLocalURI;
 
     public File getRoot() {
         return root;
@@ -39,6 +53,22 @@
         this.root = root;
     }
 
+    public String getConfigStore() {
+        return configStore;
+    }
+
+    public void setConfigStore(String configStore) {
+        this.configStore = configStore;
+    }
+
+    public String getRepository() {
+        return repository;
+    }
+
+    public void setRepository(String repository) {
+        this.repository = repository;
+    }
+
     public File getArtifact() {
         return artifact;
     }
@@ -47,14 +77,76 @@
         this.artifact = artifact;
     }
 
+    public File getMavenRepoLocal() {
+        return mavenRepoLocal;
+    }
+
+    public void setMavenRepoLocal(File mavenRepoLocal) {
+        this.mavenRepoLocal = mavenRepoLocal;
+        mavenRepoLocalURI = mavenRepoLocal.toURI();
+    }
+
     public void execute() throws Exception {
-        LocalConfigStore store = new LocalConfigStore(root);
+        LocalConfigStore store = new LocalConfigStore(new File(root, configStore));
         store.doStart();
+        GBeanData config;
         try {
-            URI uri = store.install(artifact.toURL());
-            System.out.println("Installed configuration " + uri);
+            config = store.install2(artifact.toURL());
+            System.out.println("Installed configuration " + config.getAttribute("id"));
         } finally{
             store.doStop();
+        }
+        URI rootURI = root.toURI().resolve(repository);
+        Repository sourceRepo = new Repository() {
+
+            public boolean hasURI(URI uri) {
+                uri = mavenRepoLocalURI.resolve(uri);
+                if ("file".equals(uri.getScheme())) {
+                    return new File(uri).canRead();
+                } else {
+                    try {
+                        uri.toURL().openStream().close();
+                        return true;
+                    } catch (IOException e) {
+                        return false;
+                    }
+                }
+            }
+
+            public URL getURL(URI uri) throws MalformedURLException {
+                uri = mavenRepoLocalURI.resolve(uri);
+                return uri.toURL();
+            }
+        };
+
+        FileSystemRepository targetRepo = new FileSystemRepository(rootURI, null);
+        targetRepo.doStart();
+        List dependencies = (List) config.getAttribute("dependencies");
+        FileWriteMonitor monitor = new FileWriteMonitor() {
+
+            public void writeStarted(String fileDescription) {
+                System.out.println("Copying " + fileDescription);
+            }
+
+            public void writeProgress(int bytes) {
+
+            }
+
+            public void writeComplete(int bytes) {
+
+            }
+        };
+
+        for (Iterator iterator = dependencies.iterator(); iterator.hasNext();) {
+            URI dependency = (URI) iterator.next();
+            if (!sourceRepo.hasURI(dependency)) {
+                throw new RuntimeException("Dependency: " + dependency + " not found in local maven repo: for configuration: " + config.getAttribute("id"));
+            }
+            if (!targetRepo.hasURI(dependency)) {
+                URL sourceURL = sourceRepo.getURL(dependency);
+                InputStream in = sourceURL.openStream();
+                targetRepo.copyToRepository(in, dependency, monitor);
+            }
         }
     }
 }