package test; import java.io.File; import java.io.IOException; import java.util.jar.Manifest; import aQute.bnd.header.Attrs; import aQute.bnd.header.Parameters; import aQute.bnd.osgi.Builder; import aQute.bnd.osgi.Domain; import aQute.bnd.osgi.Jar; import junit.framework.TestCase; @SuppressWarnings("resource") public class UsesTest extends TestCase { public static void testUsesExtend() throws Exception { checkUses("test.uses.extend"); } public static void testUsesGenericExtend() throws Exception { checkUses("test.uses.generic.extend"); } public static void testUsesConstructor() throws Exception { checkUses("test.uses.constructor"); } public static void testUsesImplement() throws Exception { checkUses("test.uses.implement"); } public static void testUsesGenericImplement() throws Exception { checkUses("test.uses.generic.implement"); } public static void testUsesParam() throws Exception { checkUses("test.uses.param"); } public static void testUsesGenericParam() throws Exception { checkUses("test.uses.generic.param"); } public static void testUsesRValue() throws Exception { checkUses("test.uses.rvalue"); } public static void testUsesGenericRValue() throws Exception { checkUses("test.uses.generic.rvalue"); } public static void testUsesException() throws Exception { checkUses("test.uses.exception"); } public static void testUsesField() throws Exception { checkUses("test.uses.field"); } public static void testUsesAnnotation() throws Exception { checkUses("test.uses.annotation", "test.uses.annotation.annotation"); } public static void testUsesMulti() throws Exception { // Check for consistent ordering for (int i = 0; i < 10; i++) checkUses("test.uses.multi", "javax.security.auth.callback,javax.sql"); } private static void checkUses(String export) throws IOException, Exception { String uses = "javax.security.auth.callback"; checkUses(export, uses); } private static void checkUses(String export, String uses) throws IOException, Exception { Builder a = new Builder(); a.addClasspath(new File("bin")); a.setExportPackage(export); a.setProperty("build", "123"); Jar jar = a.build(); assertTrue(a.check()); Manifest m = jar.getManifest(); m.write(System.err); Domain d = Domain.domain(m); Parameters parameters = d.getExportPackage(); Attrs attrs = parameters.get(export); assertNotNull(attrs); assertEquals(uses, attrs.get("uses:")); } }