You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2012/01/09 10:37:00 UTC

svn commit: r1229075 - in /geronimo/server/trunk: framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/ framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/ plugins/jasper/ger...

Author: xuhaihong
Date: Mon Jan  9 09:36:59 2012
New Revision: 1229075

URL: http://svn.apache.org/viewvc?rev=1229075&view=rev
Log:
GERONIMO-6251 More changes to use OsgiMetaDataProvider, update the interface a bit.
GERONIMO-6254 Shared library does not work in the deployment process

Modified:
    geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java
    geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java
    geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java
    geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/OsgiMetaDataProvider.java
    geronimo/server/trunk/plugins/jasper/geronimo-jasper/src/main/java/org/apache/geronimo/jasper/internal/TldRegistryImpl.java
    geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/config/resource/osgi/ConfigRegistryImpl.java
    geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java
    geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLibExtender.java

Modified: geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiBuildContext.java Mon Jan  9 09:36:59 2012
@@ -129,7 +129,7 @@ public class OSGiBuildContext {
         if (clientModule) {
             return getFullClientDependentBundleIds(bundle.getBundleId());
         }
-        return osgiMetaDataProvider.getFullDependentBundleIds(bundle);
+        return osgiMetaDataProvider.getFullDependentBundleIds(bundle.getBundleId());
     }
 
     private Set<Long> getFullClientDependentBundleIds(long bundleId) {

Modified: geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/util/osgi/OSGiMetaDataBuilder.java Mon Jan  9 09:36:59 2012
@@ -29,7 +29,6 @@ import org.apache.geronimo.kernel.Intern
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.repository.ArtifactResolver;
 import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.system.configuration.DependencyManager;
 import org.apache.geronimo.system.configuration.OsgiMetaDataProvider;
 import org.apache.xbean.osgi.bundle.util.BundleDescription.ExportPackage;
 import org.apache.xbean.osgi.bundle.util.HeaderParser;

Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/DependencyManager.java Mon Jan  9 09:36:59 2012
@@ -261,7 +261,7 @@ public class DependencyManager implement
     }
 
     @Override
-    public Set<ExportPackage> getExportedPackages(Long bundleId) {
+    public Set<ExportPackage> getExportedPackages(long bundleId) {
         synchronized (bundleExportPackagesMap) {
             Set<ExportPackage> exportPackages = bundleExportPackagesMap.get(bundleId);
             if (exportPackages == null) {
@@ -296,7 +296,7 @@ public class DependencyManager implement
         return getFullDependentBundles(bundle.getBundleId());
     }
 
-    public Set<Bundle> getFullDependentBundles(Long bundleId) {
+    public Set<Bundle> getFullDependentBundles(long bundleId) {
         Set<Long> fullDependentBundleIds = getFullDependentBundleIds(bundleId);
         if (fullDependentBundleIds.size() == 0) {
             return Collections.<Bundle> emptySet();
@@ -310,13 +310,13 @@ public class DependencyManager implement
         }
         return dependentBundles;
     }
-
-    @Override
+    
     public Set<Long> getFullDependentBundleIds(Bundle bundle) {
         return getFullDependentBundleIds(bundle.getBundleId());
     }
 
-    public Set<Long> getFullDependentBundleIds(Long bundleId) {
+    @Override
+    public Set<Long> getFullDependentBundleIds(long bundleId) {
         Set<Long> fullDependentBundleIds = fullDependentBundleIdsMap.get(bundleId);
         return fullDependentBundleIds == null ? Collections.<Long> emptySet() : new HashSet<Long>(fullDependentBundleIds);
     }
@@ -448,10 +448,9 @@ public class DependencyManager implement
     }
 
     private void removeArtifactBundleEntry(Bundle bundle) {
-        Artifact artifact = toArtifact(bundle.getLocation());
+        Artifact artifact = bundleIdArtifactMap.remove(bundle.getBundleId());
         if (artifact != null) {
             artifactBundleMap.remove(artifact);
-            bundleIdArtifactMap.remove(bundle.getBundleId());
         }
     }
 

Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/OsgiMetaDataProvider.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/OsgiMetaDataProvider.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/OsgiMetaDataProvider.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/OsgiMetaDataProvider.java Mon Jan  9 09:36:59 2012
@@ -33,9 +33,11 @@ import org.osgi.framework.Bundle;
 public interface OsgiMetaDataProvider {
     Set<BundleDescription.ExportPackage> getExportedPackages(Bundle bundle);
 
-    Set<BundleDescription.ExportPackage> getExportedPackages(Long bundleId);
+    Set<BundleDescription.ExportPackage> getExportedPackages(long bundleId);
 
-    Set<Long> getFullDependentBundleIds(Bundle bundle);
+    Set<Long> getFullDependentBundleIds(long bundleId);
+    
+    Set<Bundle> getFullDependentBundles(long bundleId);
 
     Bundle getBundle(Artifact artifact);
 

Modified: geronimo/server/trunk/plugins/jasper/geronimo-jasper/src/main/java/org/apache/geronimo/jasper/internal/TldRegistryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper/src/main/java/org/apache/geronimo/jasper/internal/TldRegistryImpl.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jasper/geronimo-jasper/src/main/java/org/apache/geronimo/jasper/internal/TldRegistryImpl.java (original)
+++ geronimo/server/trunk/plugins/jasper/geronimo-jasper/src/main/java/org/apache/geronimo/jasper/internal/TldRegistryImpl.java Mon Jan  9 09:36:59 2012
@@ -31,9 +31,10 @@ import java.util.zip.ZipEntry;
 import org.apache.geronimo.jasper.TldProvider;
 import org.apache.geronimo.jasper.TldRegistry;
 import org.apache.geronimo.system.configuration.DependencyManager;
+import org.apache.geronimo.system.configuration.OsgiMetaDataProvider;
 import org.apache.xbean.osgi.bundle.util.BundleResourceFinder;
-import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.apache.xbean.osgi.bundle.util.BundleResourceFinder.ResourceFinderCallback;
+import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
@@ -72,11 +73,11 @@ public class TldRegistryImpl implements 
         Set<Bundle> dependentBundles = new HashSet<Bundle>();
         
         // add in bundles from dependency manager
-        ServiceReference serviceReference = bundleContext.getServiceReference(DependencyManager.class.getName());
+        ServiceReference serviceReference = bundleContext.getServiceReference(OsgiMetaDataProvider.class.getName());
         if (serviceReference != null) {
-            DependencyManager dependencyManager = (DependencyManager) bundleContext.getService(serviceReference);
+            OsgiMetaDataProvider osgiMetaDataProvider = (OsgiMetaDataProvider) bundleContext.getService(serviceReference);
             try {
-                dependentBundles.addAll(dependencyManager.getFullDependentBundles(bundle.getBundleId()));
+                dependentBundles.addAll(osgiMetaDataProvider.getFullDependentBundles(bundle.getBundleId()));
             } finally {
                 bundleContext.ungetService(serviceReference);
             }

Modified: geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/config/resource/osgi/ConfigRegistryImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/config/resource/osgi/ConfigRegistryImpl.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/config/resource/osgi/ConfigRegistryImpl.java (original)
+++ geronimo/server/trunk/plugins/myfaces/geronimo-myfaces/src/main/java/org/apache/geronimo/myfaces/config/resource/osgi/ConfigRegistryImpl.java Mon Jan  9 09:36:59 2012
@@ -33,6 +33,7 @@ import org.apache.geronimo.kernel.util.I
 import org.apache.geronimo.myfaces.FacesConfigDigester;
 import org.apache.geronimo.myfaces.config.resource.osgi.api.ConfigRegistry;
 import org.apache.geronimo.system.configuration.DependencyManager;
+import org.apache.geronimo.system.configuration.OsgiMetaDataProvider;
 import org.apache.myfaces.config.element.FacesConfig;
 import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.osgi.framework.Bundle;
@@ -128,9 +129,9 @@ public class ConfigRegistryImpl implemen
         Set<Bundle> dependentBundles = new HashSet<Bundle>();
         
         // add in bundles from dependency manager
-        ServiceReference serviceReference = bundleContext.getServiceReference(DependencyManager.class.getName());
+        ServiceReference serviceReference = bundleContext.getServiceReference(OsgiMetaDataProvider.class.getName());
         if (serviceReference != null) {
-            DependencyManager dependencyManager = (DependencyManager) bundleContext.getService(serviceReference);
+            OsgiMetaDataProvider dependencyManager = (DependencyManager) bundleContext.getService(serviceReference);
             try {
                 dependentBundles.addAll(dependencyManager.getFullDependentBundles(bundleId));
             } finally {

Modified: geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java (original)
+++ geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLib.java Mon Jan  9 09:36:59 2012
@@ -20,7 +20,6 @@ package org.apache.geronimo.system.share
 import java.io.File;
 import java.io.FileWriter;
 import java.io.PrintWriter;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -131,12 +130,6 @@ public class SharedLib implements GBeanL
         String dynamicImportPackages = (String)bundleContext.getBundle().getHeaders().get(Constants.DYNAMICIMPORT_PACKAGE);
         if (dynamicImportPackages != null) {
             List<HeaderElement> headerElements = HeaderParser.parseHeader(dynamicImportPackages);
-            //From shared library perspective, dynamic * should not be used
-            for (Iterator<HeaderElement> it = headerElements.iterator(); it.hasNext();) {
-                if (it.next().getName().equals("*")) {
-                    it.remove();
-                }
-            }
             if (headerElements.size() > 0) {
                 manifest.addConfiguredAttribute(new Manifest.Attribute(Manifest.Attribute.Separator.COMMA, Constants.DYNAMICIMPORT_PACKAGE, HeaderBuilder.build(headerElements)));
             }
@@ -161,7 +154,7 @@ public class SharedLib implements GBeanL
             BundleUtils.resolve(sharedLibBundle);
         }
         //5. register the shared library bundle to the shared library bundle extender
-        ServiceReference sharedLibExtenderReference = null;
+        ServiceReference<?> sharedLibExtenderReference = null;
         try {
             sharedLibExtenderReference = bundleContext.getServiceReference(SharedLibExtender.class.getName());
             if (sharedLibExtenderReference != null) {
@@ -244,7 +237,7 @@ public class SharedLib implements GBeanL
             delegatingBundle.removeBundle(sharedLibBundle);
         }
         //2. unregister the share lib bundle to the share lib bundle extender
-        ServiceReference sharedLibExtenderReference = null;
+        ServiceReference<?> sharedLibExtenderReference = null;
         try {
             sharedLibExtenderReference = bundleContext.getServiceReference(SharedLibExtender.class.getName());
             if (sharedLibExtenderReference != null) {

Modified: geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLibExtender.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLibExtender.java?rev=1229075&r1=1229074&r2=1229075&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLibExtender.java (original)
+++ geronimo/server/trunk/plugins/sharedlib/geronimo-sharedlib/src/main/java/org/apache/geronimo/system/sharedlib/SharedLibExtender.java Mon Jan  9 09:36:59 2012
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantLock;
 
@@ -32,9 +33,9 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.geronimo.hook.BundleHelper;
 import org.apache.geronimo.hook.SharedLibraryRegistry;
-import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.config.ConfigurationManager;
 import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.system.configuration.OsgiMetaDataProvider;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.BundleEvent;
@@ -54,7 +55,7 @@ public class SharedLibExtender implement
     private BundleContext bundleContext;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    private ConfigurationManager configurationManager;
+    private OsgiMetaDataProvider osgiMetaDataProvider;
 
     private Map<Artifact, List<Bundle>> configruationSharedLibBundlesMap = new ConcurrentHashMap<Artifact, List<Bundle>>();
 
@@ -62,23 +63,23 @@ public class SharedLibExtender implement
 
     private final ReentrantLock registerLock = new ReentrantLock();
 
-//    public SharedLibExtender(@ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext,
-//            @ParamReference(name = "DependencyManager") DependencyManager dependencyManager,
-//            @ParamReference(name = "ConfigurationManager", namingType = "ConfigurationManager") ConfigurationManager configurationManager) {
-//        this.bundleContext = bundleContext;
-//        this.configurationManager = configurationManager;
-//    }
-    
-    public void setConfigurationManager(ConfigurationManager configurationManager) {
-        this.configurationManager = configurationManager;
-    }
-
-    public void unsetConfigurationManager(ConfigurationManager configurationManager) {
-        if (this.configurationManager == configurationManager) {
-            this.configurationManager = null;
+    //    public SharedLibExtender(@ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext,
+    //            @ParamReference(name = "DependencyManager") DependencyManager dependencyManager,
+    //            @ParamReference(name = "ConfigurationManager", namingType = "ConfigurationManager") ConfigurationManager configurationManager) {
+    //        this.bundleContext = bundleContext;
+    //        this.configurationManager = configurationManager;
+    //    }
+
+    public void setOsgiMetaDataProvider(OsgiMetaDataProvider osgiMetaDataProvider) {
+        this.osgiMetaDataProvider = osgiMetaDataProvider;
+    }
+
+    public void unsetOsgiMetaDataProvider(OsgiMetaDataProvider osgiMetaDataProvider) {
+        if (this.osgiMetaDataProvider == osgiMetaDataProvider) {
+            this.osgiMetaDataProvider = null;
         }
     }
-    
+
     @Activate
     public void activate(BundleContext bundleContext) throws Exception {
         this.bundleContext = bundleContext;
@@ -121,13 +122,18 @@ public class SharedLibExtender implement
     }
 
     private void installSharedLibs(Bundle appBundle) {
-        Configuration configuration = configurationManager.getConfiguration(appBundle.getBundleId());
-        if (configuration == null) {
+        if (osgiMetaDataProvider == null) {
+            logger.warn("No OsgiMetaDataProvider service found, shared libs will not be installed for the application bundle {}", appBundle.getSymbolicName());
             return;
         }
+        Set<Long> dependentBundleIds = osgiMetaDataProvider.getFullDependentBundleIds(appBundle.getBundleId());
         List<Bundle> dependentSharedLibBundles = new ArrayList<Bundle>();
-        for (Artifact parentArtifact : configuration.getDependencyNode().getParents()) {
-            List<Bundle> sharedLibBundles = configruationSharedLibBundlesMap.get(parentArtifact);
+        for (long dependentBundleId : dependentBundleIds) {
+            Artifact currArtifact = osgiMetaDataProvider.getArtifact(dependentBundleId);
+            if (currArtifact == null) {
+                continue;
+            }
+            List<Bundle> sharedLibBundles = configruationSharedLibBundlesMap.get(currArtifact);
             if (sharedLibBundles != null) {
                 dependentSharedLibBundles.addAll(sharedLibBundles);
             }