}
loadableExtensions.add(JMXProtocolEndpointExtension.class.getName());
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);
// Replace the loadable extensions with the collected set
archive.delete(ArchivePaths.create(loadableExtensionsPath));
archive.addAsResource(new Asset() {
@Override
public InputStream openStream() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos));
for (String line : loadableExtensions) {