package org.apache.aries.subsystem.itests.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.ops4j.pax.tinybundles.core.InnerClassStrategy; import org.ops4j.pax.tinybundles.core.TinyBundle; import org.ops4j.pax.tinybundles.core.TinyBundles; import aQute.bnd.osgi.Constants; public class BundleArchiveBuilder { public static final String JAR_EXTENSION = ".jar"; private final TinyBundle bundle; public BundleArchiveBuilder() { bundle = TinyBundles.bundle(); } public BundleArchiveBuilder activator(Class<?> clazz) { bundle.set(Constants.BUNDLE_ACTIVATOR, clazz.getName()); bundle.add(clazz, InnerClassStrategy.NONE); return this; } public InputStream build() { return bundle.build(); } public byte[] buildAsBytes() throws IOException { InputStream is = build(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bytes = new byte[2048]; int count; while ((count = is.read(bytes)) != -1) { baos.write(bytes, 0, count); } is.close(); baos.close(); return baos.toByteArray(); } public BundleArchiveBuilder clazz(Class<?> clazz) { bundle.add(clazz, InnerClassStrategy.NONE); return this; } public BundleArchiveBuilder exportPackage(String value) { return header(Constants.EXPORT_PACKAGE, value); } public BundleArchiveBuilder header(String name, String value) { bundle.set(name, value); return this; } public BundleArchiveBuilder importPackage(String value) { return header(Constants.IMPORT_PACKAGE, value); } public BundleArchiveBuilder provideCapability(String value) { return header(Constants.PROVIDE_CAPABILITY, value); } public BundleArchiveBuilder requireBundle(String value) { return header(Constants.REQUIRE_BUNDLE, value); } public BundleArchiveBuilder requireCapability(String value) { return header(Constants.REQUIRE_CAPABILITY, value); } public BundleArchiveBuilder symbolicName(String value) { return header(Constants.BUNDLE_SYMBOLICNAME, value); } }