[jboss-svn-commits] JBoss Common SVN: r3899 - in arquillian/trunk: container-weld-embedded and 30 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 5 19:06:23 EST 2010


Author: aslak
Date: 2010-01-05 19:06:22 -0500 (Tue, 05 Jan 2010)
New Revision: 3899

Added:
   arquillian/trunk/container-weld-embedded/
   arquillian/trunk/container-weld-embedded/pom.xml
   arquillian/trunk/container-weld-embedded/src/
   arquillian/trunk/container-weld-embedded/src/main/
   arquillian/trunk/container-weld-embedded/src/main/java/
   arquillian/trunk/container-weld-embedded/src/main/java/org/
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSEContainer.java
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSETestEnricher.java
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchive.java
   arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImpl.java
   arquillian/trunk/container-weld-embedded/src/main/resources/
   arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/
   arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/
   arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer
   arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher
   arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.weld.shrinkwrap.ShrinkwrapBeanDeploymentArchive
   arquillian/trunk/container-weld-embedded/src/test/
   arquillian/trunk/container-weld-embedded/src/test/java/
   arquillian/trunk/container-weld-embedded/src/test/java/org/
   arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/
   arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/
   arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/weld/
   arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/weld/shrinkwrap/
   arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImplTestCase.java
   arquillian/trunk/container-weld-embedded/src/test/resources/
   arquillian/trunk/protocol-local/
   arquillian/trunk/protocol-local/pom.xml
   arquillian/trunk/protocol-local/src/
   arquillian/trunk/protocol-local/src/main/
   arquillian/trunk/protocol-local/src/main/java/
   arquillian/trunk/protocol-local/src/main/java/org/
   arquillian/trunk/protocol-local/src/main/java/org/jboss/
   arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/
   arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/protocol/
   arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/protocol/local/
   arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/protocol/local/LocalMethodExecutor.java
   arquillian/trunk/protocol-local/src/main/resources/
   arquillian/trunk/protocol-local/src/test/
   arquillian/trunk/protocol-local/src/test/java/
   arquillian/trunk/protocol-local/src/test/resources/
Modified:
   arquillian/trunk/demo-testng/pom.xml
   arquillian/trunk/demo/pom.xml
   arquillian/trunk/pom.xml
Log:
ARQ-54 Added a new protocol for in-vm execution. Weld se embedded container preview.


Added: arquillian/trunk/container-weld-embedded/pom.xml
===================================================================
--- arquillian/trunk/container-weld-embedded/pom.xml	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/pom.xml	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,125 @@
+<?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 -->
+   <artifactId>arquillian-weld-embedded</artifactId>
+   <name>Arquillian Container Weld Embedded</name>
+   <description>Weld Embedded Container integration for the Arquillian Project</description>
+
+
+   <!-- Properties -->
+   <properties>
+
+      <!-- Versioning -->
+      <version.weld_api>1.0</version.weld_api>
+      <version.weld_spi>1.0</version.weld_spi>
+      <version.weld_core>1.0.0</version.weld_core>
+      <version.slf4j>1.5.9.RC1</version.slf4j>
+
+   </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</groupId>
+         <artifactId>arquillian-protocol-local</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+
+
+      <dependency>
+         <groupId>org.jboss.shrinkwrap</groupId>
+         <artifactId>shrinkwrap-impl-base</artifactId>
+      </dependency>
+
+      <!-- 
+    org.jboss.weld
+     -->
+      <dependency>
+         <groupId>org.jboss.weld</groupId>
+         <artifactId>weld-api</artifactId>
+         <version>${version.weld_api}</version>
+         <scope>compile</scope>
+      </dependency>
+
+      <dependency>
+         <groupId>org.jboss.weld</groupId>
+         <artifactId>weld-spi</artifactId>
+         <exclusions>
+            <exclusion>
+               <groupId>javax.jms</groupId>
+               <artifactId>jms</artifactId>
+            </exclusion>
+            <exclusion>
+               <groupId>javax.ejb</groupId>
+               <artifactId>ejb-api</artifactId>
+            </exclusion>
+            <exclusion>
+               <groupId>javax.jta</groupId>
+               <artifactId>transaction-api</artifactId>
+            </exclusion>
+         </exclusions>
+         <version>${version.weld_spi}</version>
+         <scope>compile</scope>
+      </dependency>
+
+      <dependency>
+         <groupId>org.jboss.weld</groupId>
+         <artifactId>weld-core</artifactId>
+         <version>${version.weld_core}</version>
+         <scope>compile</scope>
+      </dependency>
+
+      <dependency>
+         <groupId>javax.enterprise</groupId>
+         <artifactId>cdi-api</artifactId>
+         <version>1.0</version>
+      </dependency>
+
+      <dependency>
+         <groupId>javax.el</groupId>
+         <artifactId>el-api</artifactId>
+         <version>1.2</version>
+      </dependency>
+
+      <dependency>
+         <groupId>javax.annotation</groupId>
+         <artifactId>jsr250-api</artifactId>
+         <version>1.0</version>
+      </dependency>
+
+      <dependency>
+         <groupId>org.slf4j</groupId>
+         <artifactId>slf4j-jdk14</artifactId>
+         <version>${version.slf4j}</version>
+      </dependency>
+
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <scope>test</scope>
+      </dependency>
+   </dependencies>
+</project>
+

Added: arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSEContainer.java
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSEContainer.java	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSEContainer.java	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,189 @@
+/*
+ * 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.weld;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.context.SessionScoped;
+
+import org.jboss.arquillian.protocol.local.LocalMethodExecutor;
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
+import org.jboss.arquillian.spi.DeployableContainer;
+import org.jboss.arquillian.spi.DeploymentException;
+import org.jboss.arquillian.spi.LifecycleException;
+import org.jboss.arquillian.spi.TestMethodExecutor;
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.weld.shrinkwrap.ShrinkwrapBeanDeploymentArchive;
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.WeldBootstrap;
+import org.jboss.weld.bootstrap.api.Environments;
+import org.jboss.weld.bootstrap.api.ServiceRegistry;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.context.RequestContext;
+import org.jboss.weld.context.SessionContext;
+import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore;
+import org.jboss.weld.manager.api.WeldManager;
+
+/**
+ * WeldSEContainer
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class WeldSEContainer implements DeployableContainer
+{
+   public final static ThreadLocal<WeldHolder> WELD_MANAGER = new ThreadLocal<WeldHolder>();
+   
+   /* (non-Javadoc)
+    * @see org.jboss.arquillian.spi.DeployableContainer#start()
+    */
+   @Override
+   public void start() throws LifecycleException
+   {
+   }
+
+   /* (non-Javadoc)
+    * @see org.jboss.arquillian.spi.DeployableContainer#stop()
+    */
+   @Override
+   public void stop() throws LifecycleException
+   {
+   }
+
+   /* (non-Javadoc)
+    * @see org.jboss.arquillian.spi.DeployableContainer#deploy(org.jboss.shrinkwrap.api.Archive)
+    */
+   @Override
+   public ContainerMethodExecutor deploy(final Archive<?> archive)
+         throws DeploymentException
+   {
+      final BeanDeploymentArchive beanArchive = archive.as(ShrinkwrapBeanDeploymentArchive.class);
+
+      Deployment deployment = new Deployment() 
+      {
+         @Override
+         public Collection<BeanDeploymentArchive> getBeanDeploymentArchives()
+         {
+            return Arrays.asList(beanArchive);
+         }
+         
+         @Override
+         public ServiceRegistry getServices()
+         {
+            return beanArchive.getServices();
+         }
+         
+         @Override
+         public BeanDeploymentArchive loadBeanDeploymentArchive(
+               Class<?> beanClass)
+         {
+            return beanArchive;
+         }
+      };
+      final BeanDeploymentArchive mainBeanDepArch = deployment.getBeanDeploymentArchives().iterator().next();
+      
+      WeldBootstrap bootstrap = new WeldBootstrap();
+      bootstrap.startContainer(Environments.SE, deployment, new ConcurrentHashMapBeanStore())
+                  .startInitialization()
+                  .deployBeans()
+                  .validateBeans()
+                  .endInitialization();
+
+      WeldManager manager = bootstrap.getManager(mainBeanDepArch);
+      // TODO: figure out how to really create the scopes..
+      SessionContext sessionContext = new SessionContext();
+      sessionContext.setActive(true);
+      sessionContext.setBeanStore(new ConcurrentHashMapBeanStore());
+      
+      ((BeanManagerImpl)manager).addContext(sessionContext);
+      
+      WELD_MANAGER.set(
+            new WeldHolder(
+                  bootstrap, 
+                  manager));
+
+      // TODO: replace with a before/after invoke interceptor ?
+      return new LocalMethodExecutor() {
+         @Override
+         public TestResult invoke(TestMethodExecutor testMethodExecutor)
+         {
+            WeldManager manager = WELD_MANAGER.get().getManager();
+            try 
+            {
+               RequestContext requestContext = new RequestContext();
+               requestContext.setActive(true);
+               requestContext.setBeanStore(new ConcurrentHashMapBeanStore());
+               ((BeanManagerImpl)manager).addContext(requestContext);
+               
+               return super.invoke(testMethodExecutor);
+            } 
+            finally
+            {
+               RequestContext requestContext = (RequestContext)manager.getContext(RequestScoped.class);
+               requestContext.setActive(false);
+               requestContext.destroy();
+               requestContext.cleanup();
+            }
+         }
+      };
+   }
+
+   /* (non-Javadoc)
+    * @see org.jboss.arquillian.spi.DeployableContainer#undeploy(org.jboss.shrinkwrap.api.Archive)
+    */
+   @Override
+   public void undeploy(Archive<?> archive) throws DeploymentException
+   {
+      WeldHolder holder = WELD_MANAGER.get();
+      if(holder != null) {
+         WeldManager manager = holder.getManager();
+         SessionContext sessionContext = (SessionContext)manager.getContext(SessionScoped.class); 
+         sessionContext.setActive(false);
+         sessionContext.destroy();
+         sessionContext.cleanup();
+
+         holder.getBootstrap().shutdown();
+      }
+      WELD_MANAGER.set(null);
+   }
+   
+   public static class WeldHolder {
+      
+      private WeldBootstrap bootstrap;
+      private WeldManager manager;
+
+      public WeldHolder(WeldBootstrap bootstrap, WeldManager manager)
+      {
+         super();
+         this.bootstrap = bootstrap;
+         this.manager = manager;
+      }
+
+      public WeldBootstrap getBootstrap()
+      {
+         return bootstrap;
+      }
+      public WeldManager getManager()
+      {
+         return manager;
+      }
+   }
+}
\ No newline at end of file

Added: arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSETestEnricher.java
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSETestEnricher.java	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/WeldSETestEnricher.java	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,50 @@
+/*
+ * 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.weld;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionTarget;
+
+import org.jboss.arquillian.spi.TestEnricher;
+import org.jboss.arquillian.weld.WeldSEContainer.WeldHolder;
+import org.jboss.weld.manager.api.WeldManager;
+
+/**
+ * WeldSETestEnricher
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class WeldSETestEnricher implements TestEnricher
+{
+   @SuppressWarnings("unchecked")
+   @Override
+   public void enrich(Object testCase)
+   {
+      WeldHolder holder = WeldSEContainer.WELD_MANAGER.get();
+      if (holder != null)
+      {
+         WeldManager manager = holder.getManager();
+         CreationalContext<Object> creationalContext = manager.createCreationalContext(null);
+         InjectionTarget<Object> injectionTarget = (InjectionTarget<Object>) manager
+               .createInjectionTarget(
+                     manager.createAnnotatedType(testCase.getClass()));
+         
+         injectionTarget.inject(testCase, creationalContext);
+      }
+   }
+}

Added: arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchive.java
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchive.java	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchive.java	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,31 @@
+/*
+ * 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.weld.shrinkwrap;
+
+import org.jboss.shrinkwrap.api.Assignable;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+
+/**
+ * ShrinkwrapBeanDeploymentArchive
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public interface ShrinkwrapBeanDeploymentArchive extends BeanDeploymentArchive, Assignable
+{
+
+}

Added: arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImpl.java
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImpl.java	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImpl.java	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,183 @@
+/*
+ * 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.weld.shrinkwrap;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.jboss.shrinkwrap.api.Archive;
+import org.jboss.shrinkwrap.api.Asset;
+import org.jboss.shrinkwrap.api.Filters;
+import org.jboss.shrinkwrap.api.Path;
+import org.jboss.shrinkwrap.impl.base.AssignableBase;
+import org.jboss.shrinkwrap.impl.base.Validate;
+import org.jboss.shrinkwrap.impl.base.asset.ArchiveAsset;
+import org.jboss.shrinkwrap.impl.base.asset.ClassAsset;
+import org.jboss.weld.bootstrap.api.ServiceRegistry;
+import org.jboss.weld.bootstrap.api.helpers.SimpleServiceRegistry;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.ejb.spi.EjbDescriptor;
+
+/**
+ * ShrinkwrapBeanDeploymentArchiveImpl
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class ShrinkwrapBeanDeploymentArchiveImpl extends AssignableBase implements ShrinkwrapBeanDeploymentArchive 
+{
+   private Archive<?> archive;
+   
+   private ServiceRegistry serviceRegistry = new SimpleServiceRegistry();
+   
+   public ShrinkwrapBeanDeploymentArchiveImpl(Archive<?> archive)
+   {
+      Validate.notNull(archive, "Archive must be specified");
+      this.archive = archive;
+   }
+
+   @Override
+   protected Archive<?> getArchive()
+   {
+      return archive;
+   }
+
+   @Override
+   public Collection<URL> getBeansXml()
+   {
+      List<URL> beanClasses = new ArrayList<URL>();
+      Map<Path, Asset> archives = archive.getContent(Filters.include(".*\\.jar"));
+      for(Map.Entry<Path, Asset> archiveEntry : archives.entrySet()) 
+      {
+         if(archiveEntry.getValue() instanceof ArchiveAsset) 
+         {
+            Archive<?> beansArchive = (Archive<?>) extractFieldFromAsset(archiveEntry.getValue(), "archive");
+            if(beansArchive.getName().matches("arquillian.*")) {
+               continue;
+            }
+            Map<Path, Asset> classes = beansArchive.getContent(Filters.include(".*/beans.xml"));
+            for(final Map.Entry<Path, Asset> entry : classes.entrySet()) 
+            {
+               try 
+               {
+                  beanClasses.add(
+                        new URL(null, "archive://" + entry.getKey().get(), new URLStreamHandler() 
+                        {
+                           protected java.net.URLConnection openConnection(URL u) throws java.io.IOException 
+                           {
+                              return new URLConnection(u)
+                              {
+                                 @Override
+                                 public void connect() throws IOException { }
+                                 
+                                 @Override
+                                 public InputStream getInputStream()
+                                       throws IOException
+                                 {
+                                    return entry.getValue().openStream();
+                                 }
+                              };
+                           };
+                        }));
+               } 
+               catch (Exception e) {
+                  e.printStackTrace();
+               }
+            }
+         }
+      }
+      return beanClasses;
+   }
+
+   @Override
+   public Collection<Class<?>> getBeanClasses()
+   {
+      List<Class<?>> beanClasses = new ArrayList<Class<?>>();
+      Map<Path, Asset> archives = archive.getContent(Filters.include(".*\\.jar"));
+      for(Map.Entry<Path, Asset> archiveEntry : archives.entrySet()) 
+      {
+         if(archiveEntry.getValue() instanceof ArchiveAsset) 
+         {
+            Archive<?> beansArchive = (Archive<?>) extractFieldFromAsset(archiveEntry.getValue(), "archive");
+            if(beansArchive.getName().matches("arquillian.*")) {
+               continue;
+            }
+            Map<Path, Asset> classes = beansArchive.getContent(Filters.include(".*\\.class"));
+            for(Map.Entry<Path, Asset> classEntry : classes.entrySet()) 
+            {
+               if (classEntry.getValue() instanceof ClassAsset)
+               {
+                  beanClasses.add(
+                        (Class<?>)extractFieldFromAsset(
+                              classEntry.getValue(),
+                              "clazz"));
+               }
+            }
+         }
+      }
+      return beanClasses;
+   }
+
+   @Override
+   public Collection<BeanDeploymentArchive> getBeanDeploymentArchives()
+   {
+      return Collections.emptySet();
+   }
+
+   @Override
+   public Collection<EjbDescriptor<?>> getEjbs()
+   {
+      return Collections.emptySet();
+   }
+
+   @Override
+   public String getId()
+   {
+      return archive.getName();
+   }
+
+   @Override
+   public ServiceRegistry getServices()
+   {
+      return serviceRegistry;
+   }
+   
+   private Object extractFieldFromAsset(Asset asset, String fieldName) 
+   {
+      try 
+      {
+         Field field = asset.getClass().getDeclaredField(fieldName);
+         field.setAccessible(true);
+         
+         return field.get(asset);
+      } 
+      catch (Exception e) 
+      {
+         e.printStackTrace();
+      }
+      return null;
+   }
+}
\ No newline at end of file

Added: arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.DeployableContainer	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1 @@
+org.jboss.arquillian.weld.WeldSEContainer
\ No newline at end of file

Added: arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.spi.TestEnricher	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1 @@
+org.jboss.arquillian.weld.WeldSETestEnricher
\ No newline at end of file

Added: arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.weld.shrinkwrap.ShrinkwrapBeanDeploymentArchive
===================================================================
--- arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.weld.shrinkwrap.ShrinkwrapBeanDeploymentArchive	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/main/resources/META-INF/services/org.jboss.arquillian.weld.shrinkwrap.ShrinkwrapBeanDeploymentArchive	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1 @@
+org.jboss.arquillian.weld.shrinkwrap.ShrinkwrapBeanDeploymentArchiveImpl
\ No newline at end of file

Added: arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImplTestCase.java
===================================================================
--- arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImplTestCase.java	                        (rev 0)
+++ arquillian/trunk/container-weld-embedded/src/test/java/org/jboss/arquillian/weld/shrinkwrap/ShrinkwrapBeanDeploymentArchiveImplTestCase.java	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,29 @@
+/*
+ * 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.weld.shrinkwrap;
+
+
+/**
+ * ShrinkwrapBeanDeploymentArchiveImplTestCase
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class ShrinkwrapBeanDeploymentArchiveImplTestCase
+{
+
+}

Modified: arquillian/trunk/demo/pom.xml
===================================================================
--- arquillian/trunk/demo/pom.xml	2010-01-03 23:01:04 UTC (rev 3898)
+++ arquillian/trunk/demo/pom.xml	2010-01-06 00:06:22 UTC (rev 3899)
@@ -27,6 +27,16 @@
 
    <profiles>
       <profile>
+         <id>weld-se</id>
+         <dependencies>
+            <dependency>
+               <groupId>org.jboss.arquillian</groupId>
+               <artifactId>arquillian-weld-embedded</artifactId>
+               <version>${project.version}</version>
+            </dependency>
+         </dependencies>
+      </profile>
+      <profile>
          <id>jboss-embedded</id>
          <dependencies>
             <dependency>
@@ -61,13 +71,21 @@
    <!-- Dependencies -->
    <dependencies>
 
+<!--  
       <dependency>
          <groupId>javax.ejb</groupId>
          <artifactId>ejb-api</artifactId>
          <version>3.0</version>
          <scope>provided</scope>
       </dependency>
+-->
       <dependency>
+         <groupId>org.jboss.ejb3</groupId>
+         <artifactId>jboss-ejb3-api</artifactId>
+         <version>3.1.0</version>
+         <scope>provided</scope>
+      </dependency>
+      <dependency>
          <groupId>javax.enterprise</groupId> 
          <artifactId>cdi-api</artifactId>
          <version>1.0</version>

Modified: arquillian/trunk/demo-testng/pom.xml
===================================================================
--- arquillian/trunk/demo-testng/pom.xml	2010-01-03 23:01:04 UTC (rev 3898)
+++ arquillian/trunk/demo-testng/pom.xml	2010-01-06 00:06:22 UTC (rev 3899)
@@ -27,6 +27,16 @@
 
    <profiles>
       <profile>
+         <id>weld-se</id>
+         <dependencies>
+            <dependency>
+               <groupId>org.jboss.arquillian</groupId>
+               <artifactId>arquillian-weld-embedded</artifactId>
+               <version>${project.version}</version>
+            </dependency>
+         </dependencies>
+      </profile>
+      <profile>
          <id>jboss-embedded</id>
          <dependencies>
             <dependency>

Modified: arquillian/trunk/pom.xml
===================================================================
--- arquillian/trunk/pom.xml	2010-01-03 23:01:04 UTC (rev 3898)
+++ arquillian/trunk/pom.xml	2010-01-06 00:06:22 UTC (rev 3899)
@@ -42,19 +42,31 @@
 
   <!-- Aggregate Modules -->
   <modules>
+    <!-- Core -->
     <module>api</module>
     <module>spi</module>
     <module>build</module>
     <module>impl-base</module>
+
+    <!-- Test Framework -->
     <module>junit</module>
     <module>testng</module>
+
+    <!-- Protocols -->
     <module>protocol-servlet</module>
+    <module>protocol-local</module>
+
+    <!-- Containers -->
 <!--
     <module>container-jboss-embedded</module>
 -->
     <module>container-jboss-remote-51</module>
     <module>container-jboss-remote-60</module>
     <module>testenricher-jboss</module>
+
+    <module>container-weld-embedded</module>
+
+    <!-- Demo / Test Suite -->
     <module>demo</module>
     <module>demo-testng</module>
 </modules>

Added: arquillian/trunk/protocol-local/pom.xml
===================================================================
--- arquillian/trunk/protocol-local/pom.xml	                        (rev 0)
+++ arquillian/trunk/protocol-local/pom.xml	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,58 @@
+<?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 -->
+   <artifactId>arquillian-protocol-local</artifactId>
+   <name>Arquillian Protocol Local</name>
+   <description>Protocol handler for communicating whithin the same Java VM</description>
+
+
+   <!-- Properties -->
+   <properties>
+
+      <!-- Versioning -->
+
+   </properties>
+
+   <!-- Dependencies -->
+   <dependencies>
+
+      <!-- 
+    org.jboss.arquillian
+     -->
+      <dependency>
+         <groupId>org.jboss.arquillian</groupId>
+         <artifactId>arquillian-spi</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+
+      <!-- 
+    servlet api
+     -->
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <scope>test</scope>
+      </dependency>
+
+      <dependency>
+         <groupId>org.jboss.shrinkwrap</groupId>
+         <artifactId>shrinkwrap-impl-base</artifactId>
+         <scope>test</scope>
+      </dependency>
+
+   </dependencies>
+</project>
+

Added: arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/protocol/local/LocalMethodExecutor.java
===================================================================
--- arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/protocol/local/LocalMethodExecutor.java	                        (rev 0)
+++ arquillian/trunk/protocol-local/src/main/java/org/jboss/arquillian/protocol/local/LocalMethodExecutor.java	2010-01-06 00:06:22 UTC (rev 3899)
@@ -0,0 +1,66 @@
+/*
+ * 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.protocol.local;
+
+import org.jboss.arquillian.spi.ContainerMethodExecutor;
+import org.jboss.arquillian.spi.TestMethodExecutor;
+import org.jboss.arquillian.spi.TestResult;
+import org.jboss.arquillian.spi.util.TestEnrichers;
+
+/**
+ * LocalMethodExecutor
+ *
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
+ * @version $Revision: $
+ */
+public class LocalMethodExecutor implements ContainerMethodExecutor
+{
+   @Override
+   public TestResult invoke(TestMethodExecutor testMethodExecutor)
+   {
+      try 
+      {
+         TestEnrichers.enrich(testMethodExecutor.getInstance());
+
+         testMethodExecutor.invoke();
+         
+         return new TestResult()
+         {
+            private static final long serialVersionUID = 1L;
+
+            @Override
+            public Throwable getThrowable() { return null; }
+            
+            @Override
+            public Status getStatus() { return Status.PASSED; }
+         };
+      }
+      catch (final Throwable e) 
+      {
+         return new TestResult() 
+         {
+            private static final long serialVersionUID = 1L;
+
+            @Override
+            public Status getStatus() {return Status.FAILED; }
+            
+            @Override
+            public Throwable getThrowable() {return e;}
+         };
+      }
+   }
+}
\ No newline at end of file



More information about the jboss-svn-commits mailing list