[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