You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2009/12/07 02:06:07 UTC

svn commit: r887814 - in /geronimo/server/trunk/plugins/aries: aries-deployer/ aries-deployer/src/main/history/ aries-deployer/src/main/plan/ geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/

Author: gawor
Date: Mon Dec  7 01:06:06 2009
New Revision: 887814

URL: http://svn.apache.org/viewvc?rev=887814&view=rev
Log:
GERONIMO-4971: install application bundles into the repository

Removed:
    geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppModule.java
Modified:
    geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml
    geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml
    geronimo/server/trunk/plugins/aries/aries-deployer/src/main/plan/plan.xml
    geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java

Modified: geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml?rev=887814&r1=887813&r2=887814&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml (original)
+++ geronimo/server/trunk/plugins/aries/aries-deployer/pom.xml Mon Dec  7 01:06:06 2009
@@ -36,8 +36,8 @@
     <dependencies>
         <!-- parent -->
         <dependency>
-            <groupId>org.apache.geronimo.configs</groupId>
-            <artifactId>j2ee-deployer</artifactId>
+            <groupId>org.apache.geronimo.framework</groupId>
+            <artifactId>j2ee-system</artifactId>
             <version>${version}</version>
             <type>car</type>
         </dependency>

Modified: geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml?rev=887814&r1=887813&r2=887814&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/aries/aries-deployer/src/main/history/dependencies.xml Mon Dec  7 01:06:06 2009
@@ -12,8 +12,38 @@
         <type>jar</type>
     </dependency>
     <dependency>
-        <groupId>org.apache.geronimo.configs</groupId>
-        <artifactId>j2ee-deployer</artifactId>
+        <groupId>org.apache.geronimo.components</groupId>
+        <artifactId>geronimo-jaspi</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.framework</groupId>
+        <artifactId>geronimo-deploy-config</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.framework</groupId>
+        <artifactId>geronimo-deployment</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.framework</groupId>
+        <artifactId>geronimo-management</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.framework</groupId>
+        <artifactId>geronimo-security</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.framework</groupId>
+        <artifactId>geronimo-service-builder</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.framework</groupId>
+        <artifactId>j2ee-system</artifactId>
         <type>car</type>
     </dependency>
     <dependency>
@@ -21,4 +51,109 @@
         <artifactId>geronimo-aries-builder</artifactId>
         <type>jar</type>
     </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-j2ee</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-j2ee-builder</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-j2ee-schema</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-security-builder</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.schema</groupId>
+        <artifactId>geronimo-schema-j2ee_1.4</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.schema</groupId>
+        <artifactId>geronimo-schema-jee_5</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-activation_1.1_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-annotation_1.0_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-ejb_3.1_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-jacc_1.1_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-jaspic_1.0_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-javaee-deployment_1.1MR3_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-jaxws_2.1_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-jpa_2.0_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-jta_1.1_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.specs</groupId>
+        <artifactId>geronimo-servlet_3.0_spec</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.servicemix.bundles</groupId>
+        <artifactId>org.apache.servicemix.bundles.xmlbeans</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.servicemix.bundles</groupId>
+        <artifactId>org.apache.servicemix.bundles.xmlresolver</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.servicemix.specs</groupId>
+        <artifactId>org.apache.servicemix.specs.saaj-api-1.3</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.xbean</groupId>
+        <artifactId>xbean-finder</artifactId>
+        <type>jar</type>
+    </dependency>
 </plugin-artifact>

Modified: geronimo/server/trunk/plugins/aries/aries-deployer/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/aries-deployer/src/main/plan/plan.xml?rev=887814&r1=887813&r2=887814&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/aries-deployer/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/aries/aries-deployer/src/main/plan/plan.xml Mon Dec  7 01:06:06 2009
@@ -19,6 +19,9 @@
 <module xmlns="http://geronimo.apache.org/xml/ns/deployment-${geronimoSchemaVersion}">
 
     <gbean name="AriesAppBuilder" class="org.apache.geronimo.aries.builder.AriesAppConfigBuilder">
+        <reference name="Repository">
+            <name>Repository</name>
+        </reference>
     </gbean>
 
 </module>

Modified: geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java?rev=887814&r1=887813&r2=887814&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java Mon Dec  7 01:06:06 2009
@@ -19,11 +19,9 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 import java.util.jar.JarInputStream;
@@ -52,12 +50,12 @@
 import org.apache.geronimo.kernel.config.ConfigurationModuleType;
 import org.apache.geronimo.kernel.config.ConfigurationStore;
 import org.apache.geronimo.kernel.config.ConfigurationUtil;
-import org.apache.geronimo.kernel.osgi.BundleUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.ArtifactResolver;
+import org.apache.geronimo.kernel.repository.Dependency;
 import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.kernel.repository.Repository;
-import org.osgi.framework.Bundle;
+import org.apache.geronimo.kernel.repository.ImportType;
+import org.apache.geronimo.kernel.repository.WritableListableRepository;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
@@ -74,14 +72,14 @@
     
     private Kernel kernel;
     private BundleContext bundleContext;
-    private Collection<Repository> repositories;
+    private WritableListableRepository repository;
     private ConfigurationManager configurationManager;
 
-    public AriesAppConfigBuilder(@ParamReference(name="Repository", namingType = "Repository")Collection<Repository> repositories,
+    public AriesAppConfigBuilder(@ParamReference(name="Repository", namingType = "Repository")WritableListableRepository repository,
                                  @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel,
                                  @ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext) 
         throws GBeanNotFoundException {
-        this.repositories = repositories;
+        this.repository = repository;
         this.kernel = kernel;
         this.bundleContext = bundleContext;
         this.configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
@@ -96,22 +94,11 @@
     public void doFail() {
         doStop();
     }
-   
-   
-
-        /*
-        LOG.debug("Found Aries Application: {}", appMetadata.getApplicationName());
-        
-        Environment env = new Environment();
-        env.setConfigId(new Artifact("aries", appMetadata.getApplicationSymbolicName(), appMetadata.getApplicationVersion().toString(), "jar"));
-                
-        AbstractName moduleName = naming.createRootName(env.getConfigId(), NameFactory.NULL, NameFactory.J2EE_APPLICATION);
-        
-        AriesAppModule module = new AriesAppModule(moduleName, env, moduleFile, targetPath, appMetadata);
-          */
-        
-       
 
+    private WritableListableRepository getRepository() {
+        return repository;   
+    }
+    
     private ApplicationMetadataManager getApplicationMetadataManager() {
         ServiceReference ref = 
             bundleContext.getServiceReference(ApplicationMetadataManager.class.getName());
@@ -130,12 +117,30 @@
         return name;
     }
     
-    public void installModule(JarFile jarFile, ApplicationMetadata appMetadata) throws DeploymentException {
+    private String getBundleVersion(Manifest mf) {
+        String version = null;
+        if (mf != null) {
+            version = (String) mf.getMainAttributes().getValue(Constants.BUNDLE_VERSION);
+        }
+        return version;
+    }
+    
+    private static class AppEntry {
+        String entryName;
+        Manifest manifest;
+        
+        public AppEntry(String entryName, Manifest manifest) {
+            this.entryName = entryName;
+            this.manifest = manifest;
+        }
+    }
+    
+    public void install(JarFile jarFile, ApplicationMetadata appMetadata, Environment environment) throws DeploymentException {       
         /*
          * XXX: This is totally not right but for now allows us to install 
          * simple Aries applications into Geronimo. 
          */
-        HashMap<String, String> mapping = new HashMap<String, String>();
+        HashMap<String, AppEntry> mapping = new HashMap<String, AppEntry>();
         Enumeration<JarEntry> entries = jarFile.entries();
         while(entries.hasMoreElements()) {
             JarEntry entry = entries.nextElement();
@@ -145,7 +150,7 @@
                     JarInputStream jarInput = new JarInputStream(in);
                     String name = getSymbolicName(jarInput.getManifest());
                     if (name != null) {
-                        mapping.put(name, entry.getName());
+                        mapping.put(name, new AppEntry(entry.getName(), jarInput.getManifest()));
                     }
                 } catch (IOException e) {
                     LOG.warn("Error getting jar entry {}", entry.getName(), e);
@@ -153,30 +158,29 @@
             }
         }
 
-        List<Bundle> installedBundles = new ArrayList<Bundle>();        
         try {
             for (Content content : appMetadata.getApplicationContents()) {
-                String entryName = mapping.get(content.getContentName());
-                if (entryName == null) {
+                AppEntry appEntry = mapping.get(content.getContentName());
+                if (appEntry == null) {
                     LOG.warn("Unknown bundle name in application context {}", content.getContentName());
                     continue;
                 }
-                ZipEntry entry = jarFile.getEntry(entryName);
+                ZipEntry entry = jarFile.getEntry(appEntry.entryName);
                 if (entry == null) {
                     // this should not happen
-                    throw new DeploymentException("Jar entry not found " + entryName);
+                    throw new DeploymentException("Jar entry not found " + appEntry.entryName);
                 }
 
+                Artifact artifact = new Artifact("aries-app", 
+                                                 content.getContentName(), 
+                                                 getBundleVersion(appEntry.manifest),
+                                                 "jar");
                 InputStream in = jarFile.getInputStream(entry);
-                Bundle appBundle = bundleContext.installBundle(content.getContentName(), in);
-                installedBundles.add(appBundle);
+                getRepository().copyToRepository(in, (int) entry.getSize(), artifact, null);
+                
+                environment.addDependency(new Dependency(artifact, ImportType.ALL));
             }
             
-            for (Bundle installedBundle : installedBundles) {
-                if (BundleUtils.canStart(installedBundle)) {
-                    installedBundle.start();
-                }
-            }
         } catch (Exception e) {
             throw new DeploymentException("Failed to install application", e);
         }        
@@ -219,7 +223,7 @@
         throws IOException, DeploymentException {
         ApplicationMetadata appMetadata = (ApplicationMetadata) plan;
         
-        Artifact name = new Artifact("aries", appMetadata.getApplicationSymbolicName(), appMetadata.getApplicationVersion().toString(), "eba");
+        Artifact name = new Artifact("aries-app", appMetadata.getApplicationSymbolicName(), appMetadata.getApplicationVersion().toString(), "eba");
         
         return name;
     }
@@ -233,7 +237,11 @@
                                                 ConfigurationStore targetConfigurationStore) 
         throws IOException, DeploymentException {
         ApplicationMetadata appMetadata = (ApplicationMetadata) plan;
-        installModule(jarFile, appMetadata);
+        
+        Environment environment = new Environment();
+        environment.setConfigId(configId);
+        
+        install(jarFile, appMetadata, environment);
         
         File outfile;
         try {
@@ -242,9 +250,6 @@
             throw new DeploymentException(e);
         }
         
-        Environment environment = new Environment();
-        environment.setConfigId(configId);
-        
         Naming naming = kernel.getNaming();
         AbstractName moduleName = naming.createRootName(configId, configId.toString(), "AriesApplication");
         try {
@@ -255,7 +260,7 @@
                             ConfigurationModuleType.SERVICE,
                             naming,
                             configurationManager,
-                            repositories, 
+                            null, 
                             bundleContext);
             
             
@@ -269,6 +274,8 @@
         } catch (IOException e) {
             e.printStackTrace();
             throw e;
+        } finally {
+            try { jarFile.close(); } catch (IOException ignore) {}
         }
     }