[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