[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