loadableExtensions.add(InContainerManagementClientExtension.class.getName());
// Generate the manifest with it's dependencies
archive.setManifest(new Asset() {
public InputStream openStream() {
ManifestBuilder builder = ManifestBuilder.newInstance();
StringBuffer dependencies = new StringBuffer();
dependencies.append("org.jboss.as.jmx,");
dependencies.append("org.jboss.as.server,");
dependencies.append("org.jboss.as.controller-client,");
dependencies.append("org.jboss.as.osgi,");
dependencies.append("org.jboss.jandex,");
dependencies.append("org.jboss.logging,");
dependencies.append("org.jboss.modules,");
dependencies.append("org.jboss.dmr,");
dependencies.append("org.jboss.msc,");
dependencies.append("org.jboss.osgi.framework,");
dependencies.append("org.osgi.core");
builder.addManifestHeader("Dependencies", dependencies.toString());
return builder.openStream();
}
});
// Add the ServiceActivator
String serviceActivatorPath = "META-INF/services/" + ServiceActivator.class.getName();
final URL serviceActivatorURL = this.getClass().getClassLoader().getResource("arquillian-service/" + serviceActivatorPath);
if (serviceActivatorURL == null) {
throw new RuntimeException("No arquillian-service/" + serviceActivatorPath + " found by classloader: " + this.getClass().getClassLoader());
}
archive.addAsResource(new UrlAsset(serviceActivatorURL), serviceActivatorPath);
// Add resource capabilities for registration with the Environment
archive.addAsResource(new Asset() {
public InputStream openStream() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
Properties props = new Properties();
props.setProperty(Constants.BUNDLE_SYMBOLICNAME, "arquillian-service");
StringBuilder builder = new StringBuilder();
builder.append("org.jboss.arquillian.container.test.api,org.jboss.arquillian.junit,");
builder.append("org.jboss.arquillian.osgi,org.jboss.arquillian.test.api,");
builder.append("org.jboss.as.arquillian.api,org.jboss.as.arquillian.container,org.jboss.as.osgi,");
builder.append("org.jboss.shrinkwrap.api,org.jboss.shrinkwrap.api.asset,org.jboss.shrinkwrap.api.spec,");
builder.append("org.junit,org.junit.runner");
props.setProperty(Constants.EXPORT_PACKAGE, builder.toString());
props.store(baos, null);
} catch (IOException ex) {
throw new IllegalStateException("Cannot write osgi metadata", ex);
}
return new ByteArrayInputStream(baos.toByteArray());