[jboss-svn-commits] JBoss Common SVN: r4755 - in arquillian/trunk: containers/osgi-embedded-4.2 and 36 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Jul 17 18:51:04 EDT 2010
Author: aslak
Date: 2010-07-17 18:51:03 -0400 (Sat, 17 Jul 2010)
New Revision: 4755
Added:
arquillian/trunk/containers/osgi-embedded-4.2/.classpath
arquillian/trunk/containers/osgi-embedded-4.2/.gitignore
arquillian/trunk/protocols/jmx-osgi-bundle/
arquillian/trunk/protocols/jmx-osgi-bundle/.classpath
arquillian/trunk/protocols/jmx-osgi-bundle/.gitignore
arquillian/trunk/protocols/jmx-osgi-bundle/pom.xml
arquillian/trunk/protocols/jmx-osgi-bundle/src/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/ArquillianBundleActivator.java
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/JUnitBundleTestRunner.java
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/META-INF/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/META-INF/services/
arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner
arquillian/trunk/protocols/jmx-osgi/
arquillian/trunk/protocols/jmx-osgi/.classpath
arquillian/trunk/protocols/jmx-osgi/.gitignore
arquillian/trunk/protocols/jmx-osgi/pom.xml
arquillian/trunk/protocols/jmx-osgi/src/
arquillian/trunk/protocols/jmx-osgi/src/main/
arquillian/trunk/protocols/jmx-osgi/src/main/java/
arquillian/trunk/protocols/jmx-osgi/src/main/java/org/
arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/
arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/
arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/packager/
arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/packager/osgi/
arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java
arquillian/trunk/protocols/jmx-osgi/src/main/resources/
arquillian/trunk/protocols/jmx-osgi/src/main/resources/META-INF/
arquillian/trunk/protocols/jmx-osgi/src/main/resources/META-INF/services/
arquillian/trunk/protocols/jmx-osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager
arquillian/trunk/protocols/jmx-osgi/src/test/
arquillian/trunk/protocols/jmx-osgi/src/test/java/
arquillian/trunk/protocols/jmx-osgi/src/test/java/org/
arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/
arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/
arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/packager/
arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/packager/osgi/
arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java
arquillian/trunk/protocols/jmx/.classpath
arquillian/trunk/protocols/jmx/.gitignore
arquillian/trunk/testenrichers/osgi/.classpath
arquillian/trunk/testenrichers/osgi/.gitignore
Modified:
arquillian/trunk/.gitignore
arquillian/trunk/containers/osgi-embedded-4.2/pom.xml
arquillian/trunk/containers/osgi-embedded-4.2/scripts/assembly-bundles.xml
arquillian/trunk/containers/osgi-embedded-4.2/src/main/java/org/jboss/arquillian/container/osgi/embedded_4_2/OSGiEmbeddedContainer.java
arquillian/trunk/containers/osgi-embedded-4.2/src/test/resources/META-INF/jboss-osgi-bootstrap.xml
arquillian/trunk/pom.xml
arquillian/trunk/protocols/pom.xml
Log:
Merge branch 'master' of ../arquillian-git
Conflicts:
.gitignore
containers/osgi-embedded-4.2/pom.xml
containers/osgi-embedded-4.2/scripts/assembly-bundles.xml
containers/osgi-embedded-4.2/src/main/java/org/jboss/arquillian/container/osgi/embedded_4_2/OSGiEmbeddedContainer.java
containers/osgi-embedded-4.2/src/test/resources/META-INF/jboss-osgi-bootstrap.xml
containers/pom.xml
pom.xml
protocols/pom.xml
Modified: arquillian/trunk/.gitignore
===================================================================
--- arquillian/trunk/.gitignore 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/.gitignore 2010-07-17 22:51:03 UTC (rev 4755)
@@ -59,9 +59,9 @@
protocols/local/target
packagers/osgi/.classpath
packagers/osgi/target
-protocols/servlet-ee5/target
-protocols/servlet-ee6/.classpath
-protocols/servlet-ee6/target
+protocols/servlet-2.5/target
+protocols/servlet-3/.classpath
+protocols/servlet-3/target
spi/.classpath
spi/.project
spi/.settings
Added: arquillian/trunk/containers/osgi-embedded-4.2/.classpath
===================================================================
--- arquillian/trunk/containers/osgi-embedded-4.2/.classpath (rev 0)
+++ arquillian/trunk/containers/osgi-embedded-4.2/.classpath 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: arquillian/trunk/containers/osgi-embedded-4.2/.gitignore
===================================================================
--- arquillian/trunk/containers/osgi-embedded-4.2/.gitignore (rev 0)
+++ arquillian/trunk/containers/osgi-embedded-4.2/.gitignore 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+/target
Modified: arquillian/trunk/containers/osgi-embedded-4.2/pom.xml
===================================================================
--- arquillian/trunk/containers/osgi-embedded-4.2/pom.xml 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/containers/osgi-embedded-4.2/pom.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -67,9 +67,14 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.jboss.arquillian</groupId>
- <artifactId>arquillian-bundle</artifactId>
+ <groupId>org.jboss.arquillian.protocol</groupId>
+ <artifactId>arquillian-protocol-jmx-osgi</artifactId>
<version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian.protocol</groupId>
+ <artifactId>arquillian-protocol-jmx-osgi-bundle</artifactId>
+ <version>${project.version}</version>
<scope>provided</scope>
</dependency>
Modified: arquillian/trunk/containers/osgi-embedded-4.2/scripts/assembly-bundles.xml
===================================================================
--- arquillian/trunk/containers/osgi-embedded-4.2/scripts/assembly-bundles.xml 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/containers/osgi-embedded-4.2/scripts/assembly-bundles.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -15,7 +15,7 @@
<outputDirectory>bundles</outputDirectory>
<outputFileNameMapping>${artifact.artifactId}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
<includes>
- <include>*:arquillian-bundle:jar</include>
+ <include>*:arquillian-protocol-jmx-osgi-bundle:jar</include>
<include>*:org.osgi.compendium:jar</include>
</includes>
<useStrictFiltering>true</useStrictFiltering>
Modified: arquillian/trunk/containers/osgi-embedded-4.2/src/main/java/org/jboss/arquillian/container/osgi/embedded_4_2/OSGiEmbeddedContainer.java
===================================================================
--- arquillian/trunk/containers/osgi-embedded-4.2/src/main/java/org/jboss/arquillian/container/osgi/embedded_4_2/OSGiEmbeddedContainer.java 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/containers/osgi-embedded-4.2/src/main/java/org/jboss/arquillian/container/osgi/embedded_4_2/OSGiEmbeddedContainer.java 2010-07-17 22:51:03 UTC (rev 4755)
@@ -68,8 +68,8 @@
if (getInstalledBundle(bundles, "osgi.cmpn") == null)
installBundle("org.osgi.compendium", false);
- if (getInstalledBundle(bundles, "arquillian-bundle") == null)
- installBundle("arquillian-bundle", true);
+ if (getInstalledBundle(bundles, "arquillian-protocol-jmx-osgi-bundle") == null)
+ installBundle("arquillian-protocol-jmx-osgi-bundle", true);
}
catch (BundleException ex)
{
@@ -177,4 +177,4 @@
}
return null;
}
-}
\ No newline at end of file
+}
Modified: arquillian/trunk/containers/osgi-embedded-4.2/src/test/resources/META-INF/jboss-osgi-bootstrap.xml
===================================================================
--- arquillian/trunk/containers/osgi-embedded-4.2/src/test/resources/META-INF/jboss-osgi-bootstrap.xml 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/containers/osgi-embedded-4.2/src/test/resources/META-INF/jboss-osgi-bootstrap.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -45,7 +45,7 @@
</property>
<property name="autoStart">
<list elementClass="java.net.URL">
- <value>./target/test-libs/bundles/arquillian-bundle.jar</value>
+ <value>./target/test-libs/bundles/arquillian-protocol-jmx-osgi-bundle.jar</value>
</list>
</property>
</bean>
Modified: arquillian/trunk/pom.xml
===================================================================
--- arquillian/trunk/pom.xml 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/pom.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -66,9 +66,10 @@
<module>testng</module>
<!-- Extensions -->
+
+ <module>testenrichers</module>
<module>protocols</module>
- <module>testenrichers</module>
- <module>bundle</module>
+
<module>containers</module>
<module>frameworks</module>
@@ -92,9 +93,8 @@
<module>junit</module>
<!-- Extensions -->
+ <module>testenrichers</module>
<module>protocols</module>
- <module>testenrichers</module>
- <module>bundle</module>
<module>containers</module>
</modules>
</profile>
Added: arquillian/trunk/protocols/jmx/.classpath
===================================================================
--- arquillian/trunk/protocols/jmx/.classpath (rev 0)
+++ arquillian/trunk/protocols/jmx/.classpath 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: arquillian/trunk/protocols/jmx/.gitignore
===================================================================
--- arquillian/trunk/protocols/jmx/.gitignore (rev 0)
+++ arquillian/trunk/protocols/jmx/.gitignore 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+/target
Added: arquillian/trunk/protocols/jmx-osgi/.classpath
===================================================================
--- arquillian/trunk/protocols/jmx-osgi/.classpath (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi/.classpath 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: arquillian/trunk/protocols/jmx-osgi/.gitignore
===================================================================
--- arquillian/trunk/protocols/jmx-osgi/.gitignore (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi/.gitignore 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+/target
Added: arquillian/trunk/protocols/jmx-osgi/pom.xml
===================================================================
--- arquillian/trunk/protocols/jmx-osgi/pom.xml (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi/pom.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi:ts=2:sw=2:expandtab: -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-build</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../build/pom.xml</relativePath>
+ </parent>
+
+ <!-- Model Version -->
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- Artifact Configuration -->
+ <groupId>org.jboss.arquillian.protocol</groupId>
+ <artifactId>arquillian-protocol-jmx-osgi</artifactId>
+ <name>Arquillian Protocol JMS OSGi</name>
+ <description>OSGi JMX Protocol for the Arquillian project</description>
+
+
+ <!-- Properties -->
+ <properties>
+
+
+ </properties>
+
+ <!-- Dependencies -->
+ <dependencies>
+
+ <!-- org.jboss.arquillian -->
+ <dependency>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- org.jboss.osgi -->
+ <dependency>
+ <groupId>org.jboss.osgi</groupId>
+ <artifactId>jboss-osgi-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.shrinkwrap</groupId>
+ <artifactId>shrinkwrap-impl-base</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.shrinkwrap</groupId>
+ <artifactId>shrinkwrap-spi</artifactId>
+ </dependency>
+
+ <!-- Test Dependencies -->
+ <dependency>
+ <groupId>org.jboss.osgi.vfs</groupId>
+ <artifactId>jboss-osgi-vfs30</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
+
Added: arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java
===================================================================
--- arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,89 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.arquillian.packager.osgi;
+
+import java.io.File;
+import java.util.Collection;
+
+import org.jboss.arquillian.spi.DeploymentPackager;
+import org.jboss.arquillian.spi.TestDeployment;
+import org.jboss.osgi.spi.util.BundleInfo;
+import org.jboss.osgi.vfs.AbstractVFS;
+import org.jboss.osgi.vfs.VirtualFile;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.exporter.ZipExporter;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+
+/**
+ * Packager for running Arquillian against OSGi containers.
+ *
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiDeploymentPackager implements DeploymentPackager
+{
+ public Archive<?> generateDeployment(TestDeployment testDeployment)
+ {
+ Archive<?> bundleArchive = testDeployment.getApplicationArchive();
+ if(JavaArchive.class.isInstance(bundleArchive))
+ {
+ return handleArchive(JavaArchive.class.cast(bundleArchive), testDeployment.getAuxiliaryArchives());
+ }
+
+ throw new IllegalArgumentException(OSGiDeploymentPackager.class.getName() +
+ " can not handle archive of type " + bundleArchive.getClass().getName());
+ }
+
+ private Archive<?> handleArchive(JavaArchive archive, Collection<Archive<?>> auxiliaryArchives)
+ {
+ try
+ {
+ validateBundleArchive(archive);
+ return archive;
+ }
+ catch (RuntimeException rte)
+ {
+ throw rte;
+ }
+ catch (Exception ex)
+ {
+ throw new IllegalArgumentException("Not a valid OSGi bundle: " + archive, ex);
+ }
+ }
+
+ private void validateBundleArchive(Archive<?> archive) throws Exception
+ {
+ String archiveName = archive.getName();
+ int dotIndex = archiveName.lastIndexOf(".");
+ if (dotIndex > 0)
+ archiveName = archiveName.substring(0, dotIndex);
+
+ // [TODO] Can this be done in memory?
+ File target = File.createTempFile(archiveName + "-", ".jar");
+ try
+ {
+ ZipExporter exporter = archive.as(ZipExporter.class);
+ exporter.exportZip(target, true);
+ VirtualFile virtualFile = AbstractVFS.getRoot(target.toURI().toURL());
+ BundleInfo.createBundleInfo(virtualFile);
+ }
+ finally
+ {
+ target.delete();
+ }
+ }
+}
Added: arquillian/trunk/protocols/jmx-osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager
===================================================================
--- arquillian/trunk/protocols/jmx-osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+org.jboss.arquillian.packager.osgi.OSGiDeploymentPackager
\ No newline at end of file
Added: arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java
===================================================================
--- arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,82 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.arquillian.packager.osgi;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+
+import org.jboss.osgi.testing.OSGiManifestBuilder;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.arquillian.spi.TestDeployment;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+
+/**
+ * OSGiDeploymentPackagerTestCase
+ *
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiDeploymentPackagerTestCase
+{
+ @Test
+ public void testValidBundle() throws Exception
+ {
+ final JavaArchive archive = ShrinkWrap.create("test-archive.jar", JavaArchive.class);
+ archive.setManifest(new Asset()
+ {
+ public InputStream openStream()
+ {
+ OSGiManifestBuilder builder = OSGiManifestBuilder.newInstance();
+ builder.addBundleSymbolicName(archive.getName());
+ builder.addBundleManifestVersion(2);
+ return builder.openStream();
+ }
+ });
+
+ Archive<?> result = new OSGiDeploymentPackager().generateDeployment(new TestDeployment(archive, new ArrayList<Archive<?>>()));
+ assertNotNull("Result archive not null", result);
+ }
+
+ @Test
+ public void testInvalidBundle() throws Exception
+ {
+ final JavaArchive archive = ShrinkWrap.create("test-archive.jar", JavaArchive.class);
+ archive.setManifest(new Asset()
+ {
+ public InputStream openStream()
+ {
+ OSGiManifestBuilder builder = OSGiManifestBuilder.newInstance();
+ return builder.openStream();
+ }
+ });
+ try
+ {
+ new OSGiDeploymentPackager().generateDeployment(new TestDeployment(archive, new ArrayList<Archive<?>>()));
+ fail("RuntimeException expected");
+ }
+ catch (RuntimeException ex)
+ {
+ // expected
+ }
+ }
+}
Added: arquillian/trunk/protocols/jmx-osgi-bundle/.classpath
===================================================================
--- arquillian/trunk/protocols/jmx-osgi-bundle/.classpath (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi-bundle/.classpath 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: arquillian/trunk/protocols/jmx-osgi-bundle/.gitignore
===================================================================
--- arquillian/trunk/protocols/jmx-osgi-bundle/.gitignore (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi-bundle/.gitignore 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+/target
Added: arquillian/trunk/protocols/jmx-osgi-bundle/pom.xml
===================================================================
--- arquillian/trunk/protocols/jmx-osgi-bundle/pom.xml (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi-bundle/pom.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-build</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../build/pom.xml</relativePath>
+ </parent>
+
+ <!-- Model Version -->
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- Artifact Configuration -->
+ <groupId>org.jboss.arquillian.protocol</groupId>
+ <artifactId>arquillian-protocol-jmx-osgi-bundle</artifactId>
+ <name>Arquillian Protocol JMX OSGi Bundle</name>
+ <description>Arquillian OSGi Bundlei for JMX MBean registration</description>
+ <packaging>bundle</packaging>
+
+ <!-- Properties -->
+ <properties>
+ <!-- Versioning -->
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+ <Bundle-Activator>org.jboss.arquillian.osgi.ArquillianBundleActivator</Bundle-Activator>
+ <Export-Package></Export-Package>
+ <Import-Package>
+ javax.management*,
+ javax.naming,
+ javax.xml.parsers,
+ org.w3c.dom,
+
+ org.jboss.logging;version="[2.1,3.0)",
+
+ org.osgi.framework;version="[1.5,2.0)",
+ org.osgi.util.tracker;version="[1.4,2.0)",
+ </Import-Package>
+ <Private-Package>
+ org.jboss.arquillian.osgi,
+ </Private-Package>
+ <DynamicImport-Package>*</DynamicImport-Package>
+ <Embed-Transitive>true</Embed-Transitive>
+ <Embed-Dependency>
+ arquillian-api;inline=false,
+ arquillian-impl-base;inline=false,
+ arquillian-junit;inline=false,
+ arquillian-protocol-jmx;inline=false,
+ arquillian-testenricher-osgi;inline=false,
+ arquillian-spi;inline=false,
+ shrinkwrap-api;inline=false,
+ shrinkwrap-impl-base;inline=false,
+ shrinkwrap-spi;inline=false,
+ javax.inject;inline=false,
+ junit;inline=false,
+ </Embed-Dependency>
+ <_exportcontents>
+ javax.inject;version=${version.javax.inject_javax.inject},
+ org.jboss.arquillian.junit;version=${project.version},
+ org.jboss.shrinkwrap.api;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.asset;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.container;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.exporter;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.formatter;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.importer;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.serialization;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.spec;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.importer;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.formatter;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.exporter;version=${version.shrinkwrap_shrinkwrap},
+ org.jboss.shrinkwrap.api.container;version=${version.shrinkwrap_shrinkwrap},
+ org.junit.runner;version=${version.junit_junit},
+ org.junit;version=${version.junit_junit},
+ </_exportcontents>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+
+ <!-- PluginManagement -->
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.1.0</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+
+ <!-- Dependencies -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jboss.arquillian.protocol</groupId>
+ <artifactId>arquillian-protocol-jmx</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian.testenricher</groupId>
+ <artifactId>arquillian-testenricher-osgi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.arquillian</groupId>
+ <artifactId>arquillian-junit</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
+
Added: arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/ArquillianBundleActivator.java
===================================================================
--- arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/ArquillianBundleActivator.java (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/ArquillianBundleActivator.java 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,107 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.arquillian.osgi;
+
+// $Id$
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+
+import org.jboss.arquillian.protocol.jmx.JMXTestRunner;
+import org.jboss.arquillian.protocol.jmx.JMXTestRunner.TestClassLoader;
+import org.jboss.arquillian.testenricher.osgi.BundleContextHolder;
+import org.jboss.arquillian.testenricher.osgi.OSGiTestEnricher;
+import org.jboss.logging.Logger;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * This is the Arquillian {@link BundleActivator}.
+ *
+ * It unconditionally starts the {@link JMXTestRunner}.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 17-May-2009
+ */
+public class ArquillianBundleActivator implements BundleActivator
+{
+ // Provide logging
+ private static Logger log = Logger.getLogger(ArquillianBundleActivator.class);
+
+ private JMXTestRunner testRunner;
+
+ public void start(final BundleContext context) throws Exception
+ {
+ TestClassLoader loader = new TestClassLoader()
+ {
+ public Class<?> loadTestClass(String className) throws ClassNotFoundException
+ {
+ Bundle bundle = context.getBundle();
+ return bundle.loadClass(className);
+ }
+ };
+
+ // Register the JMXTestRunner
+ MBeanServer mbeanServer = getMBeanServer(context);
+ testRunner = new JMXTestRunner(loader);
+ testRunner.registerMBean(mbeanServer);
+
+ // Register the BundleContextHolder
+ BundleContextHolder holder = new BundleContextHolder()
+ {
+ public BundleContext getBundleContext()
+ {
+ return context;
+ }
+ };
+ StandardMBean holderMBean = new StandardMBean(holder, BundleContextHolder.class);
+ mbeanServer.registerMBean(holderMBean, new ObjectName(BundleContextHolder.OBJECT_NAME));
+ }
+
+ public void stop(BundleContext context) throws Exception
+ {
+ // Unregister the JMXTestRunner
+ MBeanServer mbeanServer = getMBeanServer(context);
+ testRunner.unregisterMBean(mbeanServer);
+
+ // Unregister the BundleContextHolder
+ mbeanServer.unregisterMBean(new ObjectName(BundleContextHolder.OBJECT_NAME));
+ }
+
+ private MBeanServer getMBeanServer(BundleContext context)
+ {
+ // Check if the MBeanServer is registered as an OSGi service
+ ServiceReference sref = context.getServiceReference(MBeanServer.class.getName());
+ if (sref != null)
+ {
+ MBeanServer mbeanServer = (MBeanServer)context.getService(sref);
+ log.debug("Found MBeanServer fom service: " + mbeanServer.getDefaultDomain());
+ return mbeanServer;
+ }
+
+ // Find or create the MBeanServer
+ return OSGiTestEnricher.findOrCreateMBeanServer();
+ }
+}
\ No newline at end of file
Added: arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/JUnitBundleTestRunner.java
===================================================================
--- arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/JUnitBundleTestRunner.java (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi-bundle/src/main/java/org/jboss/arquillian/osgi/JUnitBundleTestRunner.java 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.arquillian.osgi;
+
+import org.jboss.arquillian.junit.JUnitTestRunner;
+import org.jboss.arquillian.spi.TestResult;
+
+/**
+ * A JUnitTestRunner for OSGi
+ *
+ * @author thomas.diesler at jboss.com
+ * @version $Revision: $
+ */
+public class JUnitBundleTestRunner extends JUnitTestRunner
+{
+ @Override
+ public TestResult execute(Class<?> testClass, String methodName)
+ {
+ ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
+ try
+ {
+ // Make sure we run in the context of the arquillian-bundle class loader
+ Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
+ return super.execute(testClass, methodName);
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(ctxLoader);
+ }
+ }
+}
Added: arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner
===================================================================
--- arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner (rev 0)
+++ arquillian/trunk/protocols/jmx-osgi-bundle/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestRunner 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+org.jboss.arquillian.osgi.JUnitBundleTestRunner
Modified: arquillian/trunk/protocols/pom.xml
===================================================================
--- arquillian/trunk/protocols/pom.xml 2010-07-16 16:00:42 UTC (rev 4754)
+++ arquillian/trunk/protocols/pom.xml 2010-07-17 22:51:03 UTC (rev 4755)
@@ -37,6 +37,8 @@
<module>servlet-3</module>
<module>local</module>
<module>jmx</module>
+ <module>jmx-osgi</module>
+ <module>jmx-osgi-bundle</module>
</modules>
</profile>
@@ -45,6 +47,8 @@
<id>osgi</id>
<modules>
<module>jmx</module>
+ <module>jmx-osgi</module>
+ <module>jmx-osgi-bundle</module>
</modules>
</profile>
</profiles>
Added: arquillian/trunk/testenrichers/osgi/.classpath
===================================================================
--- arquillian/trunk/testenrichers/osgi/.classpath (rev 0)
+++ arquillian/trunk/testenrichers/osgi/.classpath 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: arquillian/trunk/testenrichers/osgi/.gitignore
===================================================================
--- arquillian/trunk/testenrichers/osgi/.gitignore (rev 0)
+++ arquillian/trunk/testenrichers/osgi/.gitignore 2010-07-17 22:51:03 UTC (rev 4755)
@@ -0,0 +1 @@
+/target
More information about the jboss-svn-commits
mailing list