[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