[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