[jboss-osgi-commits] JBoss-OSGI SVN: r96736 - in projects/jboss-osgi/trunk/reactor/framework/src: main/java/org/jboss/osgi/framework/classloading and 6 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Mon Nov 23 09:20:57 EST 2009


Author: thomas.diesler at 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 at jboss.com $
+
+import org.osgi.service.packageadmin.PackageAdmin;
+
+/**
+ * The PackageAdmin service plugin
+ * 
+ * @author thomas.diesler at 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 at jboss.com $
-
-import org.osgi.service.packageadmin.PackageAdmin;
-
-/**
- * The PackageAdmin service plugin
- * 
- * @author thomas.diesler at 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 at 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 at jboss.com">Adrian Brock</a>
- * @author Thomas.Diesler at 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>



More information about the jboss-osgi-commits mailing list