[jboss-cvs] JBossAS SVN: r96734 - in projects/jboss-osgi/trunk/reactor/framework/src: main/java/org/jboss/osgi/framework/classloading and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 23 07:48:25 EST 2009


Author: thomas.diesler at jboss.com
Date: 2009-11-23 07:48:24 -0500 (Mon, 23 Nov 2009)
New Revision: 96734

Added:
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NoopResolverImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java
Modified:
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java
   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/classloading/OSGiPackageCapability.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/AbstractResolver.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BundleCapability.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/drools/RuleBasedResolverImpl.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/classloader/RequireBundleUnitTestCase.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.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
Log:
Add the NoopResolverImpl

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/AbstractBundleState.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -608,9 +608,9 @@
     * 
     * @return the canonical name
     */
-   String getCanonicalName()
+   public String getCanonicalName()
    {
-      return getSymbolicName() + ":" + getVersion();
+      return getSymbolicName() + "-" + getVersion();
    }
 
    /**

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 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -21,6 +21,8 @@
 */
 package org.jboss.osgi.framework.bundle;
 
+import static org.jboss.osgi.spi.OSGiConstants.PROPERTY_AUTO_START;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -46,8 +48,8 @@
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.jar.Attributes;
+import java.util.jar.Manifest;
 import java.util.jar.Attributes.Name;
-import java.util.jar.Manifest;
 
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ControllerContext;
@@ -75,7 +77,6 @@
 import org.jboss.osgi.framework.plugins.ResolverPlugin;
 import org.jboss.osgi.framework.plugins.ServicePlugin;
 import org.jboss.osgi.framework.util.NoFilter;
-import static org.jboss.osgi.spi.OSGiConstants.PROPERTY_AUTO_START;
 import org.jboss.util.collection.ConcurrentSet;
 import org.jboss.virtual.VFS;
 import org.jboss.virtual.VFSUtils;
@@ -704,6 +705,7 @@
     * 
     * @param bundleState the bundle state
     */
+   @SuppressWarnings("deprecation")
    private void validateBundle(AbstractBundleState bundleState)
    {
       OSGiMetaData metaData = bundleState.getOSGiMetaData();
@@ -1162,7 +1164,7 @@
     * @param properties the properties
     * @return the service state
     */
-   @SuppressWarnings("unchecked")
+   @SuppressWarnings("rawtypes")
    OSGiServiceState registerService(AbstractBundleState bundleState, String[] clazzes, Object service, Dictionary properties)
    {
       OSGiServiceState result = new OSGiServiceState(bundleState, clazzes, service, properties);

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 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -25,7 +25,6 @@
 import java.util.StringTokenizer;
 
 import org.jboss.classloading.plugins.metadata.PackageCapability;
-import org.jboss.classloading.plugins.metadata.PackageRequirement;
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classloading.spi.metadata.Requirement;
 import org.jboss.classloading.spi.version.VersionRange;
@@ -36,10 +35,8 @@
 import org.jboss.osgi.framework.metadata.OSGiMetaData;
 import org.jboss.osgi.framework.metadata.PackageAttribute;
 import org.jboss.osgi.framework.metadata.Parameter;
-import org.jboss.osgi.framework.metadata.ParameterizedAttribute;
 import org.jboss.osgi.framework.metadata.internal.AbstractVersionRange;
 import org.jboss.osgi.framework.plugins.ResolverPlugin;
-import org.jboss.osgi.framework.resolver.ExportPackage;
 import org.jboss.osgi.framework.resolver.Resolver;
 import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
@@ -116,7 +113,7 @@
       this.bundleState = bundleState;
       this.exportPackage = exportPackage;
 
-      String mandatory = exportPackage.getAttributeValue(Constants.MANDATORY_DIRECTIVE, String.class);
+      String mandatory = exportPackage.getDirectiveValue(Constants.MANDATORY_DIRECTIVE, String.class);
       if (mandatory != null)
       {
          StringTokenizer tokens = new StringTokenizer(mandatory, ",");
@@ -139,12 +136,16 @@
          return false;
       if (requirement instanceof OSGiPackageRequirement == false)
          return true;
+      
+      OSGiPackageRequirement osgiPackageRequirement = (OSGiPackageRequirement)requirement;
+      if (matchPackageAttributes(osgiPackageRequirement) == false)
+         return false;
 
-      return isResolverMatch(reqModule, requirement);
+      return resolverMatch(reqModule, osgiPackageRequirement);
    }
 
    // Return true if the given requirement matches in the external resolver
-   private boolean isResolverMatch(Module reqModule, Requirement requirement)
+   private boolean resolverMatch(Module reqModule, OSGiPackageRequirement packageRequirement)
    {
       // Get the bundle resolver from the bundle manager
       OSGiBundleManager bundleManager = bundleState.getBundleManager();
@@ -157,20 +158,8 @@
          throw new IllegalStateException("Cannot get bundle for: " + reqLocation);
 
       // Get the exporter for this requirement
-      PackageRequirement packageRequirement = (PackageRequirement)requirement;
-      ExportPackage exporter = bundleResolver.getExporter(reqBundle, packageRequirement.getName());
-      if (exporter == null)
-         return false;
-      
-      // Get the exporters module
-      OSGiBundleState exporterState = OSGiBundleState.assertBundleState(exporter.getOwner().getBundle());
-      DeploymentUnit exporterUnit = exporterState.getDeploymentUnit();
-      Module exporterModule = exporterUnit.getAttachment(Module.class);
-      
-      // Match if the module associated with this capability
-      // is the same as the module assocated with the exporter 
-      Module thisModule = getModule();
-      return exporterModule == thisModule;
+      String packageName = packageRequirement.getName();
+      return bundleResolver.match(reqBundle, bundleState, packageName);
    }
 
    /**
@@ -188,7 +177,7 @@
    }
 
    @SuppressWarnings("deprecation")
-   public boolean match(OSGiPackageRequirement packageRequirement)
+   public boolean matchPackageAttributes(OSGiPackageRequirement packageRequirement)
    {
       String capPackageName = getName();
       String reqPackageName = packageRequirement.getName();
@@ -202,22 +191,20 @@
       
       OSGiMetaData metaData = bundleState.getOSGiMetaData();
       PackageAttribute capParameters = exportPackage;
-      PackageAttribute reqParameters = packageRequirement.getRequirePackage();
-      
+      PackageAttribute reqParameters = packageRequirement.getPackageMetaData();
+
       boolean validMatch = true;
 
       // Check all the manadatory attributes are present
       if (validMatch == true && mandatoryAttributes != null)
       {
-         if (reqParameters != null)
+         for (String mand : mandatoryAttributes)
          {
-            for (String mand : mandatoryAttributes)
+            Parameter reqAttributeValue = reqParameters.getAttribute(mand);
+            if (reqParameters == null || reqAttributeValue == null)
             {
-               if (reqParameters.getAttribute(mand) == null)
-               {
-                  validMatch = false;
-                  break;
-               }
+               validMatch = false;
+               break;
             }
          }
       }
@@ -243,9 +230,12 @@
                   if (range.isInRange(metaData.getBundleVersion()) == false)
                      validMatch = false;
                }
-               else if (Constants.PACKAGE_SPECIFICATION_VERSION.equals(name) == false
-                     && Constants.VERSION_ATTRIBUTE.equals(name) == false)
+               else if (Constants.PACKAGE_SPECIFICATION_VERSION.equals(name) || Constants.VERSION_ATTRIBUTE.equals(name))
                {
+                  continue;
+               }
+               else
+               {
                   if (ourValue == null || ourValue.equals(otherValue) == false)
                      validMatch = false;
                }
@@ -272,17 +262,27 @@
       return true;
    }
 
-   @Override
-   protected void toString(StringBuffer buffer)
+   private String shortString;
+   public String toShortString()
    {
-      super.toString(buffer);
-      OSGiMetaData metadata = bundleState.getOSGiMetaData();
-      ParameterizedAttribute parameters = metadata.getBundleParameters();
-      if (parameters != null)
+      if (shortString == null)
       {
-         Map<String, Parameter> params = parameters.getAttributes();
-         if (params != null && params.isEmpty() == false)
-            buffer.append(" attributes=").append(params);
+         StringBuffer buffer = new StringBuffer(bundleState.getCanonicalName() + "[" + getName());
+         Map<String, Parameter> attributes = exportPackage.getAttributes();
+         Map<String, Parameter> directives = exportPackage.getDirectives();
+         for (Map.Entry<String, Parameter> entry : directives.entrySet())
+            buffer.append(";" + entry.getKey() + ":=" + entry.getValue().getValue());
+         for (Map.Entry<String, Parameter> entry : attributes.entrySet())
+            buffer.append(";" + entry.getKey() + "=" + entry.getValue().getValue());
+         buffer.append("]");
+         shortString = buffer.toString();
       }
+      return shortString;
    }
+   
+   @Override
+   protected void toString(StringBuffer buffer)
+   {
+      buffer.append(toShortString());
+   }
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -21,7 +21,6 @@
 */
 package org.jboss.osgi.framework.classloading;
 
-import java.util.LinkedHashMap;
 import java.util.Map;
 
 import org.jboss.classloading.plugins.metadata.PackageRequirement;
@@ -119,7 +118,7 @@
     * 
     * @return the requirePackage.
     */
-   public PackageAttribute getRequirePackage()
+   public PackageAttribute getPackageMetaData()
    {
       return requirePackage;
    }
@@ -151,23 +150,27 @@
       return true;
    }
 
-   @Override
-   protected void toString(StringBuffer buffer)
+   private String shortString;
+   public String toShortString()
    {
-      super.toString(buffer);
-      if (requirePackage != null)
+      if (shortString == null)
       {
-         Map<String, Parameter> parameters = requirePackage.getAttributes();
-         if (parameters != null)
-         {
-            Map<String, Object> keyValueMap = new LinkedHashMap<String, Object>();
-            for (String key : parameters.keySet())
-            {
-               Object value = parameters.get(key).getValue();
-               keyValueMap.put(key, value);
-            }
-            buffer.append(" ").append(keyValueMap);
-         }
+         StringBuffer buffer = new StringBuffer(bundleState.getCanonicalName() + "[" + getName());
+         Map<String, Parameter> attributes = requirePackage.getAttributes();
+         Map<String, Parameter> directives = requirePackage.getDirectives();
+         for (Map.Entry<String, Parameter> entry : directives.entrySet())
+            buffer.append(";" + entry.getKey() + ":=" + entry.getValue().getValue());
+         for (Map.Entry<String, Parameter> entry : attributes.entrySet())
+            buffer.append(";" + entry.getKey() + "=" + entry.getValue().getValue());
+         buffer.append("]");
+         shortString = buffer.toString();
       }
+      return shortString;
    }
+   
+   @Override
+   protected void toString(StringBuffer buffer)
+   {
+      buffer.append(toShortString());
+   }
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/AbstractResolver.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/AbstractResolver.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/AbstractResolver.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -98,4 +98,24 @@
       OSGiBundleState bundleState = OSGiBundleState.assertBundleState(bundle);
       return resolverBundleMap.remove(bundleState);
    }
+
+   public boolean match(Bundle importer, Bundle exporter, String packageName)
+   {
+      if (importer == null)
+         throw new IllegalArgumentException("Null importer");
+      if (exporter == null)
+         throw new IllegalArgumentException("Null exporter");
+      if (packageName == null)
+         throw new IllegalArgumentException("Null packageName");
+      
+      ExportPackage exportPackage = getExporter(importer, packageName);
+      if (exportPackage == null)
+         return false;
+      
+      Bundle packageOwner = exportPackage.getOwner().getBundle();
+      boolean match = packageOwner.getSymbolicName().equals(exporter.getSymbolicName());
+      match = match && packageOwner.getVersion().equals(exporter.getVersion());
+      
+      return match;
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -83,9 +83,20 @@
 
    /**
     * Get the exporter for the given import package.
-    * @param bundle The bundle that imports the package.
-    * @param importPackage The import package name
+    * 
+    * @param importer The bundle that imports the package.
+    * @param packageName The import package name
     * @return The export package that the import is wired to or null if the import is not yet resolved.
     */
-   ExportPackage getExporter(Bundle bundle, String importPackage);
+   ExportPackage getExporter(Bundle importer, String packageName);
+   
+   /**
+    * Return true if the given importer is wired to the given exporter for the given package name.
+    * 
+    * @param importer The bundle that imports the package.
+    * @param exporter The bundle that exports the package.
+    * @param packageName The import package name
+    * @return True if the importer is wired to the exporter
+    */
+   boolean match(Bundle importer, Bundle exporter, String packageName);
 }
\ No newline at end of file

Added: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NoopResolverImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NoopResolverImpl.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NoopResolverImpl.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -0,0 +1,99 @@
+/*
+ * 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.resolver.internal;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.jboss.osgi.framework.bundle.OSGiBundleManager;
+import org.jboss.osgi.framework.resolver.AbstractResolver;
+import org.jboss.osgi.framework.resolver.ExportPackage;
+import org.jboss.osgi.framework.resolver.ResolverBundle;
+import org.osgi.framework.Bundle;
+
+/**
+ * A dummy resolver that always that performs no internal resolution.
+ * 
+ * When this resolver is installed into the framework, only the functionality that is build
+ * into the Microcontainer will be used to resolve the bundles. Additional contraints might 
+ * be modeled by the OSGi Capability/Requirement implementations. 
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 23-Nov-2009
+ */
+public class NoopResolverImpl extends AbstractResolver 
+{
+   public NoopResolverImpl(OSGiBundleManager bundleManager)
+   {
+      super(bundleManager);
+   }
+
+   @Override
+   public ResolverBundle addBundle(Bundle bundle)
+   {
+      // Ignore the system bundle
+      if (bundle.getBundleId() == 0)
+         return null;
+      
+      return super.addBundle(bundle);
+   }
+   
+   public ExportPackage getExporter(Bundle importer, String packageName)
+   {
+      return null;
+   }
+
+   // Always return the complete list of unresolved bundles
+   public List<ResolverBundle> resolve(List<Bundle> bundles)
+   {
+      // Get the list of unresolved resBundles
+      List<ResolverBundle> unresolved = new ArrayList<ResolverBundle>();
+      if (bundles == null)
+      {
+         for (ResolverBundle aux : getBundles())
+         {
+            if (aux.isResolved() == false)
+               unresolved.add(aux);
+         }
+      }
+      else
+      {
+         for (Bundle bundle : bundles)
+         {
+            ResolverBundle aux = getBundle(bundle);
+            if (aux == null)
+               throw new IllegalStateException("Cannot obtain resBundle for: " + bundle);
+
+            if (aux.isResolved() == false)
+               unresolved.add(aux);
+         }
+      }
+      return Collections.unmodifiableList(unresolved);
+   }
+
+   // Always return true for the suggested match
+   public boolean match(Bundle importer, Bundle exporter, String packageName)
+   {
+      return true;
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NoopResolverImpl.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BundleCapability.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BundleCapability.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BundleCapability.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -84,7 +84,7 @@
    {
       OSGiPackageCapability osgiPackageCapability = (OSGiPackageCapability)packageCapability;
       OSGiPackageRequirement osgiPackageRequirement = (OSGiPackageRequirement)bundleRequirement.getPackageRequirement();
-      return osgiPackageCapability.match(osgiPackageRequirement);
+      return osgiPackageCapability.matchPackageAttributes(osgiPackageRequirement);
    }
 
    void wireRequirement(BundleRequirement bundleRequirement)

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/drools/RuleBasedResolverImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/drools/RuleBasedResolverImpl.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/drools/RuleBasedResolverImpl.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -77,6 +77,9 @@
    @Override
    public ResolverBundle addBundle(Bundle bundle)
    {
+      if (bundle == null)
+         throw new IllegalArgumentException("Null bundle");
+      
       ResolverBundle resBundle;
       if (bundle.getBundleId() == 0)
       {
@@ -99,6 +102,9 @@
    @Override
    public ResolverBundle removeBundle(Bundle bundle)
    {
+      if (bundle == null)
+         throw new IllegalArgumentException("Null bundle");
+
       ResolverBundle resBundle = super.removeBundle(bundle);
       FactHandle factHandle = facts.get(resBundle);
       if (factHandle != null)
@@ -159,11 +165,16 @@
       return Collections.unmodifiableList(resolved);
    }
 
-   public ExportPackage getExporter(Bundle bundle, String packageName)
+   public ExportPackage getExporter(Bundle importer, String packageName)
    {
-      ResolverBundle resBundle = getBundle(bundle);
+      if (importer == null)
+         throw new IllegalArgumentException("Null importer");
+      if (packageName == null)
+         throw new IllegalArgumentException("Null packageName");
+      
+      ResolverBundle resBundle = getBundle(importer);
       if (resBundle == null)
-         throw new IllegalStateException("Cannot find resovable for: " + bundle);
+         throw new IllegalStateException("Cannot find resovable for: " + importer);
 
       ImportPackage importPackage = resBundle.getImportPackage(packageName);
       if (importPackage == null)

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 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/service/internal/PackageAdminImpl.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -200,9 +200,10 @@
       if (unresolvedBundles.isEmpty())
          return true;
 
+      List<OSGiBundleState> resolvableBundles = new ArrayList<OSGiBundleState>();
+
       // Resolve the bundles through the resolver
       Resolver bundleResolver = bundleManager.getPlugin(ResolverPlugin.class);
-      List<OSGiBundleState> resolvableBundles = new ArrayList<OSGiBundleState>();
       for (ResolverBundle aux : bundleResolver.resolve(unresolvedBundles))
          resolvableBundles.add(OSGiBundleState.assertBundleState(aux.getBundle()));
 
@@ -226,8 +227,9 @@
 
       // Sanity check, that the controller could actually also resolve these bundles
       if (resolvableBundles.isEmpty() == false)
-         throw new IllegalStateException("Controller could not resolve: " + resolvableBundles);
+         log.error("Controller could not resolve: " + resolvableBundles);
 
+      allResolved = allResolved && resolvableBundles.isEmpty();
       return allResolved;
    }
 

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/RequireBundleUnitTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/RequireBundleUnitTestCase.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/classloader/RequireBundleUnitTestCase.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -139,7 +139,7 @@
             bundle2.start();
             fail("Should not be here!");
          }
-         catch (RuntimeException rte)
+         catch (BundleException rte)
          {
             // expected
          }
@@ -328,7 +328,7 @@
             bundle2.start();
             fail("Should not be here!");
          }
-         catch (RuntimeException rte)
+         catch (BundleException rte)
          {
             // expected
          }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java	2009-11-23 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -34,7 +34,7 @@
 import org.osgi.service.packageadmin.PackageAdmin;
 
 /**
- * An abstract {@link Resolver} test.
+ * An abstract resolver test.
  * 
  * @author thomas.diesler at jboss.com
  * @since 09-Nov-2009

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 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractResolverTest.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -74,12 +74,12 @@
    @Before
    public void setUp() throws Exception
    {
-      Resolver installedPlugin = getInstalledResolver();
+      Resolver installedResolver = getInstalledResolver();
       Resolver testResolver = getTestResolver();
-      if (installedPlugin.getClass() != testResolver.getClass())
+      if (installedResolver.getClass() != testResolver.getClass())
       {
          OSGiBundleManager bundleManager = framework.getBundleManager();
-         bundleManager.removePlugin((Plugin)installedPlugin);
+         bundleManager.removePlugin((Plugin)installedResolver);
          bundleManager.addPlugin((Plugin)testResolver);
       }
    }
@@ -93,7 +93,7 @@
    protected Resolver getInstalledResolver()
    {
       OSGiBundleManager bundleManager = framework.getBundleManager();
-      return bundleManager.getPlugin(ResolverPlugin.class);
+      return bundleManager.getOptionalPlugin(ResolverPlugin.class);
    }
 
    protected PackageAdmin getPackageAdmin()

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 12:36:31 UTC (rev 96733)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BasicResolverTest.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -55,9 +55,9 @@
    }
 
    @Override
-   public void testPackageAttributeMandatoryFails() throws Exception
+   public void testRequireBundleVersionFails() throws Exception
    {
-      System.out.println("FIXME: testPackageAttributeMandatoryFails");
+      System.out.println("FIXME: testRequireBundleVersionFails");
    }
 
    @Override
@@ -77,10 +77,10 @@
    {
       System.out.println("FIXME: testPreferredExporterLowerIdReverse");
    }
-
+   
    @Override
-   public void testRequireBundleVersionFails() throws Exception
+   public void testPackageAttributeMandatoryFails() throws Exception
    {
-      System.out.println("FIXME: testRequireBundleVersionFails");
+      System.out.println("FIXME: testPackageAttributeMandatoryFails");
    }
 }
\ No newline at end of file

Added: 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	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java	2009-11-23 12:48:24 UTC (rev 96734)
@@ -0,0 +1,56 @@
+/*
+ * 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.test.osgi.resolver;
+
+// $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.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 23-Nov-2009
+ */
+public class NoExternalResolverTest extends AbstractImportExportTest
+{
+   @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;
+   }
+
+   @Override
+   public void testPreferredExporterHigherVersion() throws Exception
+   {
+      System.out.println("FIXME: testPreferredExporterHigherVersion");
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/NoExternalResolverTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF




More information about the jboss-cvs-commits mailing list