[jboss-cvs] JBossAS SVN: r93174 - in projects/jboss-osgi/projects/bundles/common/trunk: src/main/java/org/jboss/osgi/common/internal and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 3 11:02:41 EDT 2009


Author: thomas.diesler at jboss.com
Date: 2009-09-03 11:02:41 -0400 (Thu, 03 Sep 2009)
New Revision: 93174

Modified:
   projects/jboss-osgi/projects/bundles/common/trunk/pom.xml
   projects/jboss-osgi/projects/bundles/common/trunk/src/main/java/org/jboss/osgi/common/internal/SystemDeployerService.java
Log:
Use PackageAdmin in to resolve before start

Modified: projects/jboss-osgi/projects/bundles/common/trunk/pom.xml
===================================================================
--- projects/jboss-osgi/projects/bundles/common/trunk/pom.xml	2009-09-03 15:01:04 UTC (rev 93173)
+++ projects/jboss-osgi/projects/bundles/common/trunk/pom.xml	2009-09-03 15:02:41 UTC (rev 93174)
@@ -83,6 +83,7 @@
                org.jboss.osgi.spi.util;version="1.0",
                org.osgi.framework;version=1.4,
                org.osgi.service.log;version=1.3,
+               org.osgi.service.packageadmin;version=1.2,
                org.osgi.service.startlevel;version=1.1,
                org.osgi.util.tracker
             </Import-Package>

Modified: projects/jboss-osgi/projects/bundles/common/trunk/src/main/java/org/jboss/osgi/common/internal/SystemDeployerService.java
===================================================================
--- projects/jboss-osgi/projects/bundles/common/trunk/src/main/java/org/jboss/osgi/common/internal/SystemDeployerService.java	2009-09-03 15:01:04 UTC (rev 93173)
+++ projects/jboss-osgi/projects/bundles/common/trunk/src/main/java/org/jboss/osgi/common/internal/SystemDeployerService.java	2009-09-03 15:02:41 UTC (rev 93174)
@@ -40,6 +40,7 @@
 import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.log.LogService;
+import org.osgi.service.packageadmin.PackageAdmin;
 import org.osgi.service.startlevel.StartLevel;
 import org.osgi.util.tracker.ServiceTracker;
 
@@ -65,7 +66,7 @@
    public void deploy(BundleDeployment[] depArr) throws BundleException
    {
       DeploymentRegistryService registry = getDeploymentRegistry();
-      
+
       Map<BundleDeployment, Bundle> bundleMap = new HashMap<BundleDeployment, Bundle>();
       for (BundleDeployment dep : depArr)
       {
@@ -77,7 +78,7 @@
 
             registerManagedBundle(bundle);
             bundleMap.put(dep, bundle);
-            
+
             registry.registerBundleDeployment(dep);
          }
          catch (BundleException ex)
@@ -86,11 +87,17 @@
          }
       }
 
+      // Get the optional PackageAdmin
+      PackageAdmin packageAdmin = null;
+      ServiceReference sref = context.getServiceReference(PackageAdmin.class.getName());
+      if (sref != null)
+         packageAdmin = (PackageAdmin)context.getService(sref);
+      
       // Start the installed bundles
       for (BundleDeployment dep : depArr)
       {
          Bundle bundle = bundleMap.get(dep);
-         
+
          StartLevel startLevel = getStartLevel();
          if (dep.getStartLevel() > 0)
          {
@@ -99,23 +106,35 @@
 
          if (dep.isAutoStart())
          {
-            ExportedPackageHelper packageHelper = new ExportedPackageHelper(context);
-            try
+            int state = bundle.getState();
+            if (state == Bundle.INSTALLED && packageAdmin != null)
             {
-               log.log(LogService.LOG_DEBUG, "Start: " + bundle);
+               if (packageAdmin.resolveBundles(new Bundle[] { bundle }) == false)
+                  log.log(LogService.LOG_INFO, "Cannot resolve bundle: " + bundle);
                
-               // Added support for Bundle.START_ACTIVATION_POLICY on start
-               // http://issues.apache.org/jira/browse/FELIX-1317
-               // bundle.start(Bundle.START_ACTIVATION_POLICY);
-               
-               bundle.start();
-               
-               log.log(LogService.LOG_INFO, "Started: " + bundle);
-               packageHelper.logExportedPackages(bundle);
+               state = bundle.getState();
             }
-            catch (BundleException ex)
+            
+            if (state == Bundle.RESOLVED || packageAdmin == null)
             {
-               log.log(LogService.LOG_ERROR, "Cannot start bundle: " + bundle, ex);
+               try
+               {
+                  log.log(LogService.LOG_DEBUG, "Start: " + bundle);
+
+                  // Added support for Bundle.START_ACTIVATION_POLICY on start
+                  // http://issues.apache.org/jira/browse/FELIX-1317
+                  // bundle.start(Bundle.START_ACTIVATION_POLICY);
+
+                  bundle.start();
+
+                  log.log(LogService.LOG_INFO, "Started: " + bundle);
+                  ExportedPackageHelper packageHelper = new ExportedPackageHelper(context);
+                  packageHelper.logExportedPackages(bundle);
+               }
+               catch (BundleException ex)
+               {
+                  log.log(LogService.LOG_ERROR, "Cannot start bundle: " + bundle, ex);
+               }
             }
          }
       }
@@ -124,14 +143,14 @@
    public void undeploy(BundleDeployment[] depArr) throws BundleException
    {
       DeploymentRegistryService registry = getDeploymentRegistry();
-      
+
       for (BundleDeployment dep : depArr)
       {
          Bundle bundle = getBundle(dep);
          if (bundle != null)
          {
             registry.unregisterBundleDeployment(dep);
-            
+
             unregisterManagedBundle(bundle);
             bundle.uninstall();
             log.log(LogService.LOG_INFO, "Uninstalled: " + bundle);
@@ -213,7 +232,7 @@
          log.log(LogService.LOG_DEBUG, "No ManagedBundleService. Cannot unregister managed bundle: " + bundle);
       }
    }
-   
+
    private DeploymentRegistryService getDeploymentRegistry()
    {
       if (registryTracker == null)
@@ -223,7 +242,7 @@
       }
       return (DeploymentRegistryService)registryTracker.getService();
    }
-   
+
    private StartLevel getStartLevel()
    {
       if (startLevelTracker == null)




More information about the jboss-cvs-commits mailing list