package org.osgi.service.indexer.impl; import static org.osgi.service.indexer.impl.Utils.findCaps; import java.io.File; import java.util.LinkedList; import java.util.List; import org.osgi.framework.Version; import org.osgi.service.indexer.Capability; import org.osgi.service.indexer.Requirement; import junit.framework.TestCase; public class TestOSGiFrameworkAnalyzer extends TestCase { public void testOsgiFramework() throws Exception { LinkedList<Capability> caps = new LinkedList<Capability>(); LinkedList<Requirement> reqs = new LinkedList<Requirement>(); JarResource input = new JarResource(new File("testdata/org.apache.felix.framework-4.0.2.jar")); new BundleAnalyzer(new XNullLogSvc()).analyzeResource(input, caps, reqs); new OSGiFrameworkAnalyzer(new XNullLogSvc()).analyzeResource(input, caps, reqs); List<Capability> fwkCaps = findCaps("osgi.contract", caps); assertNotNull(fwkCaps); assertEquals(1, fwkCaps.size()); Capability fwkCap = fwkCaps.get(0); assertEquals("OSGiFramework", fwkCap.getAttributes().get("osgi.contract")); assertEquals(new Version("4.3.0"), fwkCap.getAttributes().get("version")); assertEquals( "org.osgi.framework.startlevel,org.osgi.framework.wiring,org.osgi.framework.hooks.bundle,org.osgi.framework.hooks.service,org.osgi.framework.hooks.resolver,org.osgi.framework.launch,org.osgi.framework,org.osgi.framework.hooks.weaving,org.osgi.service.packageadmin,org.osgi.service.url,org.osgi.service.startlevel,org.osgi.util.tracker", fwkCap.getDirectives().get("uses")); } public void testOsgiFrameworkSpecificationVersions() throws Exception { LinkedList<Capability> caps; LinkedList<Requirement> reqs; caps = new LinkedList<Capability>(); reqs = new LinkedList<Requirement>(); JarResource inputResource = new JarResource(new File("testdata/org.apache.felix.framework-4.0.2.jar")); new BundleAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); new OSGiFrameworkAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); assertEquals(new Version("4.3.0"), findCaps("osgi.contract", caps).get(0).getAttributes().get("version")); caps = new LinkedList<Capability>(); reqs = new LinkedList<Requirement>(); inputResource = new JarResource(new File("testdata/org.eclipse.osgi_3.7.2.v20120110-1415.jar")); new BundleAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); new OSGiFrameworkAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); assertEquals(new Version("4.3.0"), findCaps("osgi.contract", caps).get(0).getAttributes().get("version")); caps = new LinkedList<Capability>(); reqs = new LinkedList<Requirement>(); inputResource = new JarResource(new File("testdata/org.apache.felix.framework-3.2.2.jar")); new BundleAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); new OSGiFrameworkAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); assertEquals(new Version("4.2.0"), findCaps("osgi.contract", caps).get(0).getAttributes().get("version")); caps = new LinkedList<Capability>(); reqs = new LinkedList<Requirement>(); inputResource = new JarResource(new File("testdata/org.eclipse.osgi_3.6.2.R36x_v20110210.jar")); new BundleAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); new OSGiFrameworkAnalyzer(new XNullLogSvc()).analyzeResource(inputResource, caps, reqs); assertEquals(new Version("4.2.0"), findCaps("osgi.contract", caps).get(0).getAttributes().get("version")); } public void testNonOsgiFramework() throws Exception { OSGiFrameworkAnalyzer a = new OSGiFrameworkAnalyzer(new XNullLogSvc()); LinkedList<Capability> caps = new LinkedList<Capability>(); LinkedList<Requirement> reqs = new LinkedList<Requirement>(); a.analyzeResource(new JarResource(new File("testdata/03-export.jar")), caps, reqs); List<Capability> fwkCaps = findCaps("osgi.contract", caps); assertNotNull(fwkCaps); assertEquals(0, fwkCaps.size()); } }