package test; import java.io.File; import java.util.concurrent.atomic.AtomicBoolean; import aQute.bnd.osgi.Analyzer; import aQute.bnd.osgi.Builder; import aQute.bnd.osgi.Descriptors.PackageRef; import aQute.bnd.osgi.Jar; import aQute.bnd.osgi.Packages; import aQute.bnd.service.AnalyzerPlugin; import aQute.bnd.service.verifier.VerifierPlugin; import junit.framework.TestCase; public class VerifierPluginTest extends TestCase { public static void testNoVerifierPluginExecution() throws Exception { final AtomicBoolean executedCheck = new AtomicBoolean(false); AnalyzerPlugin analyzerPlugin = new AnalyzerPlugin() { @Override public boolean analyzeJar(Analyzer analyzer) throws Exception { // The following is null when AnalyzerPlugins execute Packages exports = analyzer.getExports(); if (exports == null) { executedCheck.set(true); } return false; } }; try (Builder b = new Builder()) { b.setProperty("Bundle-SymbolicName", "p1"); b.setProperty("Bundle-Version", "1.2.3"); b.setExportPackage("test.activator"); b.addClasspath(new File("bin")); b.getPlugins().add(analyzerPlugin); Jar jar = b.build(); } assertTrue(executedCheck.get()); } public static void testVerifierPluginExecution() throws Exception { final AtomicBoolean executedCheck = new AtomicBoolean(false); VerifierPlugin verifier = new VerifierPlugin() { @Override public void verify(Analyzer analyzer) throws Exception { // the following is true only after the jar and manifest have // been analyzed Packages exports = analyzer.getExports(); PackageRef packageRef = analyzer.getPackageRef("test/activator"); if (exports.containsKey(packageRef)) { executedCheck.set(true); } } }; try (Builder b = new Builder()) { b.setProperty("Bundle-SymbolicName", "p1"); b.setProperty("Bundle-Version", "1.2.3"); b.setExportPackage("test.activator"); b.addClasspath(new File("bin")); b.getPlugins().add(verifier); Jar jar = b.build(); } assertTrue(executedCheck.get()); } }