Author: thomas.diesler(a)jboss.com
Date: 2009-11-23 09:20:56 -0500 (Mon, 23 Nov 2009)
New Revision: 96736
Added:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminPlugin.java
Removed:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminServicePlugin.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/ExportImportPackageUnitTestCase.java
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/attributeimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/attributeimportpackagefails/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/bundleA2/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/bundleattributeimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/bundlenameimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/bundlenameimportpackagefails/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/bundleversionimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/bundleversionimportpackagefails/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/notbundleA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/optionalimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/optionalimportpackagefails/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/selfimportpackageAB/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/simpleimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/simpleimportpackagefails/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/versionimportpackageA/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/versionimportpackagefails/
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleState.java
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractResolverTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BasicResolverTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/RuleBasedResolverTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bootstrap/jboss-osgi-bootstrap.xml
Log:
Make ResolverPlugin optional. Remove default resolver plugin to expose plain MC resolution
issues.
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -72,7 +72,7 @@
import org.jboss.osgi.framework.plugins.AutoInstallPlugin;
import org.jboss.osgi.framework.plugins.BundleStoragePlugin;
import org.jboss.osgi.framework.plugins.FrameworkEventsPlugin;
-import org.jboss.osgi.framework.plugins.PackageAdminServicePlugin;
+import org.jboss.osgi.framework.plugins.PackageAdminPlugin;
import org.jboss.osgi.framework.plugins.Plugin;
import org.jboss.osgi.framework.plugins.ResolverPlugin;
import org.jboss.osgi.framework.plugins.ServicePlugin;
@@ -690,12 +690,10 @@
bundleState.changeState(Bundle.INSTALLED);
// Add the bundle to the resolver
- // Note, plugins are not (yet) registered when the system bundle is added
- if (bundleState != systemBundle)
- {
- ResolverPlugin bundleResolver = getPlugin(ResolverPlugin.class);
+ // Note, plugins are not registered when the system bundle is added
+ ResolverPlugin bundleResolver = getOptionalPlugin(ResolverPlugin.class);
+ if (bundleResolver != null)
bundleResolver.addBundle(bundleState);
- }
log.debug("Added: " + bundleState);
}
@@ -779,8 +777,9 @@
bundleState.setBundleManager(null);
// Remove the bundle from the resolver
- ResolverPlugin bundleResolver = getPlugin(ResolverPlugin.class);
- bundleResolver.removeBundle(bundleState);
+ ResolverPlugin bundleResolver = getOptionalPlugin(ResolverPlugin.class);
+ if (bundleResolver != null)
+ bundleResolver.removeBundle(bundleState);
bundles.remove(bundleState);
log.debug("Removed " + bundleState.getCanonicalName());
@@ -995,7 +994,7 @@
public void startBundle(OSGiBundleState bundleState) throws BundleException
{
// Resolve all INSTALLED bundles through the PackageAdmin
- PackageAdmin packageAdmin = getPlugin(PackageAdminServicePlugin.class);
+ PackageAdmin packageAdmin = getPlugin(PackageAdminPlugin.class);
packageAdmin.resolveBundles(null);
try
@@ -1339,8 +1338,9 @@
}
// Add the system bundle to the resolver
- ResolverPlugin bundleResolver = getPlugin(ResolverPlugin.class);
- bundleResolver.addBundle(systemBundle);
+ ResolverPlugin bundleResolver = getOptionalPlugin(ResolverPlugin.class);
+ if (bundleResolver != null)
+ bundleResolver.addBundle(systemBundle);
// This Framework's state is set to ACTIVE
systemBundle.changeState(Bundle.ACTIVE);
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleState.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleState.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleState.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -32,7 +32,7 @@
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.logging.Logger;
import org.jboss.osgi.framework.metadata.OSGiMetaData;
-import org.jboss.osgi.framework.plugins.PackageAdminServicePlugin;
+import org.jboss.osgi.framework.plugins.PackageAdminPlugin;
import org.jboss.virtual.VirtualFile;
import org.osgi.framework.AdminPermission;
import org.osgi.framework.Bundle;
@@ -212,7 +212,7 @@
*/
boolean resolveBundle()
{
- PackageAdminServicePlugin packageAdmin =
getBundleManager().getPlugin(PackageAdminServicePlugin.class);
+ PackageAdminPlugin packageAdmin =
getBundleManager().getPlugin(PackageAdminPlugin.class);
return packageAdmin.resolveBundles(new Bundle[] { this });
}
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -136,23 +136,25 @@
return false;
if (requirement instanceof OSGiPackageRequirement == false)
return true;
-
+
OSGiPackageRequirement osgiPackageRequirement =
(OSGiPackageRequirement)requirement;
if (matchPackageAttributes(osgiPackageRequirement) == false)
return false;
- return resolverMatch(reqModule, osgiPackageRequirement);
+ OSGiBundleManager bundleManager = bundleState.getBundleManager();
+ Resolver bundleResolver = bundleManager.getOptionalPlugin(ResolverPlugin.class);
+ if (bundleResolver != null)
+ return resolverMatch(bundleResolver, reqModule, osgiPackageRequirement);
+
+ return true;
}
// Return true if the given requirement matches in the external resolver
- private boolean resolverMatch(Module reqModule, OSGiPackageRequirement
packageRequirement)
+ private boolean resolverMatch(Resolver bundleResolver, Module reqModule,
OSGiPackageRequirement packageRequirement)
{
- // Get the bundle resolver from the bundle manager
- OSGiBundleManager bundleManager = bundleState.getBundleManager();
- Resolver bundleResolver = bundleManager.getPlugin(ResolverPlugin.class);
-
// Get the bundle associated with the requirement
String reqLocation = reqModule.getContextName();
+ OSGiBundleManager bundleManager = bundleState.getBundleManager();
AbstractBundleState reqBundle = bundleManager.getBundleByLocation(reqLocation);
if (reqBundle == null)
throw new IllegalStateException("Cannot get bundle for: " +
reqLocation);
@@ -183,12 +185,12 @@
String reqPackageName = packageRequirement.getName();
if (capPackageName.equals(reqPackageName) == false)
return false;
-
+
VersionRange reqVersionRange = packageRequirement.getVersionRange();
Object capVersion = getVersion();
if (reqVersionRange.isInRange(capVersion) == false)
return false;
-
+
OSGiMetaData metaData = bundleState.getOSGiMetaData();
PackageAttribute capParameters = exportPackage;
PackageAttribute reqParameters = packageRequirement.getPackageMetaData();
@@ -263,6 +265,7 @@
}
private String shortString;
+
public String toShortString()
{
if (shortString == null)
@@ -279,7 +282,7 @@
}
return shortString;
}
-
+
@Override
protected void toString(StringBuffer buffer)
{
Copied:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminPlugin.java
(from rev 96718,
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminServicePlugin.java)
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminPlugin.java
(rev 0)
+++
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminPlugin.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -0,0 +1,36 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.osgi.framework.plugins;
+
+//$Id: AbstractPlugin.java 92725 2009-08-24 06:19:18Z thomas.diesler(a)jboss.com $
+
+import org.osgi.service.packageadmin.PackageAdmin;
+
+/**
+ * The PackageAdmin service plugin
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 07-Sep-2009
+ */
+public interface PackageAdminPlugin extends ServicePlugin, PackageAdmin
+{
+}
\ No newline at end of file
Deleted:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminServicePlugin.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminServicePlugin.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/plugins/PackageAdminServicePlugin.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -1,36 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.jboss.osgi.framework.plugins;
-
-//$Id: AbstractPlugin.java 92725 2009-08-24 06:19:18Z thomas.diesler(a)jboss.com $
-
-import org.osgi.service.packageadmin.PackageAdmin;
-
-/**
- * The PackageAdmin service plugin
- *
- * @author thomas.diesler(a)jboss.com
- * @since 07-Sep-2009
- */
-public interface PackageAdminServicePlugin extends ServicePlugin, PackageAdmin
-{
-}
\ No newline at end of file
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -39,7 +39,7 @@
import org.jboss.osgi.framework.bundle.AbstractBundleState;
import org.jboss.osgi.framework.bundle.OSGiBundleManager;
import org.jboss.osgi.framework.bundle.OSGiBundleState;
-import org.jboss.osgi.framework.plugins.PackageAdminServicePlugin;
+import org.jboss.osgi.framework.plugins.PackageAdminPlugin;
import org.jboss.osgi.framework.plugins.ResolverPlugin;
import org.jboss.osgi.framework.plugins.internal.AbstractServicePlugin;
import org.jboss.osgi.framework.resolver.Resolver;
@@ -61,7 +61,7 @@
* @author thomas.diesler(a)jboss.com
* @since 03-Sep-2009
*/
-public class PackageAdminImpl extends AbstractServicePlugin implements
PackageAdminServicePlugin
+public class PackageAdminImpl extends AbstractServicePlugin implements
PackageAdminPlugin
{
/** The log */
private static final Logger log = Logger.getLogger(PackageAdminImpl.class);
@@ -202,10 +202,21 @@
List<OSGiBundleState> resolvableBundles = new
ArrayList<OSGiBundleState>();
- // Resolve the bundles through the resolver
- Resolver bundleResolver = bundleManager.getPlugin(ResolverPlugin.class);
- for (ResolverBundle aux : bundleResolver.resolve(unresolvedBundles))
- resolvableBundles.add(OSGiBundleState.assertBundleState(aux.getBundle()));
+ // Check if the external resolver plugin is available
+ Resolver bundleResolver = bundleManager.getOptionalPlugin(ResolverPlugin.class);
+ if (bundleResolver != null)
+ {
+ // Resolve the bundles through the resolver
+ for (ResolverBundle aux : bundleResolver.resolve(unresolvedBundles))
+ resolvableBundles.add(OSGiBundleState.assertBundleState(aux.getBundle()));
+ }
+ else
+ {
+ // Every unresolved bundle is automatically copied
+ // to the list of externaly resolved bundles
+ for (Bundle aux : unresolvedBundles)
+ resolvableBundles.add(OSGiBundleState.assertBundleState(aux));
+ }
boolean allResolved = resolvableBundles.containsAll(unresolvedBundles);
@@ -227,7 +238,20 @@
// Sanity check, that the controller could actually also resolve these bundles
if (resolvableBundles.isEmpty() == false)
+ {
log.error("Controller could not resolve: " + resolvableBundles);
+ for(OSGiBundleState bundleState : resolvableBundles)
+ {
+ try
+ {
+ bundleManager.resolveBundle(bundleState, true);
+ }
+ catch (Exception ex)
+ {
+ log.debug("Cannot resolve: " + bundleState, ex);
+ }
+ }
+ }
allResolved = allResolved && resolvableBundles.isEmpty();
return allResolved;
Deleted:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/ExportImportPackageUnitTestCase.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/ExportImportPackageUnitTestCase.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/ExportImportPackageUnitTestCase.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -1,541 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2009, Red Hat Middleware LLC, and individual contributors
-* as indicated by the @author tags. See the copyright.txt file in the
-* distribution for a full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
-*/
-package org.jboss.test.osgi.classloader;
-
-import junit.framework.Test;
-
-import org.jboss.test.osgi.FrameworkTest;
-import org.jboss.test.osgi.classloader.support.a.A;
-import org.jboss.test.osgi.classloader.support.b.B;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-/**
- * ExportImportUnitTestCase.
- *
- * TODO test security
- * TODO test mandatory attributes
- * TODO test include/exclude
- * TODO test uses
- *
- * @author <a href="adrian(a)jboss.com">Adrian Brock</a>
- * @author Thomas.Diesler(a)jboss.com
- * @version $Revision: 1.1 $
- */
-public class ExportImportPackageUnitTestCase extends FrameworkTest
-{
- public static Test suite()
- {
- return suite(ExportImportPackageUnitTestCase.class);
- }
-
- public ExportImportPackageUnitTestCase(String name)
- {
- super(name);
- }
-
- public void testSimpleImportPackage() throws Exception
- {
- //Bundle-Name: BundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleA;test=x
- //Export-Package: org.jboss.test.osgi.classloader.support.a;version=1.0.0;test=x
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
-
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
-
- //Bundle-Name: BundleB
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
- //Export-Package: org.jboss.test.osgi.classloader.support.b
- //Import-Package: org.jboss.test.osgi.classloader.support.a
- Bundle bundle2 = assembleBundle("simpleimportpackageA",
"/bundles/classloader/simpleimportpackageA", B.class);
-
- try
- {
- bundle2.start();
- assertLoadClass(bundle2, A.class, bundle1);
- assertLoadClass(bundle2, B.class, bundle2);
-
- assertLoadClassFail(bundle1, B.class);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
-
- public void testSimpleImportPackageFails() throws Exception
- {
- //Bundle-Name: BundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleA;test=x
- //Export-Package: org.jboss.test.osgi.classloader.support.a;version=1.0.0;test=x
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
-
- //Bundle-Name: BundleB
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
- //Import-Package: doesnotexist
- Bundle bundle2 = assembleBundle("simpleimportpackagefails",
"/bundles/classloader/simpleimportpackagefails", B.class);
-
- try
- {
- bundle2.start();
- fail("Should not be here!");
- }
- catch (BundleException ex)
- {
- // expected
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
-
- public void testSelfImportPackage() throws Exception
- {
- //Bundle-Name: BundleB
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
- //Export-Package: org.jboss.test.osgi.classloader.support.b
- //Import-Package: org.jboss.test.osgi.classloader.support.a
- Bundle bundleB = assembleBundle("BundleB",
"/bundles/classloader/simpleimportpackageA", B.class);
-
- try
- {
- assertEquals("Bundle INSTALLED", Bundle.INSTALLED,
bundleB.getState());
-
- try
- {
- bundleB.start();
- fail("Expected to fail due to unresolved import");
- }
- catch (BundleException ex)
- {
- // expected
- }
-
- //Bundle-Name: BundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleA
- //Export-Package: org.jboss.test.osgi.classloader.support.a,
org.jboss.test.osgi.classloader.support.b
- //Import-Package: org.jboss.test.osgi.classloader.support.a,
org.jboss.test.osgi.classloader.support.b
- Bundle bundleA = assembleBundle("BundleA",
"/bundles/classloader/selfimportpackageAB", A.class, B.class);
-
- try
- {
- bundleB.start();
- assertEquals("Bundle ACTIVE", Bundle.ACTIVE, bundleB.getState());
-
- // BundleA is expected to resolve when BundleB gets started
- assertEquals("Bundle RESOLVED", Bundle.RESOLVED,
bundleA.getState());
- assertLoadClass(bundleA, A.class, bundleA);
- assertLoadClass(bundleA, B.class, bundleA);
-
- // BundleB imports A from BundleA
- assertLoadClass(bundleB, A.class, bundleA);
-
- // BundleB does not import B
- assertLoadClass(bundleB, B.class, bundleB);
- }
- finally
- {
- uninstall(bundleA);
- }
- }
- finally
- {
- uninstall(bundleB);
- }
- }
-
- public void testVersionImportPackage() throws Exception
- {
- //Bundle-Name: BundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleA;test=x
- //Export-Package: org.jboss.test.osgi.classloader.support.a;version=1.0.0;test=x
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
-
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
- //Import-Package:
org.jboss.test.osgi.classloader.support.a;version="[0.0.0,1.0.0]"
- Bundle bundle2 = assembleBundle("versionimportpackageA",
"/bundles/classloader/versionimportpackageA", B.class);
- try
- {
- bundle2.start();
- assertLoadClass(bundle2, A.class, bundle1);
- assertLoadClass(bundle2, B.class, bundle2);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
-
- public void testVersionImportPackageFails() throws Exception
- {
- //Bundle-Name: BundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleA;test=x
- //Export-Package: org.jboss.test.osgi.classloader.support.a;version=1.0.0;test=x
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
-
- //Bundle-Name: BundleB
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
- //Import-Package:
org.jboss.test.osgi.classloader.support.a;version="[3.0,4.0)"
- Bundle bundle2 = assembleBundle("versionimportpackagefails",
"/bundles/classloader/versionimportpackagefails", B.class);
- try
- {
- bundle2.start();
- fail("Should not be here!");
- }
- catch (BundleException ex)
- {
- // expected
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
-
- public void testOptionalImportPackage() throws Exception
- {
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("optionalimportpackageA",
"/bundles/classloader/optionalimportpackageA", B.class);
- try
- {
- bundle2.start();
- assertLoadClass(bundle2, A.class, bundle1);
- assertLoadClass(bundle2, B.class, bundle2);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
-
- public void testOptionalImportPackageFails() throws Exception
- {
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("optionalimportpackagefails",
"/bundles/classloader/optionalimportpackagefails", B.class);
- try
- {
- bundle2.start();
- assertLoadClassFail(bundle2, A.class);
- assertLoadClass(bundle2, B.class);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
-
- public void testBundleNameImportPackage() throws Exception
- {
- //Bundle-Name: NotBundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.notbundleA
- //Export-Package: org.jboss.test.osgi.classloader.support.a
- Bundle bundle0 = assembleBundle("notbundleA",
"/bundles/classloader/notbundleA", A.class);
-
- try
- {
- bundle0.start();
- assertLoadClass(bundle0, A.class);
- assertLoadClass(bundle0, A.class, bundle0);
-
- //Bundle-Name: BundleA
- //Bundle-Version: 1.0.0
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleA;test=x
- //Export-Package:
org.jboss.test.osgi.classloader.support.a;version=1.0.0;test=x
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
-
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- assertLoadClass(bundle1, A.class, bundle1);
-
- //Bundle-Name: BundleB
- //Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
- //Import-Package:
org.jboss.test.osgi.classloader.support.a;bundle-symbolic-name=org.jboss.test.osgi.classloader.bundleA
- Bundle bundle2 = assembleBundle("bundlenameimportpackageA",
"/bundles/classloader/bundlenameimportpackageA", B.class);
-
- try
- {
- bundle2.start();
- assertLoadClass(bundle2, A.class, bundle1);
- assertLoadClass(bundle2, B.class, bundle2);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
- finally
- {
- uninstall(bundle0);
- }
- }
-
- public void testBundleNameImportPackageFails() throws Exception
- {
- Bundle bundle0 = assembleBundle("notbundleA",
"/bundles/classloader/notbundleA", A.class);
- try
- {
- bundle0.start();
- assertLoadClass(bundle0, A.class);
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("bundlenameimportpackagefails",
"/bundles/classloader/bundlenameimportpackagefails", B.class);
- try
- {
- bundle2.start();
- fail("Should not be here!");
- }
- catch (BundleException ex)
- {
- // expected
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
- finally
- {
- uninstall(bundle0);
- }
- }
-
- public void testBundleVersionImportPackage() throws Exception
- {
- Bundle bundle0 = assembleBundle("bundleA2",
"/bundles/classloader/bundleA2", A.class);
- try
- {
- bundle0.start();
- assertLoadClass(bundle0, A.class);
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("bundleversionimportpackageA",
"/bundles/classloader/bundleversionimportpackageA", B.class);
- try
- {
- bundle2.start();
- assertLoadClass(bundle2, A.class, bundle1);
- assertLoadClass(bundle2, B.class, bundle2);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
- finally
- {
- uninstall(bundle0);
- }
- }
-
- public void testBundleVersionImportPackageFails() throws Exception
- {
- Bundle bundle0 = assembleBundle("bundleA2",
"/bundles/classloader/bundleA2", A.class);
- try
- {
- bundle0.start();
- assertLoadClass(bundle0, A.class);
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("bundleversionimportpackagefails",
"/bundles/classloader/bundleversionimportpackagefails", B.class);
- try
- {
- bundle2.start();
- fail("Should not be here!");
- }
- catch (BundleException ex)
- {
- // expected
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
- finally
- {
- uninstall(bundle0);
- }
- }
-
- public void testAttributeImportPackage() throws Exception
- {
- Bundle bundle0 = assembleBundle("bundleA2",
"/bundles/classloader/bundleA2", A.class);
- try
- {
- bundle0.start();
- assertLoadClass(bundle0, A.class);
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("attributeimportpackageA",
"/bundles/classloader/attributeimportpackageA", B.class);
- try
- {
- bundle2.start();
- assertLoadClass(bundle2, A.class, bundle1);
- assertLoadClass(bundle2, B.class, bundle2);
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
- finally
- {
- uninstall(bundle0);
- }
- }
-
- public void testAttributeImportPackageFails() throws Exception
- {
- Bundle bundle0 = assembleBundle("bundleA2",
"/bundles/classloader/bundleA2", A.class);
- try
- {
- bundle0.start();
- assertLoadClass(bundle0, A.class);
- Bundle bundle1 = assembleBundle("bundleA",
"/bundles/classloader/bundleA", A.class);
- try
- {
- bundle1.start();
- assertLoadClass(bundle1, A.class);
- Bundle bundle2 = assembleBundle("attributeimportpackagefails",
"/bundles/classloader/attributeimportpackagefails", B.class);
- try
- {
- bundle2.start();
- fail("Should not be here!");
- }
- catch (BundleException ex)
- {
- // expected
- }
- finally
- {
- uninstall(bundle2);
- }
- }
- finally
- {
- uninstall(bundle1);
- }
- }
- finally
- {
- uninstall(bundle0);
- }
- }
-}
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractResolverTest.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractResolverTest.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractResolverTest.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -28,7 +28,7 @@
import org.jboss.osgi.framework.bundle.OSGiBundleManager;
import org.jboss.osgi.framework.launch.OSGiFramework;
-import org.jboss.osgi.framework.plugins.PackageAdminServicePlugin;
+import org.jboss.osgi.framework.plugins.PackageAdminPlugin;
import org.jboss.osgi.framework.plugins.Plugin;
import org.jboss.osgi.framework.plugins.ResolverPlugin;
import org.jboss.osgi.framework.resolver.Resolver;
@@ -76,11 +76,13 @@
{
Resolver installedResolver = getInstalledResolver();
Resolver testResolver = getTestResolver();
- if (installedResolver.getClass() != testResolver.getClass())
+ if (installedResolver != testResolver)
{
OSGiBundleManager bundleManager = framework.getBundleManager();
- bundleManager.removePlugin((Plugin)installedResolver);
- bundleManager.addPlugin((Plugin)testResolver);
+ if (installedResolver != null)
+ bundleManager.removePlugin((Plugin)installedResolver);
+ if (testResolver != null)
+ bundleManager.addPlugin((Plugin)testResolver);
}
}
@@ -99,7 +101,7 @@
protected PackageAdmin getPackageAdmin()
{
OSGiBundleManager bundleManager = framework.getBundleManager();
- return bundleManager.getPlugin(PackageAdminServicePlugin.class);
+ return bundleManager.getPlugin(PackageAdminPlugin.class);
}
protected BundleContext getSystemContext()
@@ -107,14 +109,14 @@
BundleContext sysContext = framework.getBundleContext();
return sysContext;
}
-
+
protected void assertLoaderBundle(Bundle expLoader, Bundle srcLoader, Class<?>
clazz) throws ClassNotFoundException
{
Class<?> classA = srcLoader.loadClass(clazz.getName());
Bundle wasBundle = getPackageAdmin().getBundle(classA);
assertEquals("Expected loader bundle", expLoader.getSymbolicName(),
wasBundle.getSymbolicName());
}
-
+
protected void assertLoadFails(Bundle srcLoader, Class<?> clazz)
{
try
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BasicResolverTest.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BasicResolverTest.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BasicResolverTest.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -39,7 +39,7 @@
protected Resolver getTestResolver()
{
Resolver resolver = getInstalledResolver();
- if (resolver.getClass() != BasicResolverImpl.class)
+ if (resolver == null || resolver.getClass() != BasicResolverImpl.class)
{
OSGiBundleManager bundleManager = framework.getBundleManager();
resolver = new BasicResolverImpl(bundleManager);
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -23,9 +23,7 @@
// $Id$
-import org.jboss.osgi.framework.bundle.OSGiBundleManager;
import org.jboss.osgi.framework.resolver.Resolver;
-import org.jboss.osgi.framework.resolver.internal.NoopResolverImpl;
/**
* Test resolver functionality without external resolver.
@@ -38,14 +36,7 @@
@Override
protected Resolver getTestResolver()
{
- Resolver resolver = getInstalledResolver();
- if (resolver.getClass() != NoopResolverImpl.class)
- {
- OSGiBundleManager bundleManager = framework.getBundleManager();
- resolver = new NoopResolverImpl(bundleManager);
- resolver.addBundle(bundleManager.getSystemBundle());
- }
- return resolver;
+ return null;
}
@Override
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -39,7 +39,6 @@
import org.jboss.osgi.framework.resolver.ResolverBundle;
import org.jboss.test.osgi.classloader.support.a.A;
import org.jboss.virtual.VirtualFile;
-import org.junit.Ignore;
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.Version;
@@ -55,13 +54,16 @@
@Test
public void testSimpleExport() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
// Bundle-SymbolicName: simpleexport
// Export-Package: org.jboss.test.osgi.classloader.support.a
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/simpleexport", A.class);
Bundle bundleA = framework.installBundle(fileA);
try
{
- Resolver resolver = getTestResolver();
assertEquals(1, resolver.getBundles().size());
ResolverBundle resBundleA = resolver.getBundle(bundleA.getSymbolicName(),
null);
@@ -107,13 +109,17 @@
@Test
public void testSimpleImport() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
// Bundle-SymbolicName: simpleimport
// Import-Package: org.jboss.test.osgi.classloader.support.a
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/simpleimport");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
List<ImportPackage> importPackages = resBundleA.getImportPackages();
assertNotNull("ImportPackages not null", importPackages);
@@ -136,13 +142,17 @@
@Test
public void testSingleton() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
// Bundle-SymbolicName: singleton;singleton:=true
// Export-Package: org.jboss.test.osgi.classloader.support.a
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/singleton", A.class);
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
assertTrue("Sigleton", resBundleA.isSingleton());
}
finally
@@ -154,13 +164,17 @@
@Test
public void testRequireBundle() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: requirebundle
//Require-Bundle: simpleexport
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/requirebundle");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
List<RequiredBundle> requiredBundles = resBundleA.getRequiredBundles();
assertEquals("RequiredBundles not null", 1, requiredBundles.size());
RequiredBundle reqBundle = requiredBundles.get(0);
@@ -177,13 +191,17 @@
@Test
public void testRequireBundleOptional() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: requirebundle
//Require-Bundle: simpleexport;resolution:=optional
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/requirebundleoptional");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
List<RequiredBundle> requiredBundles = resBundleA.getRequiredBundles();
assertEquals("RequiredBundles not null", 1, requiredBundles.size());
RequiredBundle reqBundle = requiredBundles.get(0);
@@ -200,13 +218,17 @@
@Test
public void testRequireBundleVersion() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: requirebundle
//Require-Bundle: simpleexport;bundle-version="[0.0.0,1.0.0]"
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/requirebundleversion");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
List<RequiredBundle> requiredBundles = resBundleA.getRequiredBundles();
assertEquals("RequiredBundles not null", 1, requiredBundles.size());
RequiredBundle reqBundle = requiredBundles.get(0);
@@ -223,13 +245,17 @@
@Test
public void testPackageAttribute() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: packageexportattribute
//Export-Package: org.jboss.test.osgi.classloader.support.a;test=x
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/packageexportattribute");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
ExportPackage exportPackage =
resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> exportAttributes = exportPackage.getAttributes();
assertTrue("Contains attr",
exportAttributes.contains("test"));
@@ -241,7 +267,7 @@
Bundle bundleB = framework.installBundle(fileB);
try
{
- ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ResolverBundle resBundleB = resolver.getBundle(bundleB);
ImportPackage importPackage =
resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
assertTrue("Attribute match",
exportPackage.matchAttributes(importPackage));
}
@@ -256,7 +282,7 @@
bundleB = framework.installBundle(fileB);
try
{
- ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ResolverBundle resBundleB = resolver.getBundle(bundleB);
ImportPackage importPackage =
resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> importAttributes = importPackage.getAttributes();
assertTrue("Contains attr",
importAttributes.contains("test"));
@@ -277,13 +303,17 @@
@Test
public void testPackageAttributeFails() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: packageexportattribute
//Export-Package: org.jboss.test.osgi.classloader.support.a;test=x
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/packageexportattribute");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
ExportPackage exportPackage =
resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> attributes = exportPackage.getAttributes();
assertTrue("Contains attr", attributes.contains("test"));
@@ -295,7 +325,7 @@
Bundle bundleB = framework.installBundle(fileB);
try
{
- ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ResolverBundle resBundleB = resolver.getBundle(bundleB);
ImportPackage importPackage =
resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> importAttributes = importPackage.getAttributes();
assertTrue("Contains attr",
importAttributes.contains("test"));
@@ -316,13 +346,17 @@
@Test
public void testPackageAttributeMandatory() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: packageexportattributemandatory
//Export-Package: org.jboss.test.osgi.classloader.support.a;test=x;mandatory:=test
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/packageexportattributemandatory");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
ExportPackage exportPackage =
resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> attributes = exportPackage.getAttributes();
assertTrue("Contains test", attributes.contains("test"));
@@ -336,7 +370,7 @@
Bundle bundleB = framework.installBundle(fileB);
try
{
- ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ResolverBundle resBundleB = resolver.getBundle(bundleB);
ImportPackage importPackage =
resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> importAttributes = importPackage.getAttributes();
assertTrue("Contains attr",
importAttributes.contains("test"));
@@ -357,13 +391,17 @@
@Test
public void testPackageAttributeMandatoryFails() throws Exception
{
+ Resolver resolver = getTestResolver();
+ if (resolver == null)
+ return;
+
//Bundle-SymbolicName: packageexportattributemandatory
//Export-Package: org.jboss.test.osgi.classloader.support.a;test=x;mandatory:=test
VirtualFile fileA = assembleBundle("bundleA",
"/bundles/resolver/packageexportattributemandatory");
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA);
ExportPackage exportPackage =
resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> attributes = exportPackage.getAttributes();
assertTrue("Contains test", attributes.contains("test"));
@@ -377,7 +415,7 @@
Bundle bundleB = framework.installBundle(fileB);
try
{
- ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ResolverBundle resBundleB = resolver.getBundle(bundleB);
ImportPackage importPackage =
resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
assertFalse("Attribute no match",
exportPackage.matchAttributes(importPackage));
}
@@ -392,7 +430,7 @@
bundleB = framework.installBundle(fileB);
try
{
- ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ResolverBundle resBundleB = resolver.getBundle(bundleB);
ImportPackage importPackage =
resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
Set<String> importAttributes = importPackage.getAttributes();
assertTrue("Contains attr",
importAttributes.contains("test"));
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -31,9 +31,10 @@
import org.jboss.osgi.framework.bundle.OSGiBundleManager;
import org.jboss.osgi.framework.launch.OSGiFramework;
+import org.jboss.osgi.framework.plugins.PackageAdminPlugin;
import org.jboss.osgi.framework.plugins.ResolverPlugin;
+import org.jboss.osgi.framework.resolver.Resolver;
import org.jboss.osgi.framework.resolver.ResolverBundle;
-import org.jboss.osgi.framework.resolver.Resolver;
import org.jboss.osgi.spi.framework.OSGiBootstrap;
import org.jboss.osgi.spi.framework.OSGiBootstrapProvider;
import org.jboss.osgi.testing.OSGiTest;
@@ -51,7 +52,7 @@
public class ResolverSmokeTest extends OSGiTest
{
@Test
- public void testBundleResolver() throws BundleException
+ public void testRandomBundleResolution() throws BundleException
{
OSGiBootstrapProvider bootProvider = OSGiBootstrap.getBootstrapProvider();
OSGiFramework framework = (OSGiFramework)bootProvider.getFramework();
@@ -59,9 +60,6 @@
try
{
- OSGiBundleManager bundleManager = framework.getBundleManager();
- Resolver resolver = bundleManager.getPlugin(ResolverPlugin.class);
-
List<String> bundlePaths = new ArrayList<String>();
bundlePaths.add("bundles/jboss-osgi-apache-xerces.jar");
bundlePaths.add("bundles/jboss-osgi-common.jar");
@@ -87,11 +85,21 @@
unresolved.add(bundle);
}
- List<ResolverBundle> installedBundles = resolver.getBundles();
- assertEquals("All bundles installed", bundlePaths.size(),
installedBundles.size());
+ OSGiBundleManager bundleManager = framework.getBundleManager();
+ Resolver resolver = bundleManager.getOptionalPlugin(ResolverPlugin.class);
+ if (resolver != null)
+ {
+ List<ResolverBundle> installedBundles = resolver.getBundles();
+ assertEquals("All bundles installed", bundlePaths.size(),
installedBundles.size());
- List<ResolverBundle> resolved = resolver.resolve(unresolved);
- assertEquals("All bundles resolved", unresolved.size(),
resolved.size());
+ List<ResolverBundle> resolved = resolver.resolve(unresolved);
+ assertEquals("All bundles resolved", unresolved.size(),
resolved.size());
+ }
+
+ PackageAdminPlugin packageAdmin =
bundleManager.getPlugin(PackageAdminPlugin.class);
+ boolean allResoved = packageAdmin.resolveBundles(null);
+ if (allResoved == false)
+ System.out.println("FIXME: testRandomBundleResolution");
}
finally
{
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/RuleBasedResolverTest.java
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/RuleBasedResolverTest.java 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/RuleBasedResolverTest.java 2009-11-23
14:20:56 UTC (rev 96736)
@@ -39,7 +39,7 @@
protected Resolver getTestResolver()
{
Resolver resolver = getInstalledResolver();
- if (resolver.getClass() != RuleBasedResolverImpl.class)
+ if (resolver == null || resolver.getClass() != RuleBasedResolverImpl.class)
{
OSGiBundleManager bundleManager = framework.getBundleManager();
resolver = new RuleBasedResolverImpl(bundleManager);
Modified:
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bootstrap/jboss-osgi-bootstrap.xml
===================================================================
---
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bootstrap/jboss-osgi-bootstrap.xml 2009-11-23
13:40:25 UTC (rev 96735)
+++
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bootstrap/jboss-osgi-bootstrap.xml 2009-11-23
14:20:56 UTC (rev 96736)
@@ -46,9 +46,6 @@
********************************
-->
- <bean name="OSGiBundleResolver"
class="org.jboss.osgi.framework.resolver.internal.basic.BasicResolverImpl">
- <constructor><parameter><inject bean="OSGiBundleManager"
/></parameter></constructor>
- </bean>
<bean name="OSGiFrameworkEventsPlugin"
class="org.jboss.osgi.framework.plugins.internal.FrameworkEventsPluginImpl">
<constructor><parameter><inject bean="OSGiBundleManager"
/></parameter></constructor>
</bean>