[jboss-osgi-commits] JBoss-OSGI SVN: r96196 - in projects/jboss-osgi/trunk/reactor/framework/src: main/java/org/jboss/osgi/framework/resolver/internal and 2 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Mon Nov 9 17:11:53 EST 2009


Author: thomas.diesler at jboss.com
Date: 2009-11-09 17:11:53 -0500 (Mon, 09 Nov 2009)
New Revision: 96196

Added:
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.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
Removed:
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BundleResolverTest.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java
Modified:
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.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/ExportPackageImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NamedPackageImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ResolvableImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java
Log:
Add resolver metadata processing and test

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -21,7 +21,7 @@
  */
 package org.jboss.osgi.framework.resolver;
 
-import java.util.Map;
+import java.util.Set;
 
 
 /**
@@ -47,8 +47,14 @@
    String getName();
 
    /**
-    * Get the associated map of arbitrary attributes.
-    * @return Associated map of arbitrary attributes or an empty map.
+    * Get the associated set of arbitrary attributes.
+    * @return An empty list if their are no attributes.
     */
-   Map<String, String> getAttributes();
+   Set<String> getAttributes();
+
+   /**
+    * Get the attribute value for the given key.
+    * @return The attribute value or null.
+    */
+   Object getAttribute(String key);
 }
\ 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-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -24,9 +24,10 @@
 import java.util.List;
 
 import org.osgi.framework.Bundle;
+import org.osgi.framework.Version;
 
 /**
- * The Resolver handles the resolve phase of bundles.
+ * Handles the resolve phase of the installed bundles.
  *  
  * @author thomas.diesler at jboss.com
  * @since 09-Nov-2009
@@ -40,6 +41,18 @@
    List<Resolvable> getBundles();
    
    /**
+    * Get the registered resolvable bundle. 
+    * @return The registered resolvable bundle.
+    */
+   Resolvable getBundle(String symbolicName, Version version);
+   
+   /**
+    * Get the registered resolvable bundle. 
+    * @return The registered resolvable bundle.
+    */
+   Resolvable getBundle(Bundle bundle);
+   
+   /**
     * Add a bundle to the resolver.
     * 
     * @param bundle the bundle

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -21,53 +21,96 @@
  */
 package org.jboss.osgi.framework.resolver.internal;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
+import org.jboss.osgi.framework.metadata.PackageAttribute;
+import org.jboss.osgi.framework.metadata.Parameter;
 import org.jboss.osgi.framework.resolver.ExportPackage;
 import org.jboss.osgi.framework.resolver.ImportPackage;
 import org.jboss.osgi.framework.resolver.Resolvable;
 import org.jboss.osgi.spi.NotImplementedException;
+import org.osgi.framework.Constants;
 import org.osgi.framework.Version;
 
 /**
+ * An abstraction of a package export.
  * 
  * @author thomas.diesler at jboss.com
  * @since 09-Nov-2009
  */
 public class ExportPackageImpl extends NamedPackageImpl implements ExportPackage
 {
+   private PackageAttribute packageMetaData;
+   
    public ExportPackageImpl(Resolvable owner, String packageName)
    {
       super(owner, packageName);
    }
 
-   public List<String> getExcludes()
+   @Override
+   protected PackageAttribute getPackageMetaData()
    {
-      throw new NotImplementedException();
+      if (packageMetaData == null)
+      {
+         for (PackageAttribute aux : getMetaData().getExportPackages())
+         {
+            if (aux.getPackageInfo().getName().equals(getName()))
+            {
+               packageMetaData = aux;
+               break;
+            }
+         }
+         if (packageMetaData == null)
+            throw new IllegalStateException("Cannot obtain packageMetaData for: " + getName());
+      }
+      return packageMetaData;
    }
 
-   public Set<ImportPackage> getImporters()
+   public Version getVersion()
    {
-      throw new NotImplementedException();
+      Parameter version = getPackageMetaData().getAttribute(Constants.VERSION_ATTRIBUTE);
+      return Version.parseVersion(version != null ? version.getValue().toString() : null);
    }
 
+   public List<String> getUses()
+   {
+      return getDirectiveValueList(Constants.USES_DIRECTIVE);
+   }
+
+   public List<String> getExcludes()
+   {
+      List<String> valueList = getDirectiveValueList(Constants.EXCLUDE_DIRECTIVE);
+      return valueList.isEmpty() ? null : valueList;
+   }
+
    public List<String> getIncludes()
    {
-      throw new NotImplementedException();
+      List<String> valueList = getDirectiveValueList(Constants.INCLUDE_DIRECTIVE);
+      return valueList.isEmpty() ? null : valueList;
    }
 
    public List<String> getMandatoryAttributes()
    {
-      throw new NotImplementedException();
+      return getDirectiveValueList(Constants.MANDATORY_DIRECTIVE);
    }
 
-   public List<String> getUses()
+   @SuppressWarnings("unchecked")
+   private List<String> getDirectiveValueList(String key)
    {
-      throw new NotImplementedException();
+      List<String> valueList = new ArrayList<String>();
+      Parameter directive = getPackageMetaData().getDirective(key);
+      if (directive != null)
+      {
+         valueList.addAll((Collection<String>)directive.getValue());
+      }
+      return Collections.unmodifiableList(valueList);
    }
 
-   public Version getVersion()
+   public Set<ImportPackage> getImporters()
    {
       throw new NotImplementedException();
    }

Added: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -0,0 +1,93 @@
+/*
+ * 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 org.jboss.osgi.framework.metadata.PackageAttribute;
+import org.jboss.osgi.framework.metadata.Parameter;
+import org.jboss.osgi.framework.metadata.VersionRange;
+import org.jboss.osgi.framework.resolver.ExportPackage;
+import org.jboss.osgi.framework.resolver.ImportPackage;
+import org.jboss.osgi.framework.resolver.Resolvable;
+import org.jboss.osgi.spi.NotImplementedException;
+import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
+
+/**
+ * An abstraction of a package import. 
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 09-Nov-2009
+ */
+public class ImportPackageImpl extends NamedPackageImpl implements ImportPackage
+{
+   private PackageAttribute packageMetaData;
+   
+   public ImportPackageImpl(Resolvable owner, String packageName)
+   {
+      super(owner, packageName);
+   }
+
+   @Override
+   protected PackageAttribute getPackageMetaData()
+   {
+      if (packageMetaData == null)
+      {
+         for (PackageAttribute aux : getMetaData().getImportPackages())
+         {
+            if (aux.getPackageInfo().getName().equals(getName()))
+            {
+               packageMetaData = aux;
+               break;
+            }
+         }
+         if (packageMetaData == null)
+            throw new IllegalStateException("Cannot obtain packageMetaData for: " + getName());
+      }
+      return packageMetaData;
+   }
+
+   public VersionRange getVersion()
+   {
+      throw new NotImplementedException();
+   }
+   
+   public String getBundleSymbolicName()
+   {
+      return (String)getAttribute(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE);
+   }
+
+   public Version getBundleVersion()
+   {
+      return Version.parseVersion((String)getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE));
+   }
+
+   public Resolution getResolution()
+   {
+      Parameter param = getPackageMetaData().getDirective(Constants.RESOLUTION_DIRECTIVE);
+      return (param != null ? Resolution.valueOf(param.getValue().toString()) : Resolution.MANDATORY);
+   }
+
+   public ExportPackage getExporter()
+   {
+      throw new NotImplementedException();
+   }
+}
\ No newline at end of file


Property changes on: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.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/NamedPackageImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NamedPackageImpl.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/NamedPackageImpl.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -21,26 +21,39 @@
  */
 package org.jboss.osgi.framework.resolver.internal;
 
-import java.util.Map;
+import java.util.Set;
 
+import org.jboss.osgi.framework.bundle.OSGiBundleState;
+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.resolver.NamedPackage;
 import org.jboss.osgi.framework.resolver.Resolvable;
-import org.jboss.osgi.spi.NotImplementedException;
 
 /**
+ * An abstraction of an osgi package declaration.
  * 
  * @author thomas.diesler at jboss.com
  * @since 09-Nov-2009
  */
-public class NamedPackageImpl implements NamedPackage
+abstract class NamedPackageImpl implements NamedPackage
 {
    private Resolvable owner;
    private String packageName;
-   
+   private OSGiMetaData metaData;
+
    public NamedPackageImpl(Resolvable owner, String packageName)
    {
+      if (owner == null)
+         throw new IllegalArgumentException("Null package owner");
+      if (packageName == null)
+         throw new IllegalArgumentException("Null packageName");
+
       this.owner = owner;
       this.packageName = packageName;
+
+      OSGiBundleState bundleState = OSGiBundleState.assertBundleState(owner.getBundle());
+      this.metaData = bundleState.getOSGiMetaData();
    }
 
    public Resolvable getOwner()
@@ -52,9 +65,22 @@
    {
       return packageName;
    }
-   
-   public Map<String, String> getAttributes()
+
+   protected OSGiMetaData getMetaData()
    {
-      throw new NotImplementedException();
+      return metaData;
    }
+
+   protected abstract PackageAttribute getPackageMetaData();
+
+   public Set<String> getAttributes()
+   {
+      return getPackageMetaData().getAttributes().keySet();
+   }
+
+   public Object getAttribute(String key)
+   {
+      Parameter attr = getPackageMetaData().getAttribute(key);
+      return (attr != null ? attr.getValue() : null);
+   }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ResolvableImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ResolvableImpl.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ResolvableImpl.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -33,27 +33,28 @@
 import org.jboss.osgi.framework.resolver.ExportPackage;
 import org.jboss.osgi.framework.resolver.ImportPackage;
 import org.jboss.osgi.framework.resolver.Resolvable;
-import org.jboss.osgi.spi.NotImplementedException;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Version;
 
 /**
+ * An abstraction of a resolvable bundle.
  * 
  * @author thomas.diesler at jboss.com
  * @since 09-Nov-2009
  */
 public class ResolvableImpl implements Resolvable
 {
-   private OSGiBundleState bundle;
+   private OSGiBundleState bundleState;
    private OSGiMetaData metaData;
    private boolean resolved;
    
    private Map<String, ExportPackage> exportedPackages = new LinkedHashMap<String, ExportPackage>();
+   private Map<String, ImportPackage> importedPackages = new LinkedHashMap<String, ImportPackage>();
    
    public ResolvableImpl(Bundle bundle)
    {
-      this.bundle = OSGiBundleState.assertBundleState(bundle);
-      this.metaData = ((OSGiBundleState)bundle).getOSGiMetaData();
+      this.bundleState = OSGiBundleState.assertBundleState(bundle);
+      this.metaData = bundleState.getOSGiMetaData();
       
       // Initialize exported packages
       List<PackageAttribute> exportPackages = metaData.getExportPackages();
@@ -65,21 +66,32 @@
             exportedPackages.put(packageName, new ExportPackageImpl(this, packageName));
          }
       }
+      
+      // Initialize imported packages
+      List<PackageAttribute> importPackages = metaData.getImportPackages();
+      if (importPackages != null)
+      {
+         for (PackageAttribute attr: importPackages)
+         {
+            String packageName = attr.getPackageInfo().getName();
+            importedPackages.put(packageName, new ImportPackageImpl(this, packageName));
+         }
+      }
    }
 
    public Bundle getBundle()
    {
-      return bundle;
+      return bundleState.getBundleInternal();
    }
 
    public String getSymbolicName()
    {
-      return bundle.getSymbolicName();
+      return bundleState.getSymbolicName();
    }
 
    public Version getVersion()
    {
-      return bundle.getVersion();
+      return bundleState.getVersion();
    }
 
    public ExportPackage getExportPackage(String packageName)
@@ -93,14 +105,15 @@
       return Collections.unmodifiableList(values);
    }
 
-   public ImportPackage getImportPackage(String name)
+   public ImportPackage getImportPackage(String packageName)
    {
-      throw new NotImplementedException();
+      return importedPackages.get(packageName);
    }
 
    public List<ImportPackage> getImportPackages()
    {
-      throw new NotImplementedException();
+      List<ImportPackage> values = new ArrayList<ImportPackage>(importedPackages.values());
+      return Collections.unmodifiableList(values);
    }
 
    public boolean isResolved()
@@ -115,6 +128,6 @@
 
    public boolean isSingleton()
    {
-      return bundle.getOSGiMetaData().isSingleton();
+      return metaData.isSingleton();
    }
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -48,6 +48,7 @@
 import org.jboss.osgi.framework.resolver.internal.ResolvableImpl;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
+import org.osgi.framework.Version;
 
 /**
  * The BundleResolver wires BundleRequirements to their corresponding BundleCapability.
@@ -75,6 +76,35 @@
       return Collections.unmodifiableList(values);
    }
 
+   public Resolvable getBundle(Bundle bundle)
+   {
+      if (bundle == null)
+         throw new IllegalArgumentException("Null bundle");
+      
+      OSGiBundleState bundleState = OSGiBundleState.assertBundleState(bundle);
+      return resolverBundleMap.get(bundleState);
+   }
+
+   public Resolvable getBundle(String symbolicName, Version version)
+   {
+      if (symbolicName == null)
+         throw new IllegalArgumentException("Null symbolicName");
+
+      if (version == null)
+         version = Version.emptyVersion;
+      
+      Resolvable retBundle = null;
+      for (Resolvable aux : resolverBundleMap.values())
+      {
+         if (aux.getSymbolicName().equals(symbolicName) && aux.getVersion().equals(version))
+         {
+            retBundle = aux;
+            break;
+         }
+      }
+      return retBundle;
+   }
+
    public Resolvable addBundle(Bundle bundle)
    {
       OSGiBundleState bundleState = OSGiBundleState.assertBundleState(bundle);

Deleted: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BundleResolverTest.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BundleResolverTest.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BundleResolverTest.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -1,95 +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.test.osgi.resolver;
-
-// $Id: FrameworkLaunchTestCase.java 92733 2009-08-24 09:40:32Z thomas.diesler at jboss.com $
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.jboss.osgi.framework.bundle.OSGiBundleManager;
-import org.jboss.osgi.framework.launch.OSGiFramework;
-import org.jboss.osgi.framework.plugins.ResolverPlugin;
-import org.jboss.osgi.framework.resolver.Resolvable;
-import org.jboss.osgi.framework.resolver.Resolver;
-import org.jboss.osgi.spi.util.ServiceLoader;
-import org.jboss.osgi.testing.OSGiTest;
-import org.junit.Test;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.launch.Framework;
-import org.osgi.framework.launch.FrameworkFactory;
-
-/**
- * Test OSGi System bundle access
- * 
- * @author thomas.diesler at jboss.com
- * @since 27-Jul-2009
- */
-public class BundleResolverTest extends OSGiTest
-{
-   @Test
-   public void testBundleResolver() throws BundleException
-   {
-      FrameworkFactory factory = ServiceLoader.loadService(FrameworkFactory.class);
-      Framework framework = factory.newFramework(null);
-      framework.start();
-
-      List<String> bundlePaths = new ArrayList<String>();
-      bundlePaths.add("bundles/jboss-osgi-apache-xerces.jar");
-      bundlePaths.add("bundles/jboss-osgi-common.jar");
-      bundlePaths.add("bundles/jboss-osgi-common-core.jar");
-      bundlePaths.add("bundles/jboss-osgi-husky.jar");
-      bundlePaths.add("bundles/jboss-osgi-jaxb.jar");
-      bundlePaths.add("bundles/jboss-osgi-jmx.jar");
-      bundlePaths.add("bundles/jboss-osgi-jndi.jar");
-      bundlePaths.add("bundles/jboss-osgi-xml-binding.jar");
-      bundlePaths.add("bundles/org.apache.felix.configadmin.jar");
-      bundlePaths.add("bundles/org.apache.felix.log.jar");
-      bundlePaths.add("bundles/org.apache.felix.metatype.jar");
-      bundlePaths.add("bundles/org.osgi.compendium.jar");
-      bundlePaths.add("bundles/pax-web-jetty-bundle.jar");
-
-      Collections.shuffle(bundlePaths);
-      
-      List<Bundle> unresolved = new ArrayList<Bundle>();
-      BundleContext sysContext = framework.getBundleContext();
-      for (String path : bundlePaths)
-      {
-         Bundle bundle = sysContext.installBundle(getTestArchivePath(path));
-         unresolved.add(bundle);
-      }
-      
-      OSGiBundleManager bundleManager = ((OSGiFramework)framework).getBundleManager();
-      Resolver bundleResolver = bundleManager.getPlugin(ResolverPlugin.class);
-      assertEquals("All bundles installed", bundlePaths.size(), bundleResolver.getBundles().size());
-      
-      List<Resolvable> resolved = bundleResolver.resolve(unresolved);
-      assertEquals("All bundles resolved", unresolved.size(), resolved.size());
-      
-      framework.stop();
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java	2009-11-09 20:04:21 UTC (rev 96195)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -1,81 +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.test.osgi.resolver;
-
-// $Id$
-
-import org.jboss.osgi.spi.framework.OSGiBootstrap;
-import org.jboss.osgi.spi.framework.OSGiBootstrapProvider;
-import org.jboss.osgi.testing.OSGiTest;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.launch.Framework;
-
-/**
- * Test import directive 'resolution'
- * 
- * @author thomas.diesler at jboss.com
- * @since 09-Nov-2009
- */
- at Ignore
-public class ImportDirectiveResolutionTest extends OSGiTest
-{
-   
-   private static Framework framework;
-   
-   @BeforeClass
-   public static void beforeClass() throws BundleException
-   {
-      OSGiBootstrapProvider bootProvider = OSGiBootstrap.getBootstrapProvider();
-      framework = bootProvider.getFramework();
-      framework.start();
-   }
-   
-   @AfterClass
-   public static void afterClass() throws BundleException
-   {
-      if (framework != null)
-      {
-         framework.stop();
-         framework = null;
-      }
-   }
-   /**
-    * [TODO] testImportAvailable
-    * 
-    * @throws BundleException
-    */
-   public void testImportAvailable() throws BundleException
-   {
-   }
-
-   /**
-    * [TODO] testImportNotAvailable
-
-    * @throws BundleException
-    */
-   public void testImportNotAvailable() throws BundleException
-   {
-   }
-}
\ No newline at end of file

Added: 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	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -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.test.osgi.resolver;
+
+// $Id$
+
+import java.util.List;
+
+import org.jboss.osgi.framework.plugins.ResolverPlugin;
+import org.jboss.osgi.framework.resolver.ExportPackage;
+import org.jboss.osgi.framework.resolver.ImportPackage;
+import org.jboss.osgi.framework.resolver.Resolvable;
+import org.jboss.osgi.framework.resolver.Resolver;
+import org.jboss.test.osgi.FrameworkTestCase;
+import org.jboss.test.osgi.classloader.support.a.A;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Version;
+
+/**
+ * Test {@link Resolver} metadata.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 27-Jul-2009
+ */
+public class ResolverMetadataTest extends FrameworkTestCase
+{
+   public ResolverMetadataTest(String name)
+   {
+      super(name);
+   }
+
+   @Test
+   public void testBasicExport() 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 bundleA = assembleBundle("bundleA", "/bundles/classloader/bundleA", A.class);
+      
+      Resolver resolver = getBundleManager().getPlugin(ResolverPlugin.class);
+      assertEquals(1, resolver.getBundles().size());
+      
+      Resolvable resolvableA = resolver.getBundle(bundleA.getSymbolicName(), null);
+      assertNull("Resolvable null", resolvableA);
+      
+      resolvableA = resolver.getBundle(bundleA.getSymbolicName(), bundleA.getVersion());
+      assertNotNull("Resolvable not null", resolvableA);
+      
+      resolvableA = resolver.getBundle(bundleA);
+      assertNotNull("Resolvable not null", resolvableA);
+      
+      assertNotNull(resolvableA.getBundle());
+      assertEquals(bundleA.getSymbolicName(), resolvableA.getSymbolicName());
+      assertEquals(bundleA.getVersion(), resolvableA.getVersion());
+      
+      List<ExportPackage> exportPackages = resolvableA.getExportPackages();
+      assertNotNull("ExportPackages not null", exportPackages);
+      assertEquals(1, exportPackages.size());
+      
+      ExportPackage exportPackage = resolvableA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
+      assertNotNull("ExportPackage not null", exportPackage);
+      assertEquals("org.jboss.test.osgi.classloader.support.a", exportPackage.getName());
+
+      assertEquals(Version.parseVersion("1.0.0"), exportPackage.getVersion());
+      assertEquals(0, exportPackage.getUses().size());
+      assertEquals(0, exportPackage.getMandatoryAttributes().size());
+      assertEquals("x", exportPackage.getAttribute("test"));
+      assertNull("Null includes", exportPackage.getIncludes());
+      assertNull("Null excludes", exportPackage.getExcludes());
+      
+      List<ImportPackage> importPackages = resolvableA.getImportPackages();
+      assertNotNull("ImportPackages not null", importPackages);
+      assertEquals(0, importPackages.size());
+      
+      assertFalse("No sigleton", resolvableA.isSingleton());
+      assertFalse("Not resolved", resolvableA.isResolved());
+   }
+}
\ No newline at end of file


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

Copied: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java (from rev 96188, projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/BundleResolverTest.java)
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java	                        (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverSmokeTest.java	2009-11-09 22:11:53 UTC (rev 96196)
@@ -0,0 +1,102 @@
+/*
+ * 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: FrameworkLaunchTestCase.java 92733 2009-08-24 09:40:32Z thomas.diesler at jboss.com $
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.jboss.osgi.framework.bundle.OSGiBundleManager;
+import org.jboss.osgi.framework.launch.OSGiFramework;
+import org.jboss.osgi.framework.plugins.ResolverPlugin;
+import org.jboss.osgi.framework.resolver.Resolvable;
+import org.jboss.osgi.framework.resolver.Resolver;
+import org.jboss.osgi.spi.util.ServiceLoader;
+import org.jboss.osgi.testing.OSGiTest;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.launch.FrameworkFactory;
+
+/**
+ * Smoketest for the {@link Resolver}
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 27-Jul-2009
+ */
+public class ResolverSmokeTest extends OSGiTest
+{
+   @Test
+   public void testBundleResolver() throws BundleException
+   {
+      FrameworkFactory factory = ServiceLoader.loadService(FrameworkFactory.class);
+      OSGiFramework framework = (OSGiFramework)factory.newFramework(null);
+      
+      OSGiBundleManager bundleManager = framework.getBundleManager();
+      Resolver resolver = bundleManager.getPlugin(ResolverPlugin.class);
+      
+      try
+      {
+         framework.start();
+
+         List<String> bundlePaths = new ArrayList<String>();
+         bundlePaths.add("bundles/jboss-osgi-apache-xerces.jar");
+         bundlePaths.add("bundles/jboss-osgi-common.jar");
+         bundlePaths.add("bundles/jboss-osgi-common-core.jar");
+         bundlePaths.add("bundles/jboss-osgi-husky.jar");
+         bundlePaths.add("bundles/jboss-osgi-jaxb.jar");
+         bundlePaths.add("bundles/jboss-osgi-jmx.jar");
+         bundlePaths.add("bundles/jboss-osgi-jndi.jar");
+         bundlePaths.add("bundles/jboss-osgi-xml-binding.jar");
+         bundlePaths.add("bundles/org.apache.felix.configadmin.jar");
+         bundlePaths.add("bundles/org.apache.felix.log.jar");
+         bundlePaths.add("bundles/org.apache.felix.metatype.jar");
+         bundlePaths.add("bundles/org.osgi.compendium.jar");
+         bundlePaths.add("bundles/pax-web-jetty-bundle.jar");
+
+         Collections.shuffle(bundlePaths);
+
+         List<Bundle> unresolved = new ArrayList<Bundle>();
+         BundleContext sysContext = framework.getBundleContext();
+         for (String path : bundlePaths)
+         {
+            Bundle bundle = sysContext.installBundle(getTestArchivePath(path));
+            unresolved.add(bundle);
+         }
+
+         List<Resolvable> installedBundles = resolver.getBundles();
+         assertEquals("All bundles installed", bundlePaths.size(), installedBundles.size());
+
+         List<Resolvable> resolved = resolver.resolve(unresolved);
+         assertEquals("All bundles resolved", unresolved.size(), resolved.size());
+      }
+      finally
+      {
+         framework.stop();
+      }
+   }
+}
\ No newline at end of file



More information about the jboss-osgi-commits mailing list