[jboss-svn-commits] JBoss Common SVN: r4544 - in arquillian/trunk: containers/osgi-embedded and 40 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jun 24 04:43:59 EDT 2010


Author: thomas.diesler at jboss.com
Date: 2010-06-24 04:43:57 -0400 (Thu, 24 Jun 2010)
New Revision: 4544

Added:
   arquillian/trunk/containers/osgi-embedded/
   arquillian/trunk/containers/osgi-embedded/.classpath
   arquillian/trunk/containers/osgi-embedded/pom.xml
   arquillian/trunk/containers/osgi-embedded/src/
   arquillian/trunk/containers/osgi-embedded/src/main/
   arquillian/trunk/containers/osgi-embedded/src/main/java/
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedConfiguration.java
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedContainer.java
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiFrameworkLifecycleController.java
   arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiTestEnricher.java
   arquillian/trunk/containers/osgi-embedded/src/main/resources/
   arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/
   arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/
   arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.ContainerConfiguration
   arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer
   arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher
   arquillian/trunk/containers/osgi-embedded/src/test/
   arquillian/trunk/containers/osgi-embedded/src/test/java/
   arquillian/trunk/containers/osgi-embedded/src/test/java/org/
   arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/
   arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/
   arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/
   arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedIntegrationTestCase.java
   arquillian/trunk/containers/osgi-embedded/src/test/resources/
   arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/
   arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/jboss-osgi-bootstrap.xml
   arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/services/
   arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/services/org.jboss.osgi.spi.framework.OSGiBootstrapProvider
   arquillian/trunk/packagers/osgi/
   arquillian/trunk/packagers/osgi/.classpath
   arquillian/trunk/packagers/osgi/pom.xml
   arquillian/trunk/packagers/osgi/src/
   arquillian/trunk/packagers/osgi/src/main/
   arquillian/trunk/packagers/osgi/src/main/java/
   arquillian/trunk/packagers/osgi/src/main/java/org/
   arquillian/trunk/packagers/osgi/src/main/java/org/jboss/
   arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/
   arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/packager/
   arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/packager/osgi/
   arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java
   arquillian/trunk/packagers/osgi/src/main/resources/
   arquillian/trunk/packagers/osgi/src/main/resources/META-INF/
   arquillian/trunk/packagers/osgi/src/main/resources/META-INF/services/
   arquillian/trunk/packagers/osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager
   arquillian/trunk/packagers/osgi/src/test/
   arquillian/trunk/packagers/osgi/src/test/java/
   arquillian/trunk/packagers/osgi/src/test/java/org/
   arquillian/trunk/packagers/osgi/src/test/java/org/jboss/
   arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/
   arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/packager/
   arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/packager/osgi/
   arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java
Modified:
   arquillian/trunk/containers/pom.xml
   arquillian/trunk/packagers/pom.xml
   arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java
Log:
osgi: Add osgi container and packager

Added: arquillian/trunk/containers/osgi-embedded/.classpath
===================================================================
--- arquillian/trunk/containers/osgi-embedded/.classpath	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/.classpath	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**" kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
+	<classpathentry 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/pom.xml
===================================================================
--- arquillian/trunk/containers/osgi-embedded/pom.xml	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/pom.xml	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,87 @@
+<?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.container</groupId>
+  <artifactId>arquillian-osgi-embedded</artifactId>
+  <name>Arquillian Container OSGi Embedded</name>
+  <description>OSGi Embedded Container integration for the Arquillian Project</description>
+
+
+  <!-- Properties -->
+  <properties>
+
+    <!-- Versioning -->
+    <version.jboss_osgi_framework>1.0.0.Alpha5-SNAPSHOT</version.jboss_osgi_framework>
+
+  </properties>
+
+  <!-- Dependencies -->
+  <dependencies>
+
+    <!-- org.jboss.arquillian -->
+    <dependency>
+      <groupId>org.jboss.arquillian</groupId>
+      <artifactId>arquillian-spi</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.arquillian.protocol</groupId>
+      <artifactId>arquillian-protocol-local</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- 
+    <dependency>
+      <groupId>org.jboss.arquillian.packager</groupId>
+      <artifactId>arquillian-packager-osgi</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    -->
+
+    <!-- org.jboss.osgi -->
+    <dependency>
+      <groupId>org.jboss.osgi</groupId>
+      <artifactId>jboss-osgi-spi</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.shrinkwrap</groupId>
+      <artifactId>shrinkwrap-impl-base</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- Test dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.jboss.osgi.framework</groupId>
+      <artifactId>jboss-osgi-framework-core</artifactId>
+      <version>${version.jboss_osgi_framework}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.arquillian</groupId>
+      <artifactId>arquillian-junit</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+</project>

Copied: arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedConfiguration.java (from rev 4543, arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java)
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedConfiguration.java	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedConfiguration.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,35 @@
+/*
+ * 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.spi.ContainerConfiguration;
+import org.jboss.arquillian.spi.ContainerProfile;
+
+/**
+ * [TODO] OSGiEmbeddedConfiguration
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiEmbeddedConfiguration implements ContainerConfiguration
+{
+   public ContainerProfile getContainerProfile()
+   {
+      return ContainerProfile.STANDALONE;
+   }
+
+}

Added: arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedContainer.java
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedContainer.java	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiEmbeddedContainer.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,115 @@
+/*
+ * 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 java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+
+import org.jboss.arquillian.protocol.local.LocalMethodExecutor;
+import org.jboss.arquillian.spi.Configuration;
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
+import org.jboss.arquillian.spi.Context;
+import org.jboss.arquillian.spi.DeployableContainer;
+import org.jboss.arquillian.spi.DeploymentException;
+import org.jboss.arquillian.spi.LifecycleException;
+import org.jboss.arquillian.spi.event.container.AfterDeploy;
+import org.jboss.arquillian.spi.event.container.BeforeSetup;
+import org.jboss.logging.Logger;
+import org.jboss.osgi.framework.bundle.OSGiBundleManager;
+import org.jboss.osgi.spi.framework.OSGiBootstrap;
+import org.jboss.osgi.spi.framework.OSGiBootstrapProvider;
+import org.jboss.osgi.testing.OSGiTestHelper;
+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.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.BundleException;
+import org.osgi.framework.launch.Framework;
+
+/**
+ * [TODO] OSGiEmbeddedContainer
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiEmbeddedContainer implements DeployableContainer
+{
+   // Provide logging
+   private static final Logger log = Logger.getLogger(OSGiEmbeddedContainer.class);
+   
+   private Framework framework;
+   
+   @Override
+   public void setup(Context context, Configuration configuration)
+   {
+      OSGiBootstrapProvider provider = OSGiBootstrap.getBootstrapProvider();
+      framework = provider.getFramework();
+   }
+   
+   @Override
+   public void start(Context context) throws LifecycleException
+   {
+      try
+      {
+         framework.start();
+      }
+      catch (BundleException ex)
+      {
+         throw new LifecycleException("Cannot start embedded OSGi Framework", ex);
+      }
+   }
+
+   @Override
+   public void stop(Context context) throws LifecycleException
+   {
+      try
+      {
+         framework.stop();
+         framework.waitForStop(3000);
+      }
+      catch (Exception ex)
+      {
+         log.error("Cannot stop embedded OSGi Framework", ex);
+      }
+   }
+
+   @Override
+   public ContainerMethodExecutor deploy(Context context, final Archive<?> archive)  throws DeploymentException
+   {
+      VirtualFile virtualFile = toVirtualFile(archive);
+      BundleContext sysContext = framework.getBundleContext();
+      sysContext.installBundle(archive.getName(), virtualFile.openStream());
+      return new LocalMethodExecutor();
+   }
+
+   @Override
+   public void undeploy(Context context, Archive<?> archive) throws DeploymentException
+   {
+   }
+
+   private VirtualFile toVirtualFile(Archive<?> archive) throws IOException, MalformedURLException
+   {
+      ZipExporter exporter = archive.as(ZipExporter.class);
+      File target = File.createTempFile("osgi-bundle_", ".jar");
+      exporter.exportZip(target, true);
+      target.deleteOnExit();
+      return AbstractVFS.getRoot(target.toURI().toURL());
+   }
+}
\ No newline at end of file

Copied: arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiFrameworkLifecycleController.java (from rev 4543, arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java)
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiFrameworkLifecycleController.java	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiFrameworkLifecycleController.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,36 @@
+/*
+ * 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.spi.Context;
+import org.jboss.arquillian.spi.event.Event;
+import org.jboss.arquillian.spi.event.suite.EventHandler;
+
+/**
+ * [TODO] OSGiFrameworkLifecycleController
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiFrameworkLifecycleController implements EventHandler<Event>
+{
+   @Override
+   public void callback(Context context, Event event) throws Exception
+   {
+      System.out.println(context + ", " + event);
+   }
+}
\ No newline at end of file

Copied: arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiTestEnricher.java (from rev 4543, arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java)
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiTestEnricher.java	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/java/org/jboss/arquillian/osgi/OSGiTestEnricher.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,42 @@
+/*
+ * 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 java.lang.reflect.Method;
+
+import org.jboss.arquillian.spi.Context;
+import org.jboss.arquillian.spi.TestEnricher;
+
+/**
+ * [TODO] OSGiTestEnricher
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiTestEnricher implements TestEnricher
+{
+   @Override
+   public void enrich(Context context, Object testCase)
+   {
+   }
+
+   @Override
+   public Object[] resolve(Context context, Method method)
+   {
+      return null;
+   }
+}

Added: arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.ContainerConfiguration
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.ContainerConfiguration	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.ContainerConfiguration	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1 @@
+org.jboss.arquillian.osgi.OSGiEmbeddedConfiguration
\ No newline at end of file

Added: arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1 @@
+org.jboss.arquillian.osgi.OSGiEmbeddedContainer
\ No newline at end of file

Added: arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1 @@
+org.jboss.arquillian.osgi.OSGiTestEnricher
\ No newline at end of file

Added: arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedIntegrationTestCase.java
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedIntegrationTestCase.java	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/test/java/org/jboss/arquillian/osgi/OSGiEmbeddedIntegrationTestCase.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,60 @@
+/*
+ * 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 java.io.InputStream;
+
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.osgi.testing.OSGiManifestBuilder;
+import org.jboss.shrinkwrap.api.Asset;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * WeldEmbeddedIntegrationTestCase
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: $
+ */
+ at RunWith(Arquillian.class)
+public class OSGiEmbeddedIntegrationTestCase
+{
+   @Deployment
+   public static JavaArchive createdeployment()
+   {
+      final JavaArchive archive = ShrinkWrap.create("test.jar", JavaArchive.class);
+      archive.setManifest(new Asset()
+      {
+         public InputStream openStream()
+         {
+            OSGiManifestBuilder builder = OSGiManifestBuilder.newInstance();
+            builder.addBundleSymbolicName(archive.getName());
+            builder.addBundleManifestVersion(2);
+            return builder.openStream();
+         }
+      });
+      return archive.addClasses(OSGiEmbeddedIntegrationTestCase.class);
+   }
+
+   @Test
+   public void shouldBeAbleToInjectBeanAsInstanceVariable() throws Exception
+   {
+   }
+}

Added: arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/jboss-osgi-bootstrap.xml
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/jboss-osgi-bootstrap.xml	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/jboss-osgi-bootstrap.xml	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,37 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <bean name="OSGiFrameworkProperties" class="org.jboss.osgi.framework.plugins.internal.FrameworkPropertiesImpl">
+    <constructor>
+      <parameter>
+        <map keyClass="java.lang.String" valueClass="java.lang.String">
+          <entry><key>org.osgi.framework.storage</key><value>target/osgi-store</value></entry>
+          <entry><key>org.osgi.framework.storage.clean</key><value>onFirstInit</value></entry>
+          <entry><key>org.osgi.framework.system.packages.extra</key><value>
+          
+            <!-- logging -->
+            org.apache.log4j;version=1.2,
+            org.jboss.logging;version=2.1,
+            
+            <!-- jboss - ->
+            org.jboss.beans.metadata.plugins;version=2.2,
+            org.jboss.beans.metadata.plugins.builder;version=2.2,
+            org.jboss.beans.metadata.spi;version=2.2,
+            org.jboss.beans.metadata.spi.builder;version=2.2,
+            org.jboss.dependency.spi;version=2.2,
+            org.jboss.kernel.spi.dependency;version=2.2,
+            
+            <!- - jboss-osgi - ->
+            org.jboss.osgi.spi;version=1.0,
+            org.jboss.osgi.spi.capability;version=1.0,
+            org.jboss.osgi.spi.framework;version=1.0,
+            org.jboss.osgi.spi.service;version=1.0,
+            org.jboss.osgi.spi.util;version=1.0,
+            org.jboss.osgi.testing;version=1.0
+            -->
+          </value></entry>
+        </map>
+      </parameter>
+    </constructor>
+  </bean>
+  
+</deployment>

Added: arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/services/org.jboss.osgi.spi.framework.OSGiBootstrapProvider
===================================================================
--- arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/services/org.jboss.osgi.spi.framework.OSGiBootstrapProvider	                        (rev 0)
+++ arquillian/trunk/containers/osgi-embedded/src/test/resources/META-INF/services/org.jboss.osgi.spi.framework.OSGiBootstrapProvider	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1 @@
+org.jboss.osgi.framework.launch.OSGiFrameworkBootstrapProvider
\ No newline at end of file

Modified: arquillian/trunk/containers/pom.xml
===================================================================
--- arquillian/trunk/containers/pom.xml	2010-06-24 08:39:47 UTC (rev 4543)
+++ arquillian/trunk/containers/pom.xml	2010-06-24 08:43:57 UTC (rev 4544)
@@ -31,6 +31,7 @@
     <module>jbossas-local-60</module>
     <module>jbossas-embedded-60</module>
     <module>glassfish-embedded-30</module>
+    <module>osgi-embedded</module>    
     <module>weld-embedded</module>    
     <module>weld-ee-embedded</module>
     <module>openejb</module>

Added: arquillian/trunk/packagers/osgi/.classpath
===================================================================
--- arquillian/trunk/packagers/osgi/.classpath	                        (rev 0)
+++ arquillian/trunk/packagers/osgi/.classpath	2010-06-24 08:43:57 UTC (rev 4544)
@@ -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.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: arquillian/trunk/packagers/osgi/pom.xml
===================================================================
--- arquillian/trunk/packagers/osgi/pom.xml	                        (rev 0)
+++ arquillian/trunk/packagers/osgi/pom.xml	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,65 @@
+<?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.packager</groupId>
+   <artifactId>arquillian-packager-osgi</artifactId>
+   <name>Arquillian Packager Java EE</name>
+   <description>Java EE Packager 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>
+
+      <dependency>
+         <groupId>org.jboss.shrinkwrap</groupId>
+         <artifactId>shrinkwrap-impl-base</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.shrinkwrap</groupId>
+         <artifactId>shrinkwrap-spi</artifactId>
+      </dependency>
+
+      <!-- 
+    External Projects
+     -->
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <scope>test</scope>
+      </dependency>
+
+   </dependencies>
+
+</project>
+

Added: arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java
===================================================================
--- arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java	                        (rev 0)
+++ arquillian/trunk/packagers/osgi/src/main/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackager.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,122 @@
+/*
+ * 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.util.Collection;
+
+import org.jboss.arquillian.spi.DeploymentPackager;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+
+/**
+ * Packager for running Arquillian against OSGi containers.
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @version $Revision: $
+ */
+public class OSGiDeploymentPackager implements DeploymentPackager
+{
+   public Archive<?> generateDeployment(Archive<?> applicationArchive, Collection<Archive<?>> auxiliaryArchives)
+   {
+      if(JavaArchive.class.isInstance(applicationArchive))
+      {
+         return handleArchive(JavaArchive.class.cast(applicationArchive), auxiliaryArchives);
+      }
+      
+      throw new IllegalArgumentException(OSGiDeploymentPackager.class.getName()  + 
+            " can not handle archive of type " +  applicationArchive.getClass().getName());
+   }
+
+   private Archive<?> handleArchive(JavaArchive applicationArchive, Collection<Archive<?>> auxiliaryArchives) 
+   {
+      if(containsArchiveOfType(WebArchive.class, auxiliaryArchives))
+      {
+         EnterpriseArchive deployment = ShrinkWrap.create("test.ear", EnterpriseArchive.class)
+                                             .addModule(applicationArchive);
+         for (Archive<?> moduleArchive : auxiliaryArchives)
+         {
+            if (WebArchive.class.isInstance(moduleArchive))
+            {
+               deployment.addModule(moduleArchive);
+            } 
+            else
+            {
+               deployment.addLibrary(moduleArchive);
+            }
+         }
+         return deployment;
+      }
+      else 
+      {
+         WebArchive deployment = ShrinkWrap.create("test.war", WebArchive.class);
+         deployment.addLibraries(auxiliaryArchives.toArray(new Archive[0]));
+         deployment.addLibraries(applicationArchive);
+         return deployment;
+      }
+   }
+
+   private Archive<?> handleArchive(EnterpriseArchive applicationArchive, Collection<Archive<?>> auxiliaryArchives) 
+   {
+      if(!containsArchiveOfType(WebArchive.class, auxiliaryArchives))
+      {
+         for (Archive<?> moduleArchive : auxiliaryArchives)
+         {
+            if ("arquillian-protocol.jar".equals(moduleArchive.getName()) && 
+                  JavaArchive.class.isInstance(moduleArchive))
+            {
+               applicationArchive.addModule(
+                     ShrinkWrap.create("test.war", WebArchive.class)
+                              .addLibraries(moduleArchive));
+            } 
+            else
+            {
+               applicationArchive.addLibrary(moduleArchive);
+            }
+         }
+      }
+      else
+      {
+         for (Archive<?> moduleArchive : auxiliaryArchives)
+         {
+            if (WebArchive.class.isInstance(moduleArchive))
+            {
+               applicationArchive.addModule(moduleArchive);
+            } 
+            else
+            {
+               applicationArchive.addLibrary(moduleArchive);
+            }
+         }
+      }
+      return applicationArchive;
+   }
+   
+   private boolean containsArchiveOfType(Class<? extends Archive<?>> clazz, Collection<Archive<?>> archives) 
+   {
+      for(Archive<?> archive : archives)
+      {
+         if(clazz.isInstance(archive))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+}
\ No newline at end of file

Added: arquillian/trunk/packagers/osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager
===================================================================
--- arquillian/trunk/packagers/osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager	                        (rev 0)
+++ arquillian/trunk/packagers/osgi/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeploymentPackager	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1 @@
+org.jboss.arquillian.packager.osgi.OSGiDeploymentPackager
\ No newline at end of file

Added: arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java
===================================================================
--- arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java	                        (rev 0)
+++ arquillian/trunk/packagers/osgi/src/test/java/org/jboss/arquillian/packager/osgi/OSGiDeploymentPackagerTestCase.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -0,0 +1,170 @@
+/*
+ * 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.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.jboss.arquillian.packager.osgi.OSGiDeploymentPackager;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.ArchivePaths;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+/**
+ * EEDeploymentPackagerTestCase
+ *
+ * @author <a href="mailto:aslak at redhat.com">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class OSGiDeploymentPackagerTestCase
+{
+   @Test
+   public void shouldHandleJavaArchiveEE5Protocol() throws Exception
+   {
+      Archive<?> archive = new OSGiDeploymentPackager().generateDeployment(
+            ShrinkWrap.create("applicationArchive.jar", JavaArchive.class), 
+            createAuxiliaryArchivesEE5());
+      
+      Assert.assertTrue(
+            "Verify that a defined JavaArchive using EE5 WebArchive protocol is build as EnterpriseArchive",
+            EnterpriseArchive.class.isInstance(archive));
+
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives EE Modules are placed in /",
+            archive.contains(ArchivePaths.create("/arquillian-protocol.war")));
+      
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /lib",
+            archive.contains(ArchivePaths.create("/lib/auxiliaryArchive2.jar")));
+
+      Assert.assertTrue(
+            "Verify that the applicationArchive is placed in /",
+            archive.contains(ArchivePaths.create("/applicationArchive.jar")));
+   }
+   
+   @Test
+   public void shouldHandleJavaArchiveEE6Protocol() throws Exception
+   {
+      Archive<?> archive = new OSGiDeploymentPackager().generateDeployment(
+            ShrinkWrap.create("applicationArchive.jar", JavaArchive.class), 
+            createAuxiliaryArchivesEE6());
+      
+      Assert.assertTrue(
+            "Verify that a defined JavaArchive using EE6 JavaArchive protocol is build as WebArchive",
+            WebArchive.class.isInstance(archive));
+
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /WEB-INF/lib",
+            archive.contains(ArchivePaths.create("/WEB-INF/lib/arquillian-protocol.jar")));
+
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /WEB-INF/lib",
+            archive.contains(ArchivePaths.create("/WEB-INF/lib/auxiliaryArchive2.jar")));
+      
+      Assert.assertTrue(
+            "Verify that the applicationArchive is placed in /WEB-INF/lib",
+            archive.contains(ArchivePaths.create("/WEB-INF/lib/applicationArchive.jar")));
+   }
+
+   // as of now, War inside War is not supported. need to merge ? 
+   @Test(expected = IllegalArgumentException.class)
+   public void shouldHandleWebArchiveEE5Protocol() throws Exception
+   {
+      new OSGiDeploymentPackager().generateDeployment(
+            ShrinkWrap.create("applicationArchive.war", WebArchive.class), 
+            createAuxiliaryArchivesEE5());
+      
+   }
+
+   @Test
+   public void shouldHandleWebArchiveEE6Protocol() throws Exception
+   {
+      Archive<?> archive = new OSGiDeploymentPackager().generateDeployment(
+            ShrinkWrap.create("applicationArchive.war", WebArchive.class), 
+            createAuxiliaryArchivesEE6());
+      
+      Assert.assertTrue(
+            "Verify that a defined WebArchive using EE6 JavaArchive protocol is build as WebArchive",
+            WebArchive.class.isInstance(archive));
+
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /WEB-INF/lib",
+            archive.contains(ArchivePaths.create("/WEB-INF/lib/arquillian-protocol.jar")));
+      
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /WEB-INF/lib",
+            archive.contains(ArchivePaths.create("/WEB-INF/lib/auxiliaryArchive2.jar")));
+   }
+
+   @Test
+   public void shouldHandleEnterpriseArchiveEE5Protocol() throws Exception
+   {
+      Archive<?> archive = new OSGiDeploymentPackager().generateDeployment(
+            ShrinkWrap.create("applicationArchive.ear", EnterpriseArchive.class), 
+            createAuxiliaryArchivesEE5());
+
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /",
+            archive.contains(ArchivePaths.create("arquillian-protocol.war")));
+      
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /lib",
+            archive.contains(ArchivePaths.create("/lib/auxiliaryArchive2.jar")));
+
+   }
+
+   @Test
+   public void shouldHandleEnterpriseArchiveEE6Protocol() throws Exception
+   {
+      Archive<?> archive = new OSGiDeploymentPackager().generateDeployment(
+            ShrinkWrap.create("applicationArchive.ear", EnterpriseArchive.class), 
+            createAuxiliaryArchivesEE6());
+      
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /",
+            archive.contains(ArchivePaths.create("test.war")));
+
+      Assert.assertTrue(
+            "Verify that the auxiliaryArchives are placed in /lib",
+            archive.contains(ArchivePaths.create("/lib/auxiliaryArchive2.jar")));
+   }
+
+   private Collection<Archive<?>> createAuxiliaryArchivesEE6() 
+   {
+      List<Archive<?>> archives = new ArrayList<Archive<?>>();
+      archives.add(ShrinkWrap.create("arquillian-protocol.jar", JavaArchive.class));
+      archives.add(ShrinkWrap.create("auxiliaryArchive2.jar", JavaArchive.class));
+      
+      return archives;
+   }
+
+   private Collection<Archive<?>> createAuxiliaryArchivesEE5() 
+   {
+      List<Archive<?>> archives = new ArrayList<Archive<?>>();
+      archives.add(ShrinkWrap.create("arquillian-protocol.war", WebArchive.class));
+      archives.add(ShrinkWrap.create("auxiliaryArchive2.jar", JavaArchive.class));
+      
+      return archives;
+   }
+}

Modified: arquillian/trunk/packagers/pom.xml
===================================================================
--- arquillian/trunk/packagers/pom.xml	2010-06-24 08:39:47 UTC (rev 4543)
+++ arquillian/trunk/packagers/pom.xml	2010-06-24 08:43:57 UTC (rev 4544)
@@ -26,8 +26,9 @@
   <!-- Aggregate Modules -->
   <modules>
     
+    <module>applicationarchive</module>
     <module>javaee</module>
-    <module>applicationarchive</module>
+    <module>osgi</module>
 
   </modules>
 

Modified: arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java
===================================================================
--- arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java	2010-06-24 08:39:47 UTC (rev 4543)
+++ arquillian/trunk/spi/src/main/java/org/jboss/arquillian/spi/DeploymentPackager.java	2010-06-24 08:43:57 UTC (rev 4544)
@@ -21,7 +21,7 @@
 import org.jboss.shrinkwrap.api.Archive;
 
 /**
- * Extension point for the DeployableContainer to prepare the Archives for deployment.
+ * Extension point for the {@link DeployableContainer} to prepare the Archives for deployment.
  * 
  * Example:
  * - Create a EAR, WAR



More information about the jboss-svn-commits mailing list