[jboss-cvs] JBossAS SVN: r107931 - in branches/infinispan-int: component-matrix and 32 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Aug 31 16:35:48 EDT 2010
Author: pferraro
Date: 2010-08-31 16:35:44 -0400 (Tue, 31 Aug 2010)
New Revision: 107931
Added:
branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/BeanClassLocalViewEjb.java
branches/infinispan-int/resteasy-int/test/cdi-test-2/src/test/java/org/jboss/resteasy/cdi/test/BeanClassLocalViewEjbTest.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbInjectionServices.java
branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbInjectionServices.java
Modified:
branches/infinispan-int/build/build.xml
branches/infinispan-int/component-matrix/pom.xml
branches/infinispan-int/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
branches/infinispan-int/ejb3/pom.xml
branches/infinispan-int/ejb3/src/main/java/org/jboss/ejb3/deployers/JBossASKernel.java
branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResource.java
branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResourceLocal.java
branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEApplicationInformer.java
branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEModuleInformer.java
branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java
branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/WebModule.java
branches/infinispan-int/testsuite/build.xml
branches/infinispan-int/testsuite/imports/config/tests-secured.xml
branches/infinispan-int/testsuite/imports/sections/classloader.xml
branches/infinispan-int/testsuite/imports/server-config.xml
branches/infinispan-int/testsuite/src/main/org/jboss/test/classloader/test/ScopingUnitTestCase.java
branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/defaultcfg/profileservice/test/FarmedClusterHotDeployUnitTestCase.java
branches/infinispan-int/testsuite/src/resources/test-configs/tomcat-webctx/deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml
branches/infinispan-int/testsuite/src/resources/web/federation/authext/war-deployers-jboss-beans.xml
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/NamingListener.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java
branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatService.java
branches/infinispan-int/tomcat/src/resources/standalone/war-deployers-jboss-beans.xml
branches/infinispan-int/tomcat/src/resources/war-deployers-jboss-beans.xml
branches/infinispan-int/weld-int/assembly/pom.xml
branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml
branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-services-jboss-beans.xml
branches/infinispan-int/weld-int/deployer-mc-int/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/BootstrapInfo.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/EjbServicesDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/FlatDeployment.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossBeanDeploymentArchive.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/helpers/BootstrapBean.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java
branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbServices.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockWeldBootstrap.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/WeldDEWrapper.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentTestCase.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java
branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/WeldDiscoveryEnvTestCase.java
branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml
branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BootDeployerTestCase.xml
branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml
branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/FlatDeploymentTestCase.xml
branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml
branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java
branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossMessageDrivenBeanDescriptorAdaptor.java
branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java
Log:
merge --depth=infinity -r107658:107921
Modified: branches/infinispan-int/build/build.xml
===================================================================
--- branches/infinispan-int/build/build.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/build/build.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -747,9 +747,12 @@
<include name="ejb3-nointerface-jboss-beans.xml"/>
<include name="ejb3-metadata-deployers-jboss-beans.xml"/>
<include name="jboss-ejb3-singleton-deployer-jboss-beans.xml"/>
+ <include name="ejb3-bean-instantiator-jboss-beans.xml"/>
+
</fileset>
<fileset refid="org.jboss.ejb3:jboss-ejb3-timerservice-deployer:jar"/>
<fileset refid="org.jboss.ejb3.async:jboss-ejb3-async-deployer:jar"/>
+ <fileset refid="org.jboss.ejb3.instantiator:jboss-ejb3-instantiator-deployer:jar"/>
<!-- Strip version numbers from the jar names -->
<mapper refid="remove-versions" />
</copy>
@@ -2137,6 +2140,8 @@
<fileset refid="org.jboss.ejb3:jboss-ejb3-security:jar"/>
<fileset refid="org.jboss.ejb3:jboss-ejb3-timerservice-spi:jar"/>
<fileset refid="org.jboss.ejb3:jboss-ejb3-transactions:jar"/>
+ <fileset refid="org.jboss.ejb3.instantiator:jboss-ejb3-instantiator-spi:jar"/>
+ <fileset refid="org.jboss.ejb3.instantiator:jboss-ejb3-instantiator-impl:jar"/>
<fileset refid="org.jboss.ejb3.proxy:proxy-spi:jar"/>
<fileset refid="org.jboss.ejb3.proxy:proxy-javassist:jar"/>
<fileset refid="org.jboss.ejb3.proxy:proxy-reflect:jar"/>
Modified: branches/infinispan-int/component-matrix/pom.xml
===================================================================
--- branches/infinispan-int/component-matrix/pom.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/component-matrix/pom.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -11,7 +11,7 @@
<groupId>org.jboss</groupId>
<artifactId>jboss-parent</artifactId>
<version>5</version>
- <relativePath/>
+ <relativePath />
</parent>
<!-- POM Model Version -->
@@ -33,7 +33,7 @@
<properties>
<version.apache.aries.jmx>0.1-incubating</version.apache.aries.jmx>
<version.apache.aries.util>0.1-incubating</version.apache.aries.util>
- <version.apache.cxf>2.2.9-patch-01</version.apache.cxf>
+ <version.apache.cxf>2.2.10</version.apache.cxf>
<version.apache.neethi>2.0.4</version.apache.neethi>
<version.apache.felix.log>1.0.0</version.apache.felix.log>
<version.apache.velocity>1.6.2</version.apache.velocity>
@@ -54,10 +54,10 @@
<version.jboss.jaxr>2.0.1</version.jboss.jaxr>
<version.jboss.jbossts>4.11.0.Final</version.jboss.jbossts>
<version.jboss.jbossws-native>3.3.0.GA</version.jboss.jbossws-native>
- <version.jboss.jbossws-cxf>3.4.0.Beta1</version.jboss.jbossws-cxf>
- <version.jboss.jbossws-common>1.4.0.Beta1</version.jboss.jbossws-common>
- <version.jboss.jbossws-framework>3.4.0.Beta1</version.jboss.jbossws-framework>
- <version.jboss.jbossws-spi>1.4.0.Beta1</version.jboss.jbossws-spi>
+ <version.jboss.jbossws-cxf>3.4.0.Beta2</version.jboss.jbossws-cxf>
+ <version.jboss.jbossws-common>1.4.0.Beta2</version.jboss.jbossws-common>
+ <version.jboss.jbossws-framework>3.4.0.Beta2</version.jboss.jbossws-framework>
+ <version.jboss.jbossws-spi>1.4.0.Beta2</version.jboss.jbossws-spi>
<version.jboss.jms-integration-tests>1.0.1.GA</version.jboss.jms-integration-tests>
<version.jboss.jsf-deployer>1.0.0</version.jboss.jsf-deployer>
<version.jboss.osgi.blueprint>1.0.0.Beta2</version.jboss.osgi.blueprint>
@@ -116,7 +116,7 @@
<version.org.jboss.injection>0.1.0-alpha-2</version.org.jboss.injection>
<version.org.jboss.interceptor>1.0.0-CR11</version.org.jboss.interceptor>
<version.org.jboss.integration>6.0.0.CR1</version.org.jboss.integration>
- <version.org.jboss.javaee.specs.bom>1.0.0.Beta5</version.org.jboss.javaee.specs.bom>
+ <version.org.jboss.javaee.specs.bom>1.0.0.Beta6</version.org.jboss.javaee.specs.bom>
<version.org.jboss.jbossxb>2.0.2.Beta7</version.org.jboss.jbossxb>
<version.org.jboss.jopr>1.4.0.CR2</version.org.jboss.jopr>
<version.org.jboss.jpa.deployers>1.0.2-alpha-1</version.org.jboss.jpa.deployers>
@@ -158,12 +158,13 @@
<version.org.jboss.stdio>1.0.0.CR3</version.org.jboss.stdio>
<version.org.jboss.threads>2.0.0.CR4</version.org.jboss.threads>
<version.org.jboss.vfs>3.0.0.CR5</version.org.jboss.vfs>
- <version.org.jboss.weld>1.0.1-SP4</version.org.jboss.weld>
+ <version.org.jboss.weld>1.1.0.Beta1</version.org.jboss.weld>
<version.org.jboss.xnio>2.1.0.CR2</version.org.jboss.xnio>
<version.org.jboss.xnio.metadata>2.1.0.CR5</version.org.jboss.xnio.metadata>
<version.org.jgroups>2.10.0.GA</version.org.jgroups>
<version.org.osgi>4.2.0</version.org.osgi>
<version.org.slf4j>1.5.6</version.org.slf4j>
+ <version.ch.qos.cal10n>0.7.2</version.ch.qos.cal10n>
<version.org.springframework>3.0.1.RELEASE</version.org.springframework>
<version.oswego-concurrent.concurrent>1.3.4-jboss-update1</version.oswego-concurrent.concurrent>
<version.seam.integration>6.0.0.Alpha1</version.seam.integration>
@@ -173,7 +174,7 @@
<version.sun.jaxb>2.2</version.sun.jaxb>
<version.sun-jaxws>2.2</version.sun-jaxws>
<version.sun-policy>2.0-b01</version.sun-policy>
- <version.weld.api>1.0-SP1</version.weld.api>
+ <version.weld.api>1.1.Beta1</version.weld.api>
<version.xdoclet>1.2.3</version.xdoclet>
<version.xmlschema>1.4.5</version.xmlschema>
</properties>
@@ -1686,6 +1687,12 @@
</dependency>
<dependency>
+ <groupId>ch.qos.cal10n</groupId>
+ <artifactId>cal10n-api</artifactId>
+ <version>${version.ch.qos.cal10n}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${version.org.slf4j}</version>
@@ -2911,7 +2918,7 @@
<type>pom</type>
<scope>import</scope>
</dependency>
-
+
<!-- This to move into the EJB3 BOM -->
<dependency>
<groupId>org.jboss.ejb3.embedded</groupId>
@@ -4006,7 +4013,7 @@
<exclude>jboss:jboss-common</exclude>
<exclude>jboss:jboss-common-core</exclude>
<exclude>javax.el:el-api</exclude>
-<!-- <exclude>javax.transaction:jta</exclude>-->
+ <exclude>javax.transaction:jta</exclude>
<exclude>javax.security:jacc</exclude>
<exclude>bsh:bsh</exclude>
<exclude>bsf:bsf</exclude>
Modified: branches/infinispan-int/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java
===================================================================
--- branches/infinispan-int/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/connector/src/main/java/org/jboss/resource/connectionmanager/InternalManagedConnectionPool.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -630,7 +630,7 @@
{
synchronized (cls)
{
- return cls.size() == 0;
+ return cls.size() == 0 && checkedOut.size() == 0;
}
}
Modified: branches/infinispan-int/ejb3/pom.xml
===================================================================
--- branches/infinispan-int/ejb3/pom.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/ejb3/pom.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -101,6 +101,11 @@
<include name="META-INF/ejb3-metadata-deployers-jboss-beans.xml" />
</patternset>
</unjar>
+ <unjar src="${maven.dependency.org.jboss.ejb3.instantiator.jboss-ejb3-instantiator-impl.jar.path}" dest="target/resources">
+ <patternset>
+ <include name="META-INF/ejb3-bean-instantiator-jboss-beans.xml" />
+ </patternset>
+ </unjar>
<unjar src="${maven.dependency.org.jboss.ejb3.singleton.jboss-ejb3-singleton-deployer.jar.path}" dest="target/resources">
<patternset>
<include name="META-INF/jboss-ejb3-singleton-deployer-jboss-beans.xml" />
@@ -142,6 +147,7 @@
<include name="ejb3-nointerface-jboss-beans.xml" />
<include name="ejb3-metadata-deployers-jboss-beans.xml" />
<include name="jboss-ejb3-singleton-deployer-jboss-beans.xml" />
+ <include name="ejb3-bean-instantiator-jboss-beans.xml" />
</fileset>
<fileset dir="target/resources/deployers/META-INF">
<include name="ejb3-deployers-jboss-beans.xml" />
Modified: branches/infinispan-int/ejb3/src/main/java/org/jboss/ejb3/deployers/JBossASKernel.java
===================================================================
--- branches/infinispan-int/ejb3/src/main/java/org/jboss/ejb3/deployers/JBossASKernel.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/ejb3/src/main/java/org/jboss/ejb3/deployers/JBossASKernel.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -140,14 +140,17 @@
if(service instanceof EJBContainer)
{
EJBContainer container = EJBContainer.class.cast(service);
- // TODO: use a resolver
+ // TODO: use an informer
JavaEEModule module = container.getModule();
+ String moduleName = stripSuffix(module.getName());
JavaEEApplication app = module.getApplication();
- String encFactoryBeanName = "jboss.ejb3:" + (app != null ? "application=" + stripSuffix(app.getName()) + "," : "") + "module=" + stripSuffix(module.getName()) + ",component=" + container.getEjbName() + ",service=EjbEncFactory";
+ String appName = app != null ? stripSuffix(app.getName()) : null;
+ String scopedBeanName = "application=" + (appName != null ? appName : moduleName) + ",module=" + moduleName + ",component=" + container.getEjbName();
+ String encFactoryBeanName = "jboss.ejb3:" + scopedBeanName + ",service=EjbEncFactory";
// create an EjbEncFactory for this container
{
BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(encFactoryBeanName, NamingComponentEjbEncFactory.class.getName());
- String componentBeanName = "jboss.naming:" + (app != null ? "application=" + stripSuffix(app.getName()) + "," : "") + "module=" + stripSuffix(module.getName()) + ",component=" + container.getEjbName();
+ String componentBeanName = "jboss.naming:" + scopedBeanName;
builder.addConstructorParameter(JavaEEComponent.class.getName(), new AbstractInjectionValueMetaData(componentBeanName));
// TODO: is deployment always available at this stage?
deployment.getBeanFactories().add(builder.getBeanMetaDataFactory());
Copied: branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/BeanClassLocalViewEjb.java (from rev 107921, trunk/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/BeanClassLocalViewEjb.java)
===================================================================
--- branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/BeanClassLocalViewEjb.java (rev 0)
+++ branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/BeanClassLocalViewEjb.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,119 @@
+package org.jboss.resteasy.cdi.test.ejb;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.inject.Inject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.UriInfo;
+
+import org.jboss.resteasy.cdi.test.Cat;
+import org.jboss.resteasy.cdi.test.Subresource;
+
+ at Stateless
+ at Path("/beanClassLocalViewEjb")
+ at Produces("text/plain")
+public class BeanClassLocalViewEjb
+{
+ private static int uniqueId = 0;
+ private int id = uniqueId++;
+
+ @Inject
+ private Cat cat;
+ @EJB
+ private InjectedStatelessEjbLocal statelessEjb;
+ private Cat constructorCat;
+ private Cat initializerCat;
+ @Context
+ private UriInfo uriInfo;
+ private UriInfo setterUriInfo;
+ @Inject
+ private Subresource subresource;
+
+ public BeanClassLocalViewEjb()
+ {
+ }
+
+ @Inject
+ public BeanClassLocalViewEjb(Cat cat)
+ {
+ constructorCat = cat;
+ }
+
+ @Inject
+ public void init(Cat cat)
+ {
+ initializerCat = cat;
+ }
+
+ @GET
+ @Path("/fieldInjection")
+ public boolean fieldInjection()
+ {
+ return cat != null;
+ }
+
+ @GET
+ @Path("/ejbFieldInjection")
+ public boolean testEjbFieldInjection()
+ {
+ return statelessEjb.foo();
+ }
+
+ @GET
+ @Path("/jaxrsFieldInjection")
+ public boolean jaxrsFieldInjection()
+ {
+ return uriInfo != null;
+ }
+
+ @GET
+ @Path("/jaxrsSetterInjection")
+ public boolean jaxrsSetterInjection()
+ {
+ return setterUriInfo != null;
+ }
+
+ @GET
+ @Path("/constructorInjection")
+ public boolean constructorInjection()
+ {
+ return constructorCat != null;
+ }
+
+ @GET
+ @Path("/initializerInjection")
+ public boolean initializerInjection()
+ {
+ return initializerCat != null;
+ }
+
+ @GET
+ @Path("/jaxrsMethodInjection")
+ public String jaxrsMethodInjection(@QueryParam("foo") String query)
+ {
+ return query;
+ }
+
+ @GET
+ @Path("/toString")
+ public int getId()
+ {
+ return id;
+ }
+
+ @Context
+ public void setSetterUriInfo(UriInfo setterUriInfo)
+ {
+ this.setterUriInfo = setterUriInfo;
+ }
+
+ @Path("/subresource")
+ public Subresource subresource()
+ {
+ return subresource;
+ }
+}
Modified: branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResource.java
===================================================================
--- branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResource.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResource.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -102,9 +102,4 @@
{
return subresource;
}
-
- @Remove
- public void remove()
- {
- }
}
Modified: branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResourceLocal.java
===================================================================
--- branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResourceLocal.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/resteasy-int/test/cdi-test-2/src/main/java/org/jboss/resteasy/cdi/test/ejb/StatelessSessionBeanResourceLocal.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -55,6 +55,4 @@
@Path("/subresource")
public Subresource subresource();
-
- public void remove();
}
Copied: branches/infinispan-int/resteasy-int/test/cdi-test-2/src/test/java/org/jboss/resteasy/cdi/test/BeanClassLocalViewEjbTest.java (from rev 107921, trunk/resteasy-int/test/cdi-test-2/src/test/java/org/jboss/resteasy/cdi/test/BeanClassLocalViewEjbTest.java)
===================================================================
--- branches/infinispan-int/resteasy-int/test/cdi-test-2/src/test/java/org/jboss/resteasy/cdi/test/BeanClassLocalViewEjbTest.java (rev 0)
+++ branches/infinispan-int/resteasy-int/test/cdi-test-2/src/test/java/org/jboss/resteasy/cdi/test/BeanClassLocalViewEjbTest.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,11 @@
+package org.jboss.resteasy.cdi.test;
+
+public class BeanClassLocalViewEjbTest extends StatelessSessionBeanTest
+{
+
+ @Override
+ protected String getTestPrefix()
+ {
+ return "beanClassLocalViewEjb/";
+ }
+}
Modified: branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEApplicationInformer.java
===================================================================
--- branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEApplicationInformer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEApplicationInformer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -1,16 +1,14 @@
package org.jboss.as.naming.javaee;
import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.metadata.ear.jboss.JBossAppMetaData;
import org.jboss.reloaded.naming.deployers.javaee.JavaEEApplicationInformer;
-import org.jboss.system.metadata.ServiceDeployment;
/**
* @author <a href="cdewolf at redhat.com">Carlo de Wolf</a>
*/
public class NamingJavaEEApplicationInformer implements JavaEEApplicationInformer
{
- private static final String REQUIRED_ATTACHMENTS[] = { JBossAppMetaData.class.getName(), ServiceDeployment.class.getName() };
+ private static final String REQUIRED_ATTACHMENTS[] = null;
public String getApplicationName(DeploymentUnit deploymentUnit) throws IllegalArgumentException
{
@@ -23,17 +21,11 @@
public boolean isJavaEEApplication(DeploymentUnit deploymentUnit)
{
- return deploymentUnit.isAttachmentPresent(JBossAppMetaData.class) || isTopLevelServiceArchive(deploymentUnit);
+ // JavaEE 6.0 FR 5.2.2
+ // practically everything deployed standalone is considered a JavaEEApplication in terms of naming
+ return deploymentUnit.isTopLevel();
}
- /**
- * In a deployment consisting of x.sar/ejbs.jar, the x.sar substitutes an EAR.
- */
- protected boolean isTopLevelServiceArchive(DeploymentUnit deploymentUnit)
- {
- return deploymentUnit.isTopLevel() && deploymentUnit.isAttachmentPresent(ServiceDeployment.class);
- }
-
public String[] getRequiredAttachments()
{
return REQUIRED_ATTACHMENTS;
Modified: branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEModuleInformer.java
===================================================================
--- branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEModuleInformer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/server/src/main/java/org/jboss/as/naming/javaee/NamingJavaEEModuleInformer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -39,6 +39,10 @@
protected static <T> T[] concat(T[] array1, T[] array2)
{
+ if(array1 == null)
+ return array2;
+ if(array2 == null)
+ return array1;
T[] result = (T[]) Array.newInstance(array1.getClass().getComponentType(), array1.length + array2.length);
System.arraycopy(array1, 0, result, 0, array1.length);
System.arraycopy(array2, 0, result, array1.length, array2.length);
Modified: branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java
===================================================================
--- branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -58,6 +58,10 @@
import org.jboss.metadata.ear.jboss.JBossAppMetaData;
import org.jboss.metadata.ear.spec.ModuleMetaData;
import org.jboss.metadata.ear.spec.WebModuleMetaData;
+import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
+import org.jboss.metadata.javaee.spec.PersistenceContextReferencesMetaData;
+import org.jboss.metadata.javaee.spec.PersistenceUnitReferenceMetaData;
+import org.jboss.metadata.javaee.spec.PersistenceUnitReferencesMetaData;
import org.jboss.metadata.web.jboss.ClassLoadingMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.metadata.web.spec.WebMetaData;
@@ -68,7 +72,6 @@
import org.jboss.system.metadata.ServiceDependencyMetaData;
import org.jboss.system.metadata.ServiceInjectionValueMetaData;
import org.jboss.system.metadata.ServiceMetaData;
-import org.jboss.util.file.Files;
import org.jboss.vfs.VFS;
import org.jboss.vfs.VFSUtils;
import org.jboss.vfs.VirtualFile;
@@ -705,6 +708,37 @@
dependencies.add(sdmd);
}
}
+
+ // JBAS-6795 Add dependency on PersistenceUnit references
+ PersistenceUnitReferencesMetaData puRefs = metaData.getPersistenceUnitRefs();
+ if (puRefs != null)
+ {
+ for (PersistenceUnitReferenceMetaData puRef : metaData.getPersistenceUnitRefs())
+ {
+ // TODO: this is a duplication of the logic in PersistenceUnitHandler
+ String persistenceUnitName = puRef.getPersistenceUnitName();
+ String beanName = persistenceUnitDependencyResolver.resolvePersistenceUnitSupplier(unit, persistenceUnitName);
+ ServiceDependencyMetaData sdmd = new ServiceDependencyMetaData();
+ sdmd.setIDependOn(beanName);
+ dependencies.add(sdmd);
+ }
+ }
+
+ // JBAS-6795 Add dependency on PersistenceContext references
+ PersistenceContextReferencesMetaData pcRefs = metaData.getPersistenceContextRefs();
+ if (pcRefs != null)
+ {
+ for (PersistenceContextReferenceMetaData pcRef : metaData.getPersistenceContextRefs())
+ {
+ // TODO: this is a duplication of the logic in PersistenceContextHandler
+ String persistenceUnitName = pcRef.getPersistenceUnitName();
+ String beanName = persistenceUnitDependencyResolver.resolvePersistenceUnitSupplier(unit, persistenceUnitName);
+ ServiceDependencyMetaData sdmd = new ServiceDependencyMetaData();
+ sdmd.setIDependOn(beanName);
+ dependencies.add(sdmd);
+ }
+ }
+
webModule.setDependencies(dependencies);
// Here's where a bit of magic happens. By attaching the ServiceMetaData
Modified: branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/WebModule.java
===================================================================
--- branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/WebModule.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/server/src/main/java/org/jboss/web/deployers/WebModule.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -111,6 +111,8 @@
*/
public synchronized void startModule() throws Exception
{
+ if (this.unit == null || this.container == null || this.deployment == null)
+ throw new IllegalStateException("WebModules cannot be restarted, and must be redeployed");
// Get the war URL
JBossWebMetaData metaData = unit.getAttachment(JBossWebMetaData.class);
WebApplication webApp = deployment.start(unit, metaData);
Modified: branches/infinispan-int/testsuite/build.xml
===================================================================
--- branches/infinispan-int/testsuite/build.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/build.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -1195,11 +1195,6 @@
<include name="org/jboss/test/aop/test/Scoped*TestCase.class"/>
</patternset>
- <patternset id="naming-servlet.excludes">
- <!-- Testing functionality that does not currently exist - See: JBAS-7908 -->
- <exclude name="org/jboss/test/web/test/NamingServletUnitTestCase.class"/>
- </patternset>
-
<!-- The union of the excludes -->
<patternset id="all.excludes">
<patternset refid="aop-with-classloader.excludes"/>
@@ -1223,7 +1218,6 @@
<patternset refid="jbossmessaging.excludes"/>
<patternset refid="springdeployer.excludes"/>
<patternset refid="jbas7273.excludes"/>
- <patternset refid="naming-servlet.excludes"/>
</patternset>
<!-- A target that allows for conditional dependency on the compilation and
@@ -1624,7 +1618,8 @@
haltonfailure="${junit.haltonfailure}"
fork="${junit.fork}"
timeout="${junit.timeout}"
- jvm="${junit.jvm}">
+ jvm="${junit.jvm}"
+ failureproperty="smoke.test.failure">
<jvmarg line="${junit.jvm.options}"/>
@@ -1677,7 +1672,16 @@
</fileset>
</batchtest>
</junit>
+
+ <!-- Check if some test failed (smoke.test.failure property will be set by JUnit
+ if there are any failures -->
+ <antcall target="check.smoke.test.failure"/>
+
</target>
+
+ <target name="check.smoke.test.failure" if="smoke.test.failure">
+ <fail message="Some tests FAILED. Check the logs for details"/>
+ </target>
<!--
Web Profile Tests
Modified: branches/infinispan-int/testsuite/imports/config/tests-secured.xml
===================================================================
--- branches/infinispan-int/testsuite/imports/config/tests-secured.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/imports/config/tests-secured.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -18,16 +18,15 @@
-->
<target name="tests-secured"
description="Run tests on secured profiles">
-<!--
- <server:start name="default"/>
- <run-junit junit.patternset="secured.mask.includes"/>
- <server:stop name="default"/>
--->
<server:start name="all"/>
<run-junit junit.patternset="secured.mask.includes"/>
<server:stop name="all"/>
+ <server:start name="production"/>
+ <run-junit junit.patternset="secured.mask.includes"/>
+ <server:stop name="production"/>
+
</target>
</project>
Modified: branches/infinispan-int/testsuite/imports/sections/classloader.xml
===================================================================
--- branches/infinispan-int/testsuite/imports/sections/classloader.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/imports/sections/classloader.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -263,7 +263,7 @@
</jar>
<!-- Build the shared-jndi.war/sar -->
- <jar destfile="${build.lib}/shared-jndi.sar">
+ <jar destfile="${build.lib}/shared-jndi1.sar">
<metainf dir="${build.resources}/classloader/scoping/naming/xml">
<include name="jboss-service.xml"/>
</metainf>
@@ -272,7 +272,7 @@
name="org/jboss/test/classloader/scoping/naming/service/*"/>
</fileset>
</jar>
- <war destfile="${build.lib}/shared-jndi.war"
+ <war destfile="${build.lib}/shared-jndi2.war"
webxml="${build.resources}/classloader/scoping/naming/xml/web.xml">
<webinf dir="${build.resources}/classloader/scoping/naming/xml">
<include name="jboss-web.xml"/>
Modified: branches/infinispan-int/testsuite/imports/server-config.xml
===================================================================
--- branches/infinispan-int/testsuite/imports/server-config.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/imports/server-config.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -116,6 +116,18 @@
<sysproperty key="java.endorsed.dirs" value="${jboss.dist}/lib/endorsed" />
<sysproperty key="jgroups.udp.ip_ttl" value="${jbosstest.udp.ip_ttl}" />
</server>
+<!-- Configured for tests-secured, full run.conf JAVA_OPTS are not needed
+-->
+ <server name="production" host="${node0}">
+ <jvmarg value="-Xms256m" />
+ <jvmarg value="-Xmx768m" />
+ <jvmarg value="-XX:MaxPermSize=256m" />
+ <jvmarg value="-XX:+HeapDumpOnOutOfMemoryError" />
+ <jvmarg value="-XX:-UseGCOverheadLimit" />
+ <sysproperty key="java.net.preferIPv4Stack" value="true" />
+ <sysproperty key="java.endorsed.dirs" value="${jboss.dist}/lib/endorsed" />
+ <sysproperty key="jgroups.udp.ip_ttl" value="${jbosstest.udp.ip_ttl}" />
+ </server>
<server name="generic" config="${generic.config}" host="${node0}" >
<jvmarg value="-Xms128m" />
<jvmarg value="-Xmx512m" />
Modified: branches/infinispan-int/testsuite/src/main/org/jboss/test/classloader/test/ScopingUnitTestCase.java
===================================================================
--- branches/infinispan-int/testsuite/src/main/org/jboss/test/classloader/test/ScopingUnitTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/src/main/org/jboss/test/classloader/test/ScopingUnitTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,24 +21,24 @@
*/
package org.jboss.test.classloader.test;
-import java.net.URL;
-import java.io.InputStream;
-import java.io.IOException;
-import javax.management.ObjectName;
-import javax.naming.InitialContext;
-
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpMethodBase;
+import org.jboss.mx.loading.ClassLoaderUtils;
+import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
+import org.jboss.mx.loading.RepositoryClassLoader;
+import org.jboss.mx.loading.UnifiedLoaderRepository3;
+import org.jboss.system.ServiceMBean;
import org.jboss.test.JBossTestCase;
import org.jboss.test.classloader.scoping.override.ejb.log4j113.StatelessSession;
import org.jboss.test.classloader.scoping.override.ejb.log4j113.StatelessSessionHome;
import org.jboss.test.util.web.HttpUtils;
-import org.jboss.system.ServiceMBean;
-import org.jboss.mx.loading.HeirarchicalLoaderRepository3;
-import org.jboss.mx.loading.RepositoryClassLoader;
-import org.jboss.mx.loading.UnifiedLoaderRepository3;
-import org.jboss.mx.loading.ClassLoaderUtils;
+import javax.management.ObjectName;
+import javax.naming.InitialContext;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
/** Unit tests for class and resource scoping
*
* @author Scott.Stark at jboss.org
@@ -330,9 +330,9 @@
getLog().debug("+++ testSharedJNDI");
try
{
- deploy("shared-jndi.sar");
- deploy("shared-jndi.war");
- URL servletURL = new URL("http://" + getServerHost() + ":8080/shared-jndi/LookupServlet");
+ deploy("shared-jndi1.sar");
+ deploy("shared-jndi2.war");
+ URL servletURL = new URL("http://" + getServerHost() + ":8080/shared-jndi2/LookupServlet");
InputStream reply = (InputStream) servletURL.getContent();
getLog().debug("Accessed: "+servletURL);
logReply(reply);
@@ -344,8 +344,8 @@
}
finally
{
- undeploy("shared-jndi.war");
- undeploy("shared-jndi.sar");
+ undeploy("shared-jndi2.war");
+ undeploy("shared-jndi1.sar");
}
}
Modified: branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/defaultcfg/profileservice/test/FarmedClusterHotDeployUnitTestCase.java
===================================================================
--- branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/defaultcfg/profileservice/test/FarmedClusterHotDeployUnitTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/src/main/org/jboss/test/cluster/defaultcfg/profileservice/test/FarmedClusterHotDeployUnitTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -175,38 +175,40 @@
private void validateFinalState() throws Exception
{
+ // All deployments should be detected by HDScanner, replicated, and
+ // picked up and deployed by HDScanner on other node w/in 2 HDScanner
+ // runs (20 secs) + a 10% fudge factor
+ long deadline = System.currentTimeMillis() + 22000;
+
// Simple add
- // For this one we give a long timeout; once this one passes all the others
- // should be there as well, since we stop the scanner during the mods
- // and do them all at once
- checkContent("jboss.system:service=HDAddTestThreadPool", "AddFarmThreadPool", 12000);
+ checkContent("jboss.system:service=HDAddTestThreadPool", "AddFarmThreadPool", deadline);
// Nested add
- checkContent("jboss.system:service=HDNestedAddTestThreadPool", "NestedAddFarmThreadPool", 10000);
+ checkContent("jboss.system:service=HDNestedAddTestThreadPool", "NestedAddFarmThreadPool", deadline);
// New dir
- checkContent("jboss.system:service=HDAddDirTestThreadPool", "AddDirFarmThreadPool", 0);
+ checkContent("jboss.system:service=HDAddDirTestThreadPool", "AddDirFarmThreadPool", deadline);
// New zip
- checkWebContent("/hd-add-zipped/index.html", HttpURLConnection.HTTP_OK, 0);
+ checkWebContent("/hd-add-zipped/index.html", HttpURLConnection.HTTP_OK, deadline);
// Simple removal
- checkContentRemoved("jboss.system:service=HDRemoveTestThreadPool", 0);
+ checkContentRemoved("jboss.system:service=HDRemoveTestThreadPool", deadline);
// Nested removal
- checkContentRemoved("jboss.system:service=HDNestedRemoveTestThreadPool", 0);
+ checkContentRemoved("jboss.system:service=HDNestedRemoveTestThreadPool", deadline);
// Dir removal
- checkContentRemoved("jboss.system:service=HDRemoveDirFarmTestThreadPool", 0);
+ checkContentRemoved("jboss.system:service=HDRemoveDirFarmTestThreadPool", deadline);
// Nested mod
- checkContent("jboss.system:service=HDModifyNestedTestThreadPool", "ModifiedNestedFarmThreadPool", 0);
+ checkContent("jboss.system:service=HDModifyNestedTestThreadPool", "ModifiedNestedFarmThreadPool", deadline);
// Simple mod
- checkContent("jboss.system:service=HDModifyTestThreadPool", "ModifiedFarmThreadPool", 0);
+ checkContent("jboss.system:service=HDModifyTestThreadPool", "ModifiedFarmThreadPool", deadline);
// Zipped mod
- checkWebContent("/hd-mod-zipped/index.html", HttpURLConnection.HTTP_OK, 0);
+ checkWebContent("/hd-mod-zipped/index.html", HttpURLConnection.HTTP_OK, deadline);
}
/**
@@ -295,7 +297,7 @@
}
}
- private void checkContent(String objectName, String poolName, long timeout) throws Exception
+ private void checkContent(String objectName, String poolName, long deadline) throws Exception
{
boolean node0OK = false;
boolean node1OK = false;
@@ -303,7 +305,7 @@
MBeanServerConnection[] adaptors = getAdaptors();
ObjectName oname = new ObjectName(objectName);
- long deadline = System.currentTimeMillis() + timeout;
+// long deadline = System.currentTimeMillis() + timeout;
do
{
if (!node0OK)
@@ -336,7 +338,7 @@
assertTrue(objectName + " -- node1 OK", node1OK);
}
- private void checkContentRemoved(String objectName, long timeout) throws Exception
+ private void checkContentRemoved(String objectName, long deadline) throws Exception
{
boolean node0OK = false;
boolean node1OK = false;
@@ -344,7 +346,7 @@
MBeanServerConnection[] adaptors = getAdaptors();
ObjectName oname = new ObjectName(objectName);
- long deadline = System.currentTimeMillis() + 12000;
+// long deadline = System.currentTimeMillis() + 12000;
do
{
if (!node0OK)
@@ -377,7 +379,7 @@
assertTrue(objectName + " -- node1 OK", node1OK);
}
- private void checkWebContent(String relativePath, int expectedResponse, long timeout) throws Exception
+ private void checkWebContent(String relativePath, int expectedResponse, long deadline) throws Exception
{
boolean node0OK = false;
boolean node1OK = false;
@@ -386,7 +388,7 @@
GetMethod get0 = new GetMethod(hosts[0] + relativePath);
GetMethod get1 = new GetMethod(hosts[1] + relativePath);
- long deadline = System.currentTimeMillis() + timeout;
+// long deadline = System.currentTimeMillis() + timeout;
do
{
if (!node0OK)
Modified: branches/infinispan-int/testsuite/src/resources/test-configs/tomcat-webctx/deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml
===================================================================
--- branches/infinispan-int/testsuite/src/resources/test-configs/tomcat-webctx/deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/src/resources/test-configs/tomcat-webctx/deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -92,6 +92,7 @@
<!-- The WebMetaData to service mbean deployer -->
<bean name="WarDeployer" class="org.jboss.web.tomcat.service.deployers.TomcatDeployer">
+ <constructor><parameter><inject bean="NamingJavaEEComponentInformer"/></parameter></constructor>
<property name="mainDeployer"><inject bean="MainDeployer" /></property>
<property name="relativeOrder">2003</property>
<!-- You can configure a set of authenticators keyed by http-auth method
Modified: branches/infinispan-int/testsuite/src/resources/web/federation/authext/war-deployers-jboss-beans.xml
===================================================================
--- branches/infinispan-int/testsuite/src/resources/web/federation/authext/war-deployers-jboss-beans.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/testsuite/src/resources/web/federation/authext/war-deployers-jboss-beans.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -114,6 +114,7 @@
class="org.jboss.web.tomcat.service.deployers.ClusteringDependencyDeployer"/>
<bean name="WarDeployer" class="org.jboss.web.tomcat.service.deployers.TomcatDeployer">
+ <constructor><parameter><inject bean="NamingJavaEEComponentInformer"/></parameter></constructor>
<!-- Inject the MainDeployer for resolving cross deployment refs -->
<property name="mainDeployer"><inject bean="MainDeployer" /></property>
<!-- You can configure a set of authenticators keyed by http-auth method
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/security/SecurityContextEstablishmentValve.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -34,7 +34,10 @@
import org.jboss.security.SecurityUtil;
import org.jboss.servlet.http.HttpEvent;
+import org.jboss.reloaded.naming.CurrentComponent;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
+
/**
* Establish the Security Context
* @author Anil.Saldhana at redhat.com
@@ -45,12 +48,13 @@
{
private String configuredSecurityDomainName;
private ISecurityManagement securityManagement;
+ private JavaEEComponent id;
private Class<?> securityContextClass;
public SecurityContextEstablishmentValve(String configuredSecurityDomain,
String defaultSecurityDomain, Class<?> contextClass,
- ISecurityManagement securityManagement)
+ ISecurityManagement securityManagement, JavaEEComponent id)
{
String securityDomain = defaultSecurityDomain;
@@ -60,6 +64,8 @@
this.configuredSecurityDomainName = SecurityUtil.unprefixSecurityDomain(securityDomain);
this.securityContextClass = contextClass;
this.securityManagement = securityManagement;
+ this.id = id;
+ assert id != null : "id is null";
}
@Override
@@ -87,6 +93,7 @@
createdSecurityContext = true;
}
+ CurrentComponent.push(id);
try
{
// Perform the request
@@ -94,6 +101,7 @@
}
finally
{
+ CurrentComponent.pop();
if(createdSecurityContext)
{
SecurityAssociationActions.clearSecurityContext();
@@ -146,6 +154,7 @@
createdSecurityContext = true;
}
+ CurrentComponent.push(id);
try
{
// Perform the request
@@ -153,6 +162,7 @@
}
finally
{
+ CurrentComponent.pop();
if(createdSecurityContext)
{
SecurityAssociationActions.clearSecurityContext();
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/NamingListener.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/NamingListener.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/NamingListener.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -24,6 +24,8 @@
import org.apache.catalina.InstanceEvent;
import org.apache.catalina.InstanceListener;
import org.jboss.logging.Logger;
+import org.jboss.reloaded.naming.CurrentComponent;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
/**
* An InstanceListener used to push/pop the application naming context.
@@ -34,13 +36,14 @@
public class NamingListener implements InstanceListener
{
private static Logger log = Logger.getLogger(NamingListener.class);
- public static ThreadLocal<Object> idLocal = new ThreadLocal<Object>();
+ public static ThreadLocal<JavaEEComponent> idLocal = new ThreadLocal<JavaEEComponent>();
- private Object id;
+ private JavaEEComponent id;
public NamingListener()
{
id = idLocal.get();
+ assert id != null : "id is null";
}
public Object getId()
@@ -48,7 +51,7 @@
return id;
}
- public void setId(Object id)
+ public void setId(JavaEEComponent id)
{
this.id = id;
}
@@ -57,18 +60,20 @@
{
String type = event.getType();
// Push the identity on the before init/destroy
- if ( type.equals(InstanceEvent.BEFORE_REQUEST_EVENT)
- || type.equals(InstanceEvent.BEFORE_DISPATCH_EVENT) )
+ if ( type.equals(InstanceEvent.BEFORE_DISPATCH_EVENT)
+ || type.equals(InstanceEvent.BEFORE_DESTROY_EVENT)
+ || type.equals(InstanceEvent.BEFORE_INIT_EVENT) )
{
// Push naming id
- //TODO
+ CurrentComponent.push(id);
}
// Pop the identity on the after init/destroy
- else if ( type.equals(InstanceEvent.AFTER_REQUEST_EVENT)
- || type.equals(InstanceEvent.AFTER_DISPATCH_EVENT) )
+ else if ( type.equals(InstanceEvent.AFTER_DISPATCH_EVENT)
+ || type.equals(InstanceEvent.AFTER_DESTROY_EVENT)
+ || type.equals(InstanceEvent.AFTER_INIT_EVENT) )
{
// Pop naming id
- //TODO
+ CurrentComponent.pop();
}
}
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -69,6 +69,7 @@
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.ejb3.vfs.spi.VirtualFile;
import org.jboss.ejb3.vfs.impl.vfs3.VirtualFileWrapper;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
import org.jboss.web.WebApplication;
import org.jboss.web.tomcat.service.injection.TomcatInjectionUtils;
import org.jboss.web.tomcat.service.injection.WebEJBHandler;
@@ -142,6 +143,8 @@
private static final Properties restrictedListeners = new Properties();
private static final Properties restrictedServlets = new Properties();
private List<Injector> defaultInjectors;
+ // the naming component counter-part
+ private JavaEEComponent component;
static
@@ -198,10 +201,12 @@
}
public TomcatInjectionContainer(WebApplication appInfo, DeploymentUnit unit, org.apache.catalina.Context catalinaContext,
- PersistenceUnitDependencyResolver resolver, Set<String> dynamicClassLoaders)
+ PersistenceUnitDependencyResolver resolver, Set<String> dynamicClassLoaders, JavaEEComponent component)
{
super(new SimpleJavaEEModule(appInfo.getName()));
+ assert component != null : "component is null";
+
this.unit = unit;
this.appInfo = appInfo;
this.catalinaContext = catalinaContext;
@@ -213,6 +218,7 @@
this.webDD = unit.getAttachment(JBossWebMetaData.class);
assert this.webDD != null : "webDD is null (no JBossWebMetaData attachment in VFSDeploymentUnit)";
+ this.component = component;
}
public void setDefaultInjectors(List<Injector> injectors)
@@ -644,23 +650,7 @@
public Context getEnc()
{
- ClassLoader old = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(getClassloader());
- try
- {
- return (Context)new InitialContext().lookup("java:comp");
- }
- catch (NamingException e)
- {
- throw new RuntimeException(e);
- }
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(old);
- }
+ return component.getContext();
}
public boolean hasJNDIBinding(String jndiName)
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,22 +21,23 @@
*/
package org.jboss.web.tomcat.service.deployers;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.management.ObjectName;
-
+import org.jboss.beans.metadata.api.annotations.Inject;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.metadata.web.spec.WebMetaData;
import org.jboss.mx.util.ObjectNameFactory;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
import org.jboss.security.plugins.JaasSecurityManagerServiceMBean;
import org.jboss.web.deployers.AbstractWarDeployer;
import org.jboss.web.deployers.AbstractWarDeployment;
+import javax.management.ObjectName;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+
/**
* A concrete implementation of the AbstractWarDeployer that creates {@link #TomcatDeployment} instances as the web
* application bean representation.
@@ -123,8 +124,12 @@
private boolean standalone = false;
- public TomcatDeployer()
+ private JavaEEComponentInformer componentInformer;
+
+ public TomcatDeployer(@Inject JavaEEComponentInformer componentInformer)
{
+ this.componentInformer = componentInformer;
+ setInputs(componentInformer.getRequiredAttachments());
}
public String getName()
@@ -397,11 +402,17 @@
deployment.setSecurityManagementName(securityManagement);
deployment.setPolicyRegistrationName(policyRegistrationName);
+ // TODO: I haven't got a clue as to why this is set very late in WebModule, but the informer depends on it
+ deployment.setDeploymentUnit(unit);
+ // TODO: until deployment is a MC bean
+ ((TomcatDeployment) deployment).setJavaEEComponentInformer(componentInformer);
+
// Add a dependency on the webserver itself
List<String> depends = metaData.getDepends();
if (depends == null)
depends = new ArrayList<String>();
depends.add(TOMCAT_SERVICE_NAME.getCanonicalName());
+ depends.add(((TomcatDeployment) deployment).getJavaEEModuleName());
metaData.setDepends(depends);
deployment.setServer(super.getServer());
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,33 +21,10 @@
*/
package org.jboss.web.tomcat.service.deployers;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.security.CodeSource;
-import java.security.cert.Certificate;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.LinkRef;
-
-import org.apache.catalina.Container;
-import org.apache.catalina.Engine;
-import org.apache.catalina.LifecycleEvent;
-import org.apache.catalina.LifecycleListener;
-import org.apache.catalina.Loader;
+import org.apache.catalina.*;
import org.apache.catalina.core.StandardContext;
import org.apache.tomcat.util.modeler.Registry;
+import org.jboss.beans.metadata.api.annotations.Inject;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.deployers.spi.DeploymentException;
@@ -59,12 +36,14 @@
import org.jboss.metadata.web.spec.TldMetaData;
import org.jboss.mx.util.MBeanServerLocator;
import org.jboss.naming.NonSerializableFactory;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
+import org.jboss.reloaded.naming.spi.JavaEEModule;
import org.jboss.security.SecurityUtil;
import org.jboss.vfs.VFS;
import org.jboss.vfs.VirtualFile;
import org.jboss.web.WebApplication;
import org.jboss.web.deployers.AbstractWarDeployment;
-import org.jboss.web.deployers.SharedJBossWebMetaDataDeployer;
import org.jboss.web.deployers.SharedTldMetaDataDeployer;
import org.jboss.web.tomcat.security.JaccContextValve;
import org.jboss.web.tomcat.security.RunAsListener;
@@ -73,9 +52,20 @@
import org.jboss.web.tomcat.service.NamingListener;
import org.jboss.web.tomcat.service.TomcatInjectionContainer;
import org.jboss.web.tomcat.service.WebCtxLoader;
-import org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve;
import org.omg.CORBA.ORB;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.LinkRef;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.security.CodeSource;
+import java.security.cert.Certificate;
+import java.util.*;
+
/**
* A tomcat web application deployment.
*
@@ -98,6 +88,10 @@
private ORB orb = null;
+ private JavaEEComponentInformer componentInformer;
+
+ private JavaEEComponent component;
+
public ORB getORB()
{
return orb;
@@ -125,29 +119,23 @@
warUrl = URLDecoder.decode(warUrl, "UTF-8");
webApp.setDomain(config.getCatalinaDomain());
JBossWebMetaData metaData = webApp.getMetaData();
- String hostName = null;
// Get any jboss-web/virtual-hosts
List<String> vhostNames = metaData.getVirtualHosts();
// Map the virtual hosts onto the configured hosts
- Iterator hostNames = mapVirtualHosts(vhostNames);
- if (hostNames.hasNext())
+ String hostName = mapVirtualHosts(vhostNames);
+ if (hostName == null)
{
- hostName = hostNames.next().toString();
- }
- else
- {
- hostNames = getDefaultHosts();
+ Iterator hostNames = getDefaultHosts();
if (hostNames.hasNext())
{
hostName = hostNames.next().toString();
}
}
- performDeployInternal(webApp, hostName, warUrl);
- while (hostNames.hasNext())
+ if (hostName == null)
{
- String additionalHostName = hostNames.next().toString();
- performDeployInternal(webApp, additionalHostName, warUrl);
+ throw new IllegalStateException("No default host defined");
}
+ performDeployInternal(webApp, hostName, warUrl);
}
protected void performDeployInternal(WebApplication webApp, String hostName, String warUrlStr) throws Exception
@@ -195,9 +183,11 @@
}
}
+ this.component = createJavaEEComponent();
+
TomcatInjectionContainer injectionContainer =
new TomcatInjectionContainer(webApp, depUnit, context,
- getPersistenceUnitDependencyResolver(), config.getDynamicClassloaders());
+ getPersistenceUnitDependencyResolver(), config.getDynamicClassloaders(), component);
if (kernel != null)
{
@@ -279,9 +269,9 @@
if (metaDataSecurityDomain != null)
metaDataSecurityDomain = metaDataSecurityDomain.trim();
- // Add a valve to establish security context
+ // Add a valve to establish security and naming context
SecurityContextEstablishmentValve scevalve = new SecurityContextEstablishmentValve(metaDataSecurityDomain, SecurityUtil.unprefixSecurityDomain(config
- .getDefaultSecurityDomain()), SecurityActions.loadClass(config.getSecurityContextClassName()), getSecurityManagement());
+ .getDefaultSecurityDomain()), SecurityActions.loadClass(config.getSecurityContextClassName()), getSecurityManagement(), component);
context.addValve(scevalve);
// Add a valve to estalish the JACC context before authorization valves
@@ -299,8 +289,7 @@
JBossContextConfig.metaDataLocal.set(metaData);
JBossContextConfig.deployerConfig.set(config);
JBossContextConfig.tldMetaDataMapLocal.set(tldMetaDataMap);
- // TODO: acquire the component ID
- NamingListener.idLocal.set(null);
+ NamingListener.idLocal.set(component);
JBossContextConfig.kernelLocal.set(kernel);
JBossContextConfig.deploymentUnitLocal.set(unit);
@@ -410,8 +399,7 @@
// TODO: The enc should be an input?
currentThread.setContextClassLoader(webLoader.getClassLoader());
metaData.setENCLoader(webLoader.getClassLoader());
- InitialContext iniCtx = new InitialContext();
- Context envCtx = (Context)iniCtx.lookup("java:comp");
+ Context envCtx = component.getContext();
// Add ORB/UserTransaction
ORB orb = null;
try
@@ -519,29 +507,19 @@
log.info("undeploy, ctxPath=" + warInfo.getMetaData().getContextRoot());
JBossWebMetaData metaData = warInfo.getMetaData();
- String hostName = null;
// Get any jboss-web/virtual-hosts
List<String> vhostNames = metaData.getVirtualHosts();
// Map the virtual hosts onto the configured hosts
- Iterator hostNames = mapVirtualHosts(vhostNames);
- if (hostNames.hasNext())
+ String hostName = mapVirtualHosts(vhostNames);
+ if (hostName == null)
{
- hostName = hostNames.next().toString();
- }
- else
- {
- hostNames = getDefaultHosts();
+ Iterator hostNames = getDefaultHosts();
if (hostNames.hasNext())
{
hostName = hostNames.next().toString();
}
}
performUndeployInternal(warInfo, hostName, warUrl);
- while (hostNames.hasNext())
- {
- String additionalHostName = hostNames.next().toString();
- performUndeployInternal(warInfo, additionalHostName, warUrl);
- }
}
@@ -573,7 +551,7 @@
* @return Iterator<String> of the unique Host names
* @throws Exception
*/
- protected synchronized Iterator mapVirtualHosts(List<String> vhostNames) throws Exception
+ protected synchronized String mapVirtualHosts(List<String> vhostNames) throws Exception
{
if (vhostToHostNames.size() == 0)
{
@@ -600,7 +578,8 @@
}
// Map the virtual host names to the hosts
- HashSet hosts = new HashSet();
+ HashSet<String> hosts = new HashSet<String>();
+ String webappHost = null;
if (vhostNames != null)
{
for (String vhost : vhostNames)
@@ -609,13 +588,53 @@
if (host == null)
{
log.warn("Failed to map vhost: " + vhost);
- // This will cause a new host to be created
- host = vhost;
+ // This will cause a new alias to be added
+ hosts.add(vhost);
}
- hosts.add(host);
+ else
+ {
+ if (webappHost == null)
+ {
+ webappHost = host;
+ }
+ else if (!webappHost.equals(host))
+ {
+ throw new IllegalStateException("Cannot add webapp to two different hosts: "
+ + webappHost + " and " + host);
+ }
+ }
}
+ // Add to default host if none exists
+ if (webappHost == null)
+ {
+ Iterator defaultHosts = getDefaultHosts();
+ if (defaultHosts.hasNext())
+ {
+ webappHost = defaultHosts.next().toString();
+ }
+ }
+ // Add missing aliases to matching host
+ if (webappHost != null)
+ {
+ String hostQuery = config.getCatalinaDomain() + ":type=Host,host=" + webappHost + ",*";
+ ObjectName query = new ObjectName(hostQuery);
+ Set hostONs = server.queryNames(query, null);
+ Iterator iter = hostONs.iterator();
+ if (iter.hasNext())
+ {
+ ObjectName host = (ObjectName)iter.next();
+ Object[] name = new Object[1];
+ String[] args = { "java.lang.String" };
+ for (String vhost : hosts)
+ {
+ log.warn("Adding alias to vhost: " + vhost);
+ name[0] = vhost;
+ server.invoke(host, "addAlias", name, args);
+ }
+ }
+ }
}
- return hosts.iterator();
+ return webappHost;
}
/**
@@ -656,4 +675,62 @@
return (Engine) parentContainer;
}
+ private JavaEEComponent createJavaEEComponent()
+ {
+ final String beanName = getJavaEEModuleName();
+
+ // TODO: must come in via MC injection
+ final JavaEEModule module = getBean(beanName, JavaEEModule.class);
+
+ // Web uses a Module context
+ return new JavaEEComponent() {
+
+ public Context getContext()
+ {
+ return module.getContext();
+ }
+
+ public JavaEEModule getModule()
+ {
+ return module;
+ }
+
+ public String getName()
+ {
+ return module.getName();
+ }
+ };
+ }
+
+ private <T> T getBean(String beanName, Class<T> type)
+ {
+ ControllerContext context = kernel.getController().getInstalledContext(beanName);
+ if(context == null)
+ throw new IllegalArgumentException("Can't find bean " + beanName + " in " + kernel);
+ Object target = context.getTarget();
+ if(target == null)
+ throw new IllegalArgumentException("Bean " + beanName + " has no target instance in " + kernel);
+ return type.cast(target);
+ }
+
+ // TODO: weirdness, if I make this package private I get IllegalAccessError
+ public String getJavaEEModuleName()
+ {
+ assert componentInformer != null : "componentInformer is null";
+ // assert ControllerState.INSTALLED
+
+ final String applicationName = componentInformer.getApplicationName(unit);
+ final String moduleName = componentInformer.getModulePath(unit);
+
+ // TODO: remove hard coded "jboss.naming" constant
+ final String beanName = "jboss.naming:" + (applicationName != null ? "application=" + applicationName + "," : "") + "module=" + moduleName;
+
+ return beanName;
+ }
+
+ @Inject
+ public void setJavaEEComponentInformer(JavaEEComponentInformer componentInformer)
+ {
+ this.componentInformer = componentInformer;
+ }
}
\ No newline at end of file
Modified: branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatService.java
===================================================================
--- branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatService.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatService.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -243,7 +243,7 @@
throw new IllegalArgumentException("No services");
}
Iterator<ServiceMetaData> serviceMetaDatas = serverMetaData.getServices().iterator();
- while (serviceMetaDatas.hasNext())
+ if (serviceMetaDatas.hasNext())
{
ServiceMetaData serviceMetaData = serviceMetaDatas.next();
org.apache.catalina.Service service =
@@ -344,6 +344,12 @@
}
}
+
+ // Forbid more than one service
+ if (serviceMetaDatas.hasNext())
+ {
+ throw new IllegalArgumentException("Only one service declaration is allowed in server.xml");
+ }
// Set the resulting Server to the Catalina instance
catalina.setServer(catalinaServer);
Modified: branches/infinispan-int/tomcat/src/resources/standalone/war-deployers-jboss-beans.xml
===================================================================
--- branches/infinispan-int/tomcat/src/resources/standalone/war-deployers-jboss-beans.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/resources/standalone/war-deployers-jboss-beans.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -71,6 +71,8 @@
<!-- The WebMetaData to service mbean deployer -->
<bean name="WarDeployer" class="org.jboss.web.tomcat.service.deployers.TomcatDeployer">
+ <constructor><parameter><inject bean="NamingJavaEEComponentInformer"/></parameter></constructor>
+
<!-- Inject the MainDeployer for resolving cross deployment refs -->
<property name="mainDeployer"><inject bean="MainDeployer" /></property>
Modified: branches/infinispan-int/tomcat/src/resources/war-deployers-jboss-beans.xml
===================================================================
--- branches/infinispan-int/tomcat/src/resources/war-deployers-jboss-beans.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/tomcat/src/resources/war-deployers-jboss-beans.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -144,7 +144,8 @@
<!-- The WebMetaData to service mbean deployer -->
<bean name="WarDeployer" class="org.jboss.web.tomcat.service.deployers.TomcatDeployer">
-
+ <constructor><parameter><inject bean="NamingJavaEEComponentInformer"/></parameter></constructor>
+
<!-- Inject the MainDeployer for resolving cross deployment refs -->
<property name="mainDeployer"><inject bean="MainDeployer" /></property>
Modified: branches/infinispan-int/weld-int/assembly/pom.xml
===================================================================
--- branches/infinispan-int/weld-int/assembly/pom.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/assembly/pom.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -161,8 +161,14 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
+ <optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>ch.qos.cal10n</groupId>
+ <artifactId>cal10n-api</artifactId>
+ <optional>true</optional>
+ </dependency>
</dependencies>
Modified: branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml
===================================================================
--- branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-deployers-jboss-beans.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -64,10 +64,20 @@
<!--<stop method="stopService"/>-->
<!--</bean>-->
+ <!-- For non-flat deployments, comment this definition and uncomment the next one -->
+
+ <bean name="BeanDeploymentArchiveLocator" class="org.jboss.weld.integration.deployer.jndi.FlatBeanDeploymentArchiveLocator"/>
+
+ <!--<bean name="BeanDeploymentArchiveLocator" class="org.jboss.weld.integration.deployer.jndi.JBossBeanDeploymentArchiveLocator"/>-->
+
+
<!-- Responsible for binding bean managers -->
- <!--<bean name="JndiBinderDeployer" class="org.jboss.weld.integration.deployer.jndi.JndiBinderDeployer">-->
- <!--<depends>NameSpaces</depends>-->
- <!--</bean>-->
+ <bean name="JndiBinderDeployer" class="org.jboss.weld.integration.deployer.jndi.JndiBinderDeployer">
+ <depends>jboss:service=Naming</depends>
+ <property name="nameSpaces"><inject bean="NameSpaces"/></property>
+ <property name="beanDeploymentArchiveLocator"><inject bean="BeanDeploymentArchiveLocator"/></property>
+ <property name="moduleInformer"><inject bean="NamingJavaEEModuleInformer"/></property>
+ </bean>
<bean name="JavaEEComponentJndiBinderDeployer" class="org.jboss.weld.integration.deployer.jndi.JavaEEComponentJndiBinderDeployer">
<constructor><parameter><inject bean="NamingJavaEEComponentInformer"/></parameter></constructor>
Modified: branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-services-jboss-beans.xml
===================================================================
--- branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-services-jboss-beans.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/assembly/src/main/assembly/resources/META-INF/weld-services-jboss-beans.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -8,11 +8,17 @@
<!-- EJB Services Utility class -->
<bean name="WeldJBossEjb" class="org.jboss.weld.integration.util.JBossEjb"/>
- <!-- EJB Services: @EJB-style injection lookup -->
+ <!-- EJB Services: @EJB-style lookup -->
<beanfactory name="JBossEjbServices" class="org.jboss.weld.integration.ejb.JBossEjbServices">
<property name="resolver"><inject bean="WeldJBossEjb" property="resolver"/></property>
<property name="jbossEjb"><inject bean="WeldJBossEjb" /></property>
</beanfactory>
+
+ <!-- EJB Injection Services: @EJB-style injection -->
+ <beanfactory name="JBossEjbInjectionServices" class="org.jboss.weld.integration.ejb.JBossEjbInjectionServices">
+ <property name="resolver"><inject bean="WeldJBossEjb" property="resolver"/></property>
+ <property name="jbossEjb"><inject bean="WeldJBossEjb" /></property>
+ </beanfactory>
<!-- JPA Services: @PersistenceContext-style and @PersistenceUnit-style lookup -->
<beanfactory name="JBossJpaServices" class="org.jboss.weld.integration.persistence.JBossJpaServices">
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -58,6 +58,7 @@
setStage(DeploymentStages.PRE_REAL);
}
+ @Override
public void deploy(VFSDeploymentUnit unit, JBossWeldMetaData deployment) throws DeploymentException
{
@SuppressWarnings("unchecked")
@@ -139,7 +140,7 @@
public void visit(ResourceContext resource)
{
- wbdi.addWeldClass(resource.loadClass());
+ wbdi.addWeldClass(resource.getClassName());
}
}
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/BootstrapInfo.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/BootstrapInfo.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/BootstrapInfo.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -34,6 +34,9 @@
private ValueMetaData ejbServices;
public static final String EJB_SERVICES = BootstrapInfo.class.getSimpleName() + "EJB_SERVICES";
+ private ValueMetaData ejbInjectionServices;
+ public static final String EJB_INJECTION_SERVICES = BootstrapInfo.class.getSimpleName() + "EJB_INJECTION_SERVICES";
+
private ValueMetaData deployment;
public static final String DEPLOYMENT = BootstrapInfo.class.getSimpleName() + "DEPLOYMENT";
@@ -60,6 +63,16 @@
this.ejbServices = ejbServices;
}
+ public ValueMetaData getEjbInjectionServices()
+ {
+ return ejbInjectionServices;
+ }
+
+ public void setEjbInjectionServices(ValueMetaData ejbInjectionServices)
+ {
+ this.ejbInjectionServices = ejbInjectionServices;
+ }
+
public ValueMetaData getServletServices()
{
return servletServices;
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/EjbServicesDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/EjbServicesDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/EjbServicesDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -35,6 +35,9 @@
/** The ejb services class name */
private String ejbServicesClassName = "org.jboss.weld.integration.ejb.JBossEjbServices";
+ /** The ejb injection services class name */
+ private String ejbInjectionServicesClassName = "org.jboss.weld.integration.ejb.JBossEjbInjectionServices";
+
public EjbServicesDeployer()
{
super(true);
@@ -45,6 +48,9 @@
{
ValueMetaData ejbServicesValue = createServiceConnector("JBossEjbServices", ejbServicesClassName, unit);
info.setEjbServices(ejbServicesValue);
+
+ ValueMetaData ejbInjectionServicesValue = createServiceConnector("JBossEjbInjectionServices", ejbInjectionServicesClassName, unit);
+ info.setEjbInjectionServices(ejbInjectionServicesValue);
}
/**
@@ -56,4 +62,14 @@
{
this.ejbServicesClassName = ejbServicesClassName;
}
+
+ /**
+ * Set ejb injection services class name.
+ *
+ * @param ejbInjectionServicesClassName the ejb injection services classname
+ */
+ public void setEjbInjectionServicesClassName(String ejbInjectionServicesClassName)
+ {
+ this.ejbInjectionServicesClassName = ejbInjectionServicesClassName;
+ }
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/FlatDeployment.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/FlatDeployment.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/FlatDeployment.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -16,14 +16,32 @@
*/
package org.jboss.weld.integration.deployer.env;
+import static java.util.logging.Level.WARNING;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.Set;
+import java.util.logging.Logger;
+import javax.enterprise.inject.spi.Extension;
+
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.bootstrap.spi.Deployment;
+import org.jboss.weld.bootstrap.spi.Metadata;
import org.jboss.weld.ejb.spi.EjbDescriptor;
/**
@@ -37,14 +55,367 @@
*/
public class FlatDeployment implements Deployment
{
- private final BeanDeploymentArchive beanDeploymentArchive;
+
+
+ /**
+ * This class handles looking up service providers on the class path. It
+ * implements the <a href="http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#Service%20Provider"
+ * >Service Provider section of the JAR File Specification</a>.
+ *
+ * The Service Provider programmatic lookup was not specified prior to Java 6 so
+ * this interface allows use of the specification prior to Java 6.
+ *
+ * The API is copied from <a
+ * href="http://java.sun.com/javase/6/docs/api/java/util/ServiceLoader.html"
+ * >java.util.ServiceLoader</a> and enhanced to support the {@link Metadata}
+ * contract.
+ *
+ * @author Pete Muir
+ * @author <a href="mailto:dev at avalon.apache.org">Avalon Development Team</a>
+ * @author Nicklas Karlsson
+ */
+ private static class ServiceLoader<S> implements Iterable<Metadata<S>>
+ {
+
+ private static class ServiceLoaderMetadata<S> implements Metadata<S>
+ {
+
+ private final URL file;
+ private final int lineNumber;
+ private final S value;
+ public ServiceLoaderMetadata(S value, URL file, int lineNumber)
+ {
+ this.file = file;
+ this.lineNumber = lineNumber;
+ this.value = value;
+ }
+
+ public String getLocation()
+ {
+ return file + "@" + lineNumber;
+ }
+
+ public S getValue()
+ {
+ return value;
+ }
+
+ }
+
+ private static final String SERVICES = "META-INF/services";
+
+ private static final Logger log = Logger.getLogger("ServiceLoader");
+
+ /**
+ * Creates a new service loader for the given service type, using the current
+ * thread's context class loader.
+ *
+ * An invocation of this convenience method of the form
+ *
+ * {@code ServiceLoader.load(service)</code>}
+ *
+ * is equivalent to
+ *
+ * <code>ServiceLoader.load(service,
+ * Thread.currentThread().getContextClassLoader())</code>
+ *
+ * @param service The interface or abstract class representing the service
+ * @return A new service loader
+ */
+ public static <S> ServiceLoader<S> load(Class<S> service)
+ {
+ return load(service, Thread.currentThread().getContextClassLoader());
+ }
+
+ /**
+ * Creates a new service loader for the given service type and class loader.
+ *
+ * @param service The interface or abstract class representing the service
+ * @param loader The class loader to be used to load provider-configuration
+ * files and provider classes, or null if the system class loader
+ * (or, failing that, the bootstrap class loader) is to be used
+ * @return A new service loader
+ */
+ public static <S> ServiceLoader<S> load(Class<S> service, ClassLoader loader)
+ {
+ if (loader == null)
+ {
+ loader = service.getClassLoader();
+ }
+ return new ServiceLoader<S>(service, loader);
+ }
+
+ /**
+ * Creates a new service loader for the given service type, using the
+ * extension class loader.
+ *
+ * This convenience method simply locates the extension class loader, call it
+ * extClassLoader, and then returns
+ *
+ * <code>ServiceLoader.load(service, extClassLoader)</code>
+ *
+ * If the extension class loader cannot be found then the system class loader
+ * is used; if there is no system class loader then the bootstrap class
+ * loader is used.
+ *
+ * This method is intended for use when only installed providers are desired.
+ * The resulting service will only find and load providers that have been
+ * installed into the current Java virtual machine; providers on the
+ * application's class path will be ignored.
+ *
+ * @param service The interface or abstract class representing the service
+ * @return A new service loader
+ */
+ public static <S> ServiceLoader<S> loadInstalled(Class<S> service)
+ {
+ throw new UnsupportedOperationException("Not implemented");
+ }
+
+ private final String serviceFile;
+ private Class<S> expectedType;
+ private final ClassLoader loader;
+
+ private Set<Metadata<S>> providers;
+
+ private ServiceLoader(Class<S> service, ClassLoader loader)
+ {
+ this.loader = loader;
+ this.serviceFile = SERVICES + "/" + service.getName();
+ this.expectedType = service;
+ }
+
+ /**
+ * Clear this loader's provider cache so that all providers will be reloaded.
+ *
+ * After invoking this method, subsequent invocations of the iterator method
+ * will lazily look up and instantiate providers from scratch, just as is
+ * done by a newly-created loader.
+ *
+ * This method is intended for use in situations in which new providers can
+ * be installed into a running Java virtual machine.
+ */
+ public void reload()
+ {
+ providers = new HashSet<Metadata<S>>();
+
+ for (URL serviceFile : loadServiceFiles())
+ {
+ loadServiceFile(serviceFile);
+ }
+ }
+
+ private List<URL> loadServiceFiles()
+ {
+ List<URL> serviceFiles = new ArrayList<URL>();
+ try
+ {
+ Enumeration<URL> serviceFileEnumerator = loader.getResources(serviceFile);
+ while (serviceFileEnumerator.hasMoreElements())
+ {
+ serviceFiles.add(serviceFileEnumerator.nextElement());
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException("Could not load resources from " + serviceFile, e);
+ }
+ return serviceFiles;
+ }
+
+ private void loadServiceFile(URL serviceFile)
+ {
+ InputStream is = null;
+ try
+ {
+ is = serviceFile.openStream();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ String serviceClassName = null;
+ int i = 0;
+ while ((serviceClassName = reader.readLine()) != null)
+ {
+ i++;
+ serviceClassName = trim(serviceClassName);
+ if (serviceClassName.length() > 0)
+ {
+ loadService(serviceClassName, serviceFile, i);
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ // FIXME: correct exception
+ throw new RuntimeException("Could not read services file " + serviceFile);
+ }
+ finally
+ {
+ if (is != null)
+ {
+ try
+ {
+ is.close();
+ }
+ catch (IOException e)
+ {
+ // FIXME: correct exception
+ throw new RuntimeException("Could not close services file " + serviceFile, e);
+ }
+ }
+ }
+ }
+
+ private String trim(String line)
+ {
+ final int comment = line.indexOf('#');
+
+ if (comment > -1)
+ {
+ line = line.substring(0, comment);
+ }
+ return line.trim();
+ }
+
+ private void loadService(String serviceClassName, URL file, int lineNumber)
+ {
+ Class<? extends S> serviceClass = loadClass(serviceClassName);
+ if (serviceClass == null)
+ {
+ return;
+ }
+ S serviceInstance = prepareInstance(serviceClass);
+ if (serviceInstance == null)
+ {
+ return;
+ }
+ providers.add(new ServiceLoaderMetadata<S>(serviceInstance, file, lineNumber));
+ }
+
+ private Class<? extends S> loadClass(String serviceClassName)
+ {
+ Class<?> clazz = null;
+ Class<? extends S> serviceClass = null;
+ try
+ {
+ clazz = loader.loadClass(serviceClassName);
+ serviceClass = clazz.asSubclass(expectedType);
+ }
+ catch (ClassNotFoundException e)
+ {
+ log.warning("Could not load service class " + serviceClassName);
+ }
+ catch (ClassCastException e)
+ {
+ throw new RuntimeException("Service class " + serviceClassName + " didn't implement the Extension interface");
+ }
+ return serviceClass;
+ }
+
+ private S prepareInstance(Class<? extends S> serviceClass)
+ {
+ try
+ {
+ // TODO Support the SM
+ Constructor<? extends S> constructor = serviceClass.getDeclaredConstructor();
+ constructor.setAccessible(true);
+ return constructor.newInstance();
+ }
+ catch (NoClassDefFoundError e)
+ {
+ log.log(WARNING, "Could not instantiate service class " + serviceClass.getName(), e);
+ return null;
+ }
+ catch (InvocationTargetException e)
+ {
+ throw new RuntimeException("Error instantiating " + serviceClass, e.getCause());
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new RuntimeException("Error instantiating " + serviceClass, e);
+ }
+ catch (InstantiationException e)
+ {
+ throw new RuntimeException("Error instantiating " + serviceClass, e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException("Error instantiating " + serviceClass, e);
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException("Error instantiating " + serviceClass, e);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new RuntimeException("Error instantiating " + serviceClass, e);
+ }
+ }
+
+ /**
+ * Lazily loads the available providers of this loader's service.
+ *
+ * The iterator returned by this method first yields all of the elements of
+ * the provider cache, in instantiation order. It then lazily loads and
+ * instantiates any remaining providers, adding each one to the cache in
+ * turn.
+ *
+ * To achieve laziness the actual work of parsing the available
+ * provider-configuration files and instantiating providers must be done by
+ * the iterator itself. Its hasNext and next methods can therefore throw a
+ * ServiceConfigurationError if a provider-configuration file violates the
+ * specified format, or if it names a provider class that cannot be found and
+ * instantiated, or if the result of instantiating the class is not
+ * assignable to the service type, or if any other kind of exception or error
+ * is thrown as the next provider is located and instantiated. To write
+ * robust code it is only necessary to catch ServiceConfigurationError when
+ * using a service iterator.
+ *
+ * If such an error is thrown then subsequent invocations of the iterator
+ * will make a best effort to locate and instantiate the next available
+ * provider, but in general such recovery cannot be guaranteed.
+ *
+ * Design Note Throwing an error in these cases may seem extreme. The
+ * rationale for this behavior is that a malformed provider-configuration
+ * file, like a malformed class file, indicates a serious problem with the
+ * way the Java virtual machine is configured or is being used. As such it is
+ * preferable to throw an error rather than try to recover or, even worse,
+ * fail silently.
+ *
+ * The iterator returned by this method does not support removal. Invoking
+ * its remove method will cause an UnsupportedOperationException to be
+ * thrown.
+ *
+ * @return An iterator that lazily loads providers for this loader's service
+ */
+ public Iterator<Metadata<S>> iterator()
+ {
+ if (providers == null)
+ {
+ reload();
+ }
+ return providers.iterator();
+ }
+
+ /**
+ * Returns a string describing this service.
+ *
+ * @return A descriptive string
+ */
+ @Override
+ public String toString()
+ {
+ return "Services for " + serviceFile;
+ }
+ }
+
+
+
+ private final JBossBeanDeploymentArchive beanDeploymentArchive;
private final List<BeanDeploymentArchive> beanDeploymentArchives;
private final ServiceRegistry services;
public FlatDeployment(WeldDiscoveryEnvironment environment, Collection<EjbDescriptor<?>> ejbDescriptors)
{
this.beanDeploymentArchive = new JBossBeanDeploymentArchive("flat" ,environment, ejbDescriptors);
- this.beanDeploymentArchives = Collections.singletonList(beanDeploymentArchive);
+ this.beanDeploymentArchives = Collections.<BeanDeploymentArchive>singletonList(beanDeploymentArchive);
this.services = new SimpleServiceRegistry();
}
@@ -58,7 +429,7 @@
return beanDeploymentArchive;
}
- public BeanDeploymentArchive getFlatBeanDeploymentArchive()
+ public JBossBeanDeploymentArchive getFlatBeanDeploymentArchive()
{
return beanDeploymentArchive;
}
@@ -67,4 +438,9 @@
{
return services;
}
+
+ public Iterable<Metadata<Extension>> getExtensions()
+ {
+ return ServiceLoader.load(Extension.class);
+ }
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossBeanDeploymentArchive.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossBeanDeploymentArchive.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossBeanDeploymentArchive.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -1,13 +1,14 @@
package org.jboss.weld.integration.deployer.env;
-import java.net.URL;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import org.jboss.weld.bootstrap.api.Bootstrap;
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.bootstrap.spi.BeansXml;
import org.jboss.weld.ejb.spi.EjbDescriptor;
public class JBossBeanDeploymentArchive implements BeanDeploymentArchive
@@ -17,6 +18,7 @@
private final Collection<EjbDescriptor<?>> ejbDescriptors;
private final ServiceRegistry services;
private final String id;
+ private Bootstrap bootstrap;
public JBossBeanDeploymentArchive(String id, WeldDiscoveryEnvironment environment, Collection<EjbDescriptor<?>> ejbDescriptors)
{
@@ -26,7 +28,7 @@
this.id = id;
}
- public Collection<Class<?>> getBeanClasses()
+ public Collection<String> getBeanClasses()
{
return environment.getWeldClasses();
}
@@ -36,9 +38,13 @@
return Collections.emptyList();
}
- public Collection<URL> getBeansXml()
+ public BeansXml getBeansXml()
{
- return environment.getWeldXml();
+ if (bootstrap == null)
+ {
+ throw new IllegalStateException("bootstrap must not be null");
+ }
+ return bootstrap.parse(environment.getWeldXml());
}
public Collection<EjbDescriptor<?>> getEjbs()
@@ -56,4 +62,9 @@
return id;
}
+ public void setBootstrap(Bootstrap bootstrap)
+ {
+ this.bootstrap = bootstrap;
+ }
+
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldBootstrapDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -29,6 +29,7 @@
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.weld.bootstrap.api.Bootstrap;
+import org.jboss.weld.bootstrap.spi.Deployment;
import org.jboss.weld.context.api.BeanStore;
import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore;
import org.jboss.weld.integration.deployer.DeployersUtils;
@@ -58,6 +59,10 @@
if (ejbServicesValue == null)
throw new DeploymentException("Missing ejb services: " + unit);
+ ValueMetaData ejbInjectionServicesValue = info.getEjbInjectionServices();
+ if (ejbInjectionServicesValue == null)
+ throw new DeploymentException("Missing ejb injection services: " + unit);
+
ValueMetaData deploymentValue = info.getDeployment();
if (deploymentValue == null)
throw new DeploymentException("Missing deployment: " + unit);
@@ -68,7 +73,7 @@
bootstrap.addConstructorParameter(Bootstrap.class.getName(), createBootstrap(unit));
bootstrap.addConstructorParameter(FlatDeployment.class.getName(), deploymentValue);
bootstrap.addPropertyMetaData("ejbServices", ejbServicesValue);
- bootstrap.addPropertyMetaData("ejbInjectionServices", ejbServicesValue);
+ bootstrap.addPropertyMetaData("ejbInjectionServices", ejbInjectionServicesValue);
bootstrap.addPropertyMetaData("jpaServices", createServiceConnector("JBossJpaServices", "org.jboss.weld.integration.persistence.JBossJpaServices", unit));
bootstrap.addPropertyMetaData("resourceServices", bootstrap.createInject("JBossResourceServices"));
bootstrap.addPropertyMetaData("transactionServices", bootstrap.createInject("JBossTransactionServices"));
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -53,6 +53,7 @@
setStage(DeploymentStages.PRE_REAL);
}
+ @Override
public void deploy(VFSDeploymentUnit unit, JBossWeldMetaData deployment) throws DeploymentException
{
@SuppressWarnings("unchecked")
@@ -131,7 +132,7 @@
public void visit(ResourceContext resource)
{
- wbdi.addWeldClass(resource.loadClass());
+ wbdi.addWeldClass(resource.getClassName());
}
}
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -34,7 +34,7 @@
*/
public class WeldDiscoveryEnvironment
{
- private Set<Class<?>> classes = new HashSet<Class<?>>();
+ private Set<String> classes = new HashSet<String>();
private Set<URL> urls = new HashSet<URL>();
/**
@@ -42,9 +42,9 @@
*
* @param clazz the weld class
*/
- public void addWeldClass(Class<?> clazz)
+ public void addWeldClass(String className)
{
- classes.add(clazz);
+ classes.add(className);
}
/**
@@ -62,7 +62,7 @@
*
* @return the weld classes
*/
- public Collection<Class<?>> getWeldClasses()
+ public Collection<String> getWeldClasses()
{
// FIXME WELDINT-1 old classes that use this method should get an Unmodifiable
// collection; if those classes are not deleted this method needs to be reviewed
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -27,6 +27,7 @@
import java.util.Map;
import java.util.WeakHashMap;
+import org.jboss.weld.bootstrap.api.Bootstrap;
import org.jboss.weld.bootstrap.api.ServiceRegistry;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
import org.jboss.weld.ejb.spi.EjbDescriptor;
@@ -68,7 +69,7 @@
}
// the classes contained in this archive
- private final Collection<Class<?>> classes;
+ private final Collection<String> classes;
// the bean.xml URLs contained in this archive
private final Collection<URL> xmlURLs;
@@ -117,7 +118,7 @@
*
* @return the classes contained in this archive
*/
- public Collection<Class<?>> getClasses()
+ public Collection<String> getClasses()
{
return classes;
}
@@ -160,7 +161,8 @@
*/
public void addClass(Class<?> beanClass)
{
- classes.add(beanClass);
+ // TODO Move this higher up the hierarchy, so we never load the class
+ classes.add(beanClass.getName());
}
/**
@@ -220,14 +222,15 @@
* Creates the BeanDeploymentArchive that corresponds to this archive. This method
* never returns duplicates.
*
+ * @param bootstrap the Weld boostrap
* @return the BeanDeploymentArchive representing this archive. If this bda has not
* been created, it is created and returned
*/
- public BeanDeploymentArchive createBeanDeploymentArchive(ServiceRegistry services)
+ public BeanDeploymentArchive createBeanDeploymentArchive(Bootstrap bootstrap, ServiceRegistry services)
{
if (bda == null)
{
- bda = new BeanDeploymentArchiveImpl(classLoader.toString(), services, this);
+ bda = new BeanDeploymentArchiveImpl(classLoader.toString(), bootstrap, services, this);
for (ArchiveLifecycleListener listener: lifecycleListeners)
{
// notifies the listener that this archive became visible as a BDA
@@ -236,6 +239,19 @@
}
return bda;
}
+
+ /**
+ * Creates the BeanDeploymentArchive that corresponds to this archive. This method
+ * never returns duplicates.
+ * Use this method if you are sure that this Archive has no beans.xml file.
+ *
+ * @return the BeanDeploymentArchive representing this archive. If this bda has not
+ * been created, it is created and returned
+ */
+ public BeanDeploymentArchive createBeanDeploymentArchive(ServiceRegistry services)
+ {
+ return createBeanDeploymentArchive(null, services);
+ }
/**
* Adds an ArchiveLifecycleListener. When called prior to BDA creation, this listener
@@ -275,6 +291,7 @@
}
}
+ @Override
public String toString()
{
return "Archive[" + classLoader + "]";
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -24,9 +24,10 @@
import java.net.URL;
import java.util.Collection;
+import org.jboss.weld.bootstrap.api.Bootstrap;
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.bootstrap.spi.BeansXml;
import org.jboss.weld.ejb.spi.EjbDescriptor;
/**
@@ -43,35 +44,46 @@
// the Archive that this BDA represents
private final Archive archive;
+ // the WeldBootstrap
+ private final Bootstrap bootstrap;
+
// the services provided by this BDA
private final ServiceRegistry services;
/**
* Constructor.
*
- * @param id the identifier name of this BeanDeploymentArchive
- * @param archive the archive that this BeanDeploymentArchive represents
+ * @param id the identifier name of this BeanDeploymentArchive
+ * @param bootstrap the Weld bootstrap. Can be null only if {@code archive} has no
+ * beans.xml file
+ * @param archive the archive that this BeanDeploymentArchive represents
*/
- public BeanDeploymentArchiveImpl(String id, ServiceRegistry services, Archive archive)
+ public BeanDeploymentArchiveImpl(String id, Bootstrap bootstrap, ServiceRegistry services, Archive archive)
{
this.id = id;
+ this.bootstrap = bootstrap;
this.services = services;
this.archive = archive;
}
-
+
public Collection<BeanDeploymentArchive> getBeanDeploymentArchives()
{
return archive.getClasspath().getBDAs(this);
}
- public Collection<Class<?>> getBeanClasses()
+ public Collection<String> getBeanClasses()
{
return archive.getClasses();
}
- public Collection<URL> getBeansXml()
+ public BeansXml getBeansXml()
{
- return archive.getXmlURLs();
+ Collection<URL> urls = archive.getXmlURLs();
+ if (urls.isEmpty())
+ {
+ return BeansXml.EMPTY_BEANS_XML;
+ }
+ return bootstrap.parse(urls);
}
public Collection<EjbDescriptor<?>> getEjbs()
@@ -99,6 +111,7 @@
return archive;
}
+ @Override
public String toString()
{
return archive.toString();
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -27,11 +27,15 @@
import java.util.Iterator;
import java.util.Map;
+import javax.enterprise.inject.spi.Extension;
+
+import org.jboss.weld.bootstrap.api.Bootstrap;
import org.jboss.weld.bootstrap.api.Service;
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.bootstrap.spi.Deployment;
+import org.jboss.weld.bootstrap.spi.Metadata;
import org.jboss.weld.ejb.spi.EjbDescriptor;
/**
@@ -59,6 +63,8 @@
private Collection<Archive> loadedArchives;
private Collection<EjbDescriptor<?>> ejbs;
+
+ private Iterable<Metadata<Extension>> extensions;
/**
* Constructor.
@@ -77,13 +83,20 @@
this.ejbs = ejbs;
for (ArchiveInfo archiveInfo: archiveInfos)
{
- Archive archive = ArchiveFactory.createArchive(archiveInfo, ejbs);
- archives.add(archive);
+ archives.add(ArchiveFactory.createArchive(archiveInfo, ejbs));
+ }
+ }
+
+ public void initialize(Bootstrap bootstrap)
+ {
+ for (Archive archive: archives)
+ {
if (archive.hasXml())
{
- archive.createBeanDeploymentArchive(bdaServices);
+ archive.createBeanDeploymentArchive(bootstrap, bdaServices);
}
}
+ extensions = bootstrap.loadExtensions(Thread.currentThread().getContextClassLoader());
}
public Collection<BeanDeploymentArchive> getBeanDeploymentArchives()
@@ -182,6 +195,12 @@
}
}
+ public Iterable<Metadata<Extension>> getExtensions()
+ {
+ return extensions;
+ }
+
+ @Override
public String toString()
{
return "Deployment[" + name + "]";
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/helpers/BootstrapBean.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/helpers/BootstrapBean.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/helpers/BootstrapBean.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -131,6 +131,7 @@
public void initialize()
{
+ deployment.getFlatBeanDeploymentArchive().setBootstrap(bootstrap);
// Create the JBoss Servlet Services
addDeploymentService(ServletServices.class, new JBossServletServices(deployment.getFlatBeanDeploymentArchive()));
bootstrap.startContainer(Environments.EE_INJECT, deployment, applicationBeanStore);
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/AbstractJndiBinderDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -37,6 +37,7 @@
import org.jboss.deployers.spi.deployer.DeploymentStages;
import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.service.NameSpaces;
import org.jboss.util.naming.NonSerializableFactory;
import org.jboss.weld.integration.deployer.DeployersUtils;
@@ -54,13 +55,13 @@
private Object thisName;
private Hashtable<String, String> jndiEnvironment = new Hashtable<String, String>();
private Context beanManagerContext;
+ private NameSpaces nameSpaces;
protected AbstractJndiBinderDeployer(Class<T> bootstrapClass)
{
if (bootstrapClass == null)
throw new IllegalArgumentException("Null bootstrap class");
- setTopLevelOnly(true);
addInput(BeanMetaData.class);
setStage(DeploymentStages.PRE_REAL);
@@ -72,18 +73,18 @@
String bootstrapName = DeployersUtils.getBootstrapBeanName(unit);
String bbAttachmentName = bootstrapName + "_" + BeanMetaData.class.getSimpleName();
- BeanMetaData bbBMD = unit.getAttachment(bbAttachmentName, BeanMetaData.class);
+ BeanMetaData bbBMD = unit.getTopLevel().getAttachment(DeployersUtils.getBootstrapBeanAttachmentName(unit), BeanMetaData.class);
if (bbBMD != null)
{
BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(bbBMD);
ParameterMetaDataBuilder pmdb = builder.addInstallWithParameters("bind", thisName.toString(), ControllerState.INSTALLED, ControllerState.INSTALLED);
pmdb.addParameterMetaData(bootstrapClass.getName(), builder.createThis());
- pmdb.addParameterMetaData(String.class.getName(), unit.getSimpleName());
+ pmdb.addParameterMetaData(DeploymentUnit.class.getName(), unit);
pmdb = builder.addUninstallWithParameters("unbind", thisName.toString(), ControllerState.INSTALLED, ControllerState.INSTALLED);
pmdb.addParameterMetaData(bootstrapClass.getName(), builder.createThis());
- pmdb.addParameterMetaData(String.class.getName(), unit.getSimpleName());
+ pmdb.addParameterMetaData(DeploymentUnit.class.getName(), unit);
}
}
@@ -93,9 +94,14 @@
this.thisName = thisName;
}
+ public void setNameSpaces(NameSpaces nameSpaces)
+ {
+ this.nameSpaces = nameSpaces;
+ }
+
protected Context createContext() throws NamingException
{
- return new InitialContext(jndiEnvironment);
+ return nameSpaces.getGlobalContext();
}
public void create() throws Exception
@@ -131,9 +137,9 @@
// --- binding logic ---
- public abstract void bind(T bootstrapBean, String deploymentUnitName) throws NamingException;
+ public abstract void bind(T bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException;
- public abstract void unbind(T bootstrapBean, String deploymentUnitName) throws NamingException;
+ public abstract void unbind(T bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException;
protected static void addNonSerializableFactory(Hashtable<String, String> environment)
{
Copied: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java (from rev 107921, trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java)
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java (rev 0)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/BeanDeploymentArchiveLocator.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,15 @@
+package org.jboss.weld.integration.deployer.jndi;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+
+/**
+ * Returns the bean deployment archive that corresponds to a given deployment unit
+ *
+ * @author Marius Bogoevici
+ */
+public interface BeanDeploymentArchiveLocator
+{
+ BeanDeploymentArchive getBeanDeploymentArchive(BootstrapBean bootstrap, DeploymentUnit deploymentUnit);
+}
Copied: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java (from rev 107921, trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java)
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java (rev 0)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/FlatBeanDeploymentArchiveLocator.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,25 @@
+package org.jboss.weld.integration.deployer.jndi;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+
+/**
+ * {@link BeanDeploymentArchiveLocator} implementation for flat archives
+ *
+ * @author Marius Bogoevici
+ */
+public class FlatBeanDeploymentArchiveLocator implements BeanDeploymentArchiveLocator
+{
+ public BeanDeploymentArchive getBeanDeploymentArchive(BootstrapBean bootstrap, DeploymentUnit deploymentUnit)
+ {
+ for (BeanDeploymentArchive beanDeploymentArchive: bootstrap.getDeployment().getBeanDeploymentArchives())
+ {
+ if (beanDeploymentArchive.getId().equals("flat"))
+ {
+ return beanDeploymentArchive;
+ }
+ }
+ return null;
+ }
+}
Copied: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java (from rev 107921, trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java)
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java (rev 0)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JBossBeanDeploymentArchiveLocator.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,25 @@
+package org.jboss.weld.integration.deployer.jndi;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
+
+/**
+ * {@link BeanDeploymentArchiveLocator} implementation for non-flat (hierarchical) archives
+ *
+ * @author Marius Bogoevici
+ */
+public class JBossBeanDeploymentArchiveLocator implements BeanDeploymentArchiveLocator
+{
+ public BeanDeploymentArchive getBeanDeploymentArchive(BootstrapBean bootstrap, DeploymentUnit deploymentUnit)
+ {
+ for (BeanDeploymentArchive beanDeploymentArchive: bootstrap.getDeployment().getBeanDeploymentArchives())
+ {
+ if (beanDeploymentArchive.getId().equals(deploymentUnit.getClassLoader().toString()))
+ {
+ return beanDeploymentArchive;
+ }
+ }
+ return null;
+ }
+}
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaCompJndiBinder.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -23,10 +23,16 @@
import javax.enterprise.inject.spi.BeanManager;
import javax.naming.Context;
+import javax.naming.LinkRef;
import javax.naming.NamingException;
import javax.naming.Reference;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.logging.Logger;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEModuleInformer;
+import org.jboss.reloaded.naming.spi.JavaEEApplication;
+import org.jboss.reloaded.naming.spi.JavaEEComponent;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
/**
* @author Marius Bogoevici
@@ -34,11 +40,13 @@
public abstract class JavaCompJndiBinder
{
protected Logger log = Logger.getLogger(getClass());
- private String deploymentUnitName;
+ private String applicationName;
+ private String moduleName;
- public JavaCompJndiBinder(String deploymentUnitName)
+ public JavaCompJndiBinder(String applicationName, String moduleName)
{
- this.deploymentUnitName = deploymentUnitName;
+ this.applicationName = applicationName;
+ this.moduleName = moduleName;
}
public void bindToJavaComp()
@@ -56,7 +64,8 @@
}
if (beanManagerContext == null)
{
- compContext.bind("BeanManager",new Reference(BeanManager.class.getName(), "org.jboss.weld.resources.ManagerObjectFactory", null));
+ String path = applicationName == null? applicationName : (applicationName + "/" + moduleName);
+ compContext.bind("BeanManager", new LinkRef("java:global/BeanManagers/" + path));
}
}
catch (NamingException e)
@@ -77,7 +86,9 @@
}
catch (NamingException e)
{
- log.error("Cound not unbind java:comp/BeanManager for " + deploymentUnitName);
+ log.error("Cound not unbind java:comp/BeanManager for " + getJavaContextDescription());
}
}
+
+
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinder.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -23,6 +23,8 @@
import javax.naming.Context;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.spi.JavaEEApplication;
import org.jboss.reloaded.naming.spi.JavaEEComponent;
/**
@@ -33,9 +35,9 @@
private JavaEEComponent javaEEComponent;
- public JavaEEComponentJndiBinder(JavaEEComponent javaEEComponent, String deploymentUnitName)
+ public JavaEEComponentJndiBinder(JavaEEComponent javaEEComponent)
{
- super(deploymentUnitName);
+ super(getApplicationForComponent(javaEEComponent) != null? getApplicationForComponent(javaEEComponent).getName(): null, javaEEComponent.getModule().getName());
this.javaEEComponent = javaEEComponent;
}
@@ -50,4 +52,10 @@
{
return javaEEComponent.getName();
}
+
+ protected static JavaEEApplication getApplicationForComponent(JavaEEComponent javaEEComponent)
+ {
+ return javaEEComponent.getModule().getApplication();
+ }
+
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEComponentJndiBinderDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -27,6 +27,7 @@
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.jpa.javaee.JavaEEModuleInformer;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
@@ -76,7 +77,6 @@
BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(getJndiBinderName(deploymentUnit), JavaEEComponentJndiBinder.class.getName());
AbstractInjectionValueMetaData javaComponent = new AbstractInjectionValueMetaData(getComponentBeanName(deploymentUnit));
builder.addConstructorParameter(JavaEEComponent.class.getName(), javaComponent);
- builder.addConstructorParameter(String.class.getName(), deploymentUnit.getName());
builder.addInstall("bindToJavaComp");
deploymentUnit.getParent().addAttachment(deploymentUnit.getName() + "_JavaCompBinder", builder.getBeanMetaData());
}
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JavaEEModuleJndiBinder.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -23,6 +23,7 @@
import javax.naming.Context;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.reloaded.naming.spi.JavaEEModule;
/**
@@ -33,9 +34,9 @@
private JavaEEModule javaEEModule;
- public JavaEEModuleJndiBinder(JavaEEModule javaEEModule, String deploymentUnitName)
+ public JavaEEModuleJndiBinder(JavaEEModule javaEEModule)
{
- super(deploymentUnitName);
+ super(javaEEModule.getApplication() != null? javaEEModule.getApplication().getName(): null, javaEEModule.getName());
this.javaEEModule = javaEEModule;
}
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/JndiBinderDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -31,6 +31,8 @@
import javax.naming.Context;
import javax.naming.NamingException;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEModuleInformer;
import org.jboss.util.naming.NonSerializableFactory;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
import org.jboss.weld.integration.deployer.env.helpers.BootstrapBean;
@@ -49,33 +51,59 @@
public JndiBinderDeployer()
{
super(BootstrapBean.class);
+ this.setWantComponents(false);
}
-// --- binding logic ---
+ private BeanDeploymentArchiveLocator beanDeploymentArchiveLocator;
- public void bind(BootstrapBean bootstrapBean, String deploymentUnitName) throws NamingException
+ private JavaEEModuleInformer moduleInformer;
+
+ public void setBeanDeploymentArchiveLocator(BeanDeploymentArchiveLocator beanDeploymentArchiveLocator)
{
- Map<String, BeanManager> beanManagers = new DeploymentVisitor(bootstrapBean).visit().getBeanManagers();
- Context context = getBeanManagerContext().createSubcontext(deploymentUnitName);
+ this.beanDeploymentArchiveLocator = beanDeploymentArchiveLocator;
+ }
- for (Map.Entry<String, BeanManager> entry : beanManagers.entrySet())
+ public void setModuleInformer(JavaEEModuleInformer moduleInformer)
+ {
+ this.moduleInformer = moduleInformer;
+ }
+
+ // --- binding logic ---
+
+ public void bind(BootstrapBean bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
+ {
+ Context context = getBeanManagerContext();
+
+ if (moduleInformer.getModuleType(deploymentUnit).equals(JavaEEModuleInformer.ModuleType.EJB) ||
+ moduleInformer.getModuleType(deploymentUnit).equals(JavaEEModuleInformer.ModuleType.WEB))
{
- NonSerializableFactory.rebind(context, entry.getKey(), entry.getValue());
+ BeanDeploymentArchive beanDeploymentArchive = beanDeploymentArchiveLocator.getBeanDeploymentArchive(bootstrapBean, deploymentUnit);
+ if (beanDeploymentArchive != null)
+ {
+ String applicationName = moduleInformer.getApplicationName(deploymentUnit);
+ String name = (applicationName == null) ? "" : applicationName + "/";
+ name += moduleInformer.getModulePath(deploymentUnit);
+ NonSerializableFactory.rebind(context, name, bootstrapBean.getBootstrap().getManager(beanDeploymentArchive), true);
+ }
}
}
- public void unbind(BootstrapBean bootstrapBean, String deploymentUnitName) throws NamingException
+ public void unbind(BootstrapBean bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
{
Map<String, BeanManager> beanManagers = new DeploymentVisitor(bootstrapBean).visit().getBeanManagers();
- Context context = (Context)getBeanManagerContext().lookup(deploymentUnitName); // or how do I get existing sub-context
-
- for (Map.Entry<String, BeanManager> entry : beanManagers.entrySet())
+ Context context = (Context)getBeanManagerContext();
+ String applicationName = moduleInformer.getApplicationName(deploymentUnit);
+ String topContext = applicationName != null? applicationName: moduleInformer.getModulePath(deploymentUnit);
+ try
{
- context.unbind(entry.getKey());
- NonSerializableFactory.unbind(entry.getKey());
+ Context appContext = (Context) context.lookup(topContext);
+ context.destroySubcontext(topContext);
}
+ catch (NamingException e)
+ {
+ // ignore if missing
+ }
- getBeanManagerContext().destroySubcontext(deploymentUnitName);
}
protected static class DeploymentVisitor
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/SimpleCompJndiBinder.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -26,6 +26,7 @@
import javax.naming.NamingException;
import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reloaded.naming.spi.JavaEEModule;
/**
* @author Marius Bogoevici
@@ -34,9 +35,10 @@
{
private DeploymentUnit deploymentUnit;
- public SimpleCompJndiBinder(DeploymentUnit deploymentUnit)
+ public SimpleCompJndiBinder(DeploymentUnit deploymentUnit, JavaEEModule javaEEModule)
{
- super(deploymentUnit.getName());
+ super(javaEEModule.getApplication()!=null?javaEEModule.getApplication().getName():null, javaEEModule.getName());
+
this.deploymentUnit = deploymentUnit;
}
@@ -52,7 +54,6 @@
finally
{
Thread.currentThread().setContextClassLoader(originalClassLoader);
- this.deploymentUnit = null;
}
}
Modified: branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/jndi/WebJndiBinderDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -53,17 +53,18 @@
BeanMetaData bbBMD = getBootstrapBeanAttachment(deploymentUnit.getTopLevel());
if (bbBMD != null && deploymentUnit.isAttachmentPresent(JBossWebMetaData.class))
{
+ AbstractInjectionValueMetaData javaModule = new AbstractInjectionValueMetaData(getModuleBeanName(deploymentUnit));
+
BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(deploymentUnit.getName() + "_WebCompJndiBinder", SimpleCompJndiBinder.class.getName());
builder.addConstructorParameter(DeploymentUnit.class.getName(), deploymentUnit);
+ builder.addConstructorParameter(JavaEEModule.class.getName(), javaModule);
builder.addInstall("bindToJavaComp");
// no uninstall method for SimpleCompJndiBinder (context will be destroyed by Tomcat)
//builder.addUninstall("unbind");
deploymentUnit.getTopLevel().addAttachment(deploymentUnit.getName() + "_WebCompJndiBinder", builder.getBeanMetaData());
BeanMetaDataBuilder moduleBinderBuilder = BeanMetaDataBuilder.createBuilder(deploymentUnit.getName() + "_JavaModuleJndiBinder", JavaEEModuleJndiBinder.class.getName());
- AbstractInjectionValueMetaData javaModule = new AbstractInjectionValueMetaData(getModuleBeanName(deploymentUnit));
moduleBinderBuilder.addConstructorParameter(JavaEEModule.class.getName(), javaModule);
- moduleBinderBuilder.addConstructorParameter(String.class.getName(), deploymentUnit.getName());
moduleBinderBuilder.addInstall("bindToJavaComp");
moduleBinderBuilder.addUninstall("unbind");
deploymentUnit.getTopLevel().addAttachment(deploymentUnit.getName() + "_JavaModuleJndiBinder", moduleBinderBuilder.getBeanMetaData());
Copied: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbInjectionServices.java (from rev 107921, trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbInjectionServices.java)
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbInjectionServices.java (rev 0)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbInjectionServices.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.deployers.support;
+
+import java.util.Collections;
+
+import javax.enterprise.inject.spi.InjectionPoint;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.weld.ejb.api.SessionObjectReference;
+import org.jboss.weld.ejb.spi.EjbDescriptor;
+import org.jboss.weld.ejb.spi.EjbServices;
+import org.jboss.weld.ejb.spi.InterceptorBindings;
+import org.jboss.weld.injection.spi.EjbInjectionServices;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class MockEjbInjectionServices implements EjbInjectionServices
+{
+ public void setDeploymentUnit(DeploymentUnit unit)
+ {
+ }
+
+ public Object resolveEjb(InjectionPoint injectionPoint)
+ {
+ return null;
+ }
+
+ public Object resolvePersistenceContext(InjectionPoint injectionPoint)
+ {
+ return null;
+ }
+
+ public Object resolveResource(InjectionPoint injectionPoint)
+ {
+ return null;
+ }
+
+ public void removeEjb(Object instance)
+ {
+ }
+
+ public SessionObjectReference resolveEjb(EjbDescriptor<?> descriptor)
+ {
+ return null;
+ }
+
+ public void registerInterceptors(EjbDescriptor<?> ejbDescriptor, InterceptorBindings interceptorBindings)
+ {
+ // do nothing
+ }
+
+ public Iterable<EjbDescriptor<?>> getEjbs()
+ {
+ return Collections.emptySet();
+ }
+
+ public Object resolveRemoteEjb(String jndiName, String mappedName, String ejbLink)
+ {
+ return null;
+ }
+
+ public Iterable<String> getEjbContainerNames()
+ {
+ return Collections.emptySet();
+ }
+
+
+ public void cleanup() {}
+
+}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbServices.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbServices.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockEjbServices.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -30,22 +30,17 @@
import org.jboss.weld.ejb.spi.EjbDescriptor;
import org.jboss.weld.ejb.spi.EjbServices;
import org.jboss.weld.ejb.spi.InterceptorBindings;
-import org.jboss.weld.injection.spi.EjbInjectionServices;
/**
* @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
*/
-public class MockEjbServices implements EjbServices, EjbInjectionServices
+public class MockEjbServices implements EjbServices
{
public void setDeploymentUnit(DeploymentUnit unit)
{
}
- public Object resolveEjb(InjectionPoint injectionPoint)
- {
- return null;
- }
-
public Object resolvePersistenceContext(InjectionPoint injectionPoint)
{
return null;
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockWeldBootstrap.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockWeldBootstrap.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockWeldBootstrap.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,10 +21,16 @@
*/
package org.jboss.test.deployers.support;
+import java.net.URL;
+
+import javax.enterprise.inject.spi.Extension;
+
import org.jboss.weld.bootstrap.api.Bootstrap;
import org.jboss.weld.bootstrap.api.Environment;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.BeansXml;
import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.bootstrap.spi.Metadata;
import org.jboss.weld.context.api.BeanStore;
import org.jboss.weld.manager.api.WeldManager;
@@ -110,4 +116,21 @@
this.validateBeans = true;
return this;
}
+
+ public BeansXml parse(Iterable<URL> urls)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public BeansXml parse(URL url)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Iterable<Metadata<Extension>> loadExtensions(ClassLoader classLoader)
+ {
+ return null;
+ }
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/WeldDEWrapper.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/WeldDEWrapper.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/WeldDEWrapper.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -41,13 +41,13 @@
this.deployment = deployment;
}
- public Iterable<Class<?>> discoverWebBeanClasses()
+ public Iterable<String> discoverWebBeanClasses()
{
- Set<Class<?>> result = new HashSet<Class<?>>();
+ Set<String> result = new HashSet<String>();
Collection<BeanDeploymentArchive> bdas = deployment.getBeanDeploymentArchives();
for (BeanDeploymentArchive bda : bdas)
{
- for (Class<?> clazz : bda.getBeanClasses())
+ for (String clazz : bda.getBeanClasses())
result.add(clazz);
}
return result;
@@ -59,8 +59,9 @@
Collection<BeanDeploymentArchive> bdas = deployment.getBeanDeploymentArchives();
for (BeanDeploymentArchive bda : bdas)
{
- for (URL url : bda.getBeansXml())
- result.add(url);
+ // TODO Fix this
+ //for (URL url : bda.getBeansXml())
+ // result.add(url);
}
return result;
}
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/deployer/CheckableJndiBinderDeployer.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -24,6 +24,7 @@
import javax.naming.Context;
import javax.naming.NamingException;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.weld.integration.deployer.jndi.AbstractJndiBinderDeployer;
/**
@@ -46,17 +47,17 @@
return ROOT;
}
- public void bind(Object bootstrapBean, String deploymentUnitName) throws NamingException
+ public void bind(Object bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
{
- Context context = getBeanManagerContext().createSubcontext(deploymentUnitName);
+ Context context = getBeanManagerContext().createSubcontext(deploymentUnit.getSimpleName());
context.bind("bootstrap", bootstrapBean);
}
- public void unbind(Object bootstrapBean, String deploymentUnitName) throws NamingException
+ public void unbind(Object bootstrapBean, DeploymentUnit deploymentUnit) throws NamingException
{
- Context context = (Context)getBeanManagerContext().lookup(deploymentUnitName);
+ Context context = (Context)getBeanManagerContext().lookup(deploymentUnit.getSimpleName());
context.unbind("bootstrap");
- getBeanManagerContext().destroySubcontext(deploymentUnitName);
+ getBeanManagerContext().destroySubcontext(deploymentUnit.getSimpleName());
}
}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,11 +21,9 @@
*/
package org.jboss.test.deployers.test;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -38,7 +36,6 @@
import org.jboss.test.deployers.support.jar.PlainJavaBean;
import org.jboss.test.deployers.support.ui.UIWebBean;
import org.jboss.test.deployers.support.web.ServletWebBean;
-import org.jboss.test.deployers.test.AbstractWeldTest;
import org.jboss.vfs.VirtualFile;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
import org.jboss.weld.bootstrap.spi.Deployment;
@@ -81,48 +78,48 @@
Object bean = getBean(Deployment.class);
Deployment deployment = assertInstanceOf(bean, Deployment.class, false);
-
+ initializeDeployment(deployment);
+
List<BeanDeploymentArchive> archives = new ArrayList<BeanDeploymentArchive>();
getArchives(archives, deployment.getBeanDeploymentArchives());
assertEquals(getExpectedArchives(), archives.size());
- List<URL> urls = new ArrayList<URL>();
- List<Class<?>> classes = new ArrayList<Class<?>>();
+ //List<BeansXml> urls = new ArrayList<BeansXml>();
+ List<String> classes = new ArrayList<String>();
for (BeanDeploymentArchive bad : archives)
{
- for (URL url : bad.getBeansXml())
- urls.add(url);
- for (Class<?> clazz : bad.getBeanClasses())
+ //urls.add(bad.getBeansXml());
+ for (String clazz : bad.getBeanClasses())
classes.add(clazz);
}
Set<String> expected = new HashSet<String>();
- addExpectedResource(expected, "ejbs.jar");
- addExpectedResource(expected, "ext.jar");
- addExpectedResource(expected, "simple.jar");
- addExpectedResource(expected, "ui.jar");
- addExpectedResource(expected, "crm.jar");
- addExpectedResource(expected, "simple.war", "/WEB-INF/beans.xml");
+// addExpectedResource(expected, "ejbs.jar");
+// addExpectedResource(expected, "ext.jar");
+// addExpectedResource(expected, "simple.jar");
+// addExpectedResource(expected, "ui.jar");
+// addExpectedResource(expected, "crm.jar");
+// addExpectedResource(expected, "simple.war", "/WEB-INF/beans.xml");
+//
+// assertEquals("Illegal size or urls.", expected.size(), urls.size());
- assertEquals("Illegal size or urls.", urls.size(), expected.size());
+// for (URL url : urls)
+// {
+// boolean found = false;
+// Iterator<String> iter = expected.iterator();
+// while (iter.hasNext())
+// {
+// String expectedURL = iter.next();
+// if (url.toExternalForm().contains(expectedURL))
+// {
+// iter.remove();
+// found = true;
+// break;
+// }
+// }
+// assertTrue("Unexpected wb url: " + url, found);
+// }
- for (URL url : urls)
- {
- boolean found = false;
- Iterator<String> iter = expected.iterator();
- while (iter.hasNext())
- {
- String expectedURL = iter.next();
- if (url.toExternalForm().contains(expectedURL))
- {
- iter.remove();
- found = true;
- break;
- }
- }
- assertTrue("Unexpected wb url: " + url, found);
- }
-
addExpectedClass(expected, BusinessInterface.class);
addExpectedClass(expected, MySLSBean.class);
addExpectedClass(expected, ExternalWebBean.class);
@@ -133,8 +130,8 @@
assertEquals("Illegal size or classes.", classes.size(), expected.size());
- for (Class<?> clazz : classes)
- assertTrue(expected.remove(clazz.getName()));
+ for (String className : classes)
+ assertTrue(expected.remove(className));
assertEmpty("Should be emtpy, missing " + expected, expected);
@@ -149,6 +146,8 @@
}
protected abstract void assertNewBeanDeploymentArchive(List<BeanDeploymentArchive> archives, BeanDeploymentArchive newBDA);
+
+ protected abstract void initializeDeployment(Deployment deployment);
private static void addExpectedResource(Set<String> expected, String unit)
{
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,10 +21,8 @@
*/
package org.jboss.test.deployers.test;
-import java.net.URL;
import java.util.Collection;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
import org.jboss.shrinkwrap.api.ShrinkWrap;
@@ -54,16 +52,6 @@
super(name);
}
- private static void addExpectedResource(Set<String> expected, String unit)
- {
- addExpectedResource(expected, unit, "/META-INF/beans.xml");
- }
-
- private static void addExpectedResource(Set<String> expected, String unit, String suffix)
- {
- expected.add(unit + suffix);
- }
-
private static void addExpectedClass(Set<String> expected, Class<?> clazz)
{
expected.add(clazz.getName());
@@ -71,12 +59,12 @@
private void assertExpectedClasses(E environment, Set<String> expected)
{
- Collection<Class<?>> weldClasses = getClasses(environment);
+ Collection<String> weldClasses = getClasses(environment);
assertNotNull(weldClasses);
assertTrue("Unexpected empty weld classes collection", expected.isEmpty() || !weldClasses.isEmpty());
- for (Class<?> clazz : weldClasses)
+ for (String className : weldClasses)
{
- assertTrue("Found unexpected class: " + clazz.getName(), expected.remove(clazz.getName()));
+ assertTrue("Found unexpected class: " + className, expected.remove(className));
}
assertEmpty("Should be emtpy, missing " + expected, expected);
}
@@ -91,52 +79,6 @@
assertExpectedClasses(environment, expected);
}
- private void assertExpectedResources(E environment, Set<String> expected)
- {
- Collection<URL> weldXml = getResources(environment);
- assertNotNull(weldXml);
- assertTrue("Unexpected empty weld XML collection", expected.isEmpty() || !weldXml.isEmpty());
- for (URL url : weldXml)
- {
- boolean found = false;
- Iterator<String> iter = expected.iterator();
- while (iter.hasNext())
- {
- String expectedURL = iter.next();
- if (url.toExternalForm().endsWith(expectedURL))
- {
- iter.remove();
- found = true;
- break;
- }
- }
- assertTrue("Unexpected wb url: " + url, found);
- }
- assertEmpty("Should be emtpy, missing " + expected, expected);
- }
-
- protected void assertExpectedResources(E environment, String... units)
- {
- Set<String> expected = new HashSet<String>();
- for (String unit: units)
- {
- addExpectedResource(expected, unit);
- }
- assertExpectedResources(environment, expected);
- }
-
- protected void assertExpectedWarResources(E environment, String warUnit, boolean warResourceExpected, String... units)
- {
- Set<String> expected = new HashSet<String>();
- if (warResourceExpected)
- addExpectedResource(expected, warUnit, "/WEB-INF/beans.xml");
- for (String unit: units)
- {
- addExpectedResource(expected, warUnit, "/WEB-INF/lib/" + unit + "/META-INF/beans.xml");
- }
- assertExpectedResources(environment, expected);
- }
-
protected JavaArchive createEjbJar(boolean jarCDI)
{
return createEjbJar(EJB_JAR_NAME, jarCDI, PlainJavaBean.class);
@@ -204,14 +146,5 @@
* @param environment the environment
* @return the list of classes that have been found in the environment
*/
- protected abstract Collection<Class<?>> getClasses(E environment);
-
- /**
- * Returns the Weld XML resources recorded in the environment.
- *
- * @param environment the environment
- * @return the list of URLs pointing to the Weld XML files that have been found in the
- * environment
- */
- protected abstract Collection<URL> getResources(E environment);
+ protected abstract Collection<String> getClasses(E environment);
}
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,6 +21,12 @@
*/
package org.jboss.test.deployers.test;
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
@@ -414,6 +420,71 @@
assertBasicEarWithoutXml();
}
+ private void addExpectedResource(Set<String> expected, String unit)
+ {
+ addExpectedResource(expected, unit, "/META-INF/beans.xml");
+ }
+
+ private void addExpectedResource(Set<String> expected, String unit, String suffix)
+ {
+ expected.add(unit + suffix);
+ }
+
+ private void assertExpectedResources(E environment, Set<String> expected)
+ {
+ Collection<URL> weldXml = getResources(environment);
+ assertNotNull(weldXml);
+ assertTrue("Unexpected empty weld XML collection", expected.isEmpty() || !weldXml.isEmpty());
+ for (URL url : weldXml)
+ {
+ boolean found = false;
+ Iterator<String> iter = expected.iterator();
+ while (iter.hasNext())
+ {
+ String expectedURL = iter.next();
+ if (url.toExternalForm().endsWith(expectedURL))
+ {
+ iter.remove();
+ found = true;
+ break;
+ }
+ }
+ assertTrue("Unexpected wb url: " + url, found);
+ }
+ assertEmpty("Should be emtpy, missing " + expected, expected);
+ }
+
+ protected void assertExpectedResources(E environment, String... units)
+ {
+ Set<String> expected = new HashSet<String>();
+ for (String unit: units)
+ {
+ addExpectedResource(expected, unit);
+ }
+ assertExpectedResources(environment, expected);
+ }
+
+ protected void assertExpectedWarResources(E environment, String warUnit, boolean warResourceExpected, String... units)
+ {
+ Set<String> expected = new HashSet<String>();
+ if (warResourceExpected)
+ addExpectedResource(expected, warUnit, "/WEB-INF/beans.xml");
+ for (String unit: units)
+ {
+ addExpectedResource(expected, warUnit, "/WEB-INF/lib/" + unit + "/META-INF/beans.xml");
+ }
+ assertExpectedResources(environment, expected);
+ }
+
+ /**
+ * Returns the Weld XML resources recorded in the environment.
+ *
+ * @param environment the environment
+ * @return the list of URLs pointing to the Weld XML files that have been found in the
+ * environment
+ */
+ protected abstract Collection<URL> getResources(E environment);
+
protected abstract void assertBasicEarWithoutXml();
/**
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -223,7 +223,7 @@
}
@Override
- protected Collection<Class<?>> getClasses(
+ protected Collection<String> getClasses(
WeldDiscoveryEnvironment environment)
{
return environment.getWeldClasses();
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -25,7 +25,10 @@
import junit.framework.Test;
+import org.jboss.test.deployers.support.MockWeldBootstrap;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.integration.deployer.env.bda.DeploymentImpl;
/**
* JBoss Deployment test case.
@@ -44,11 +47,19 @@
return suite(BasicEarJBossDeploymentTestCase.class);
}
+ @Override
protected int getExpectedArchives()
{
return 3;
}
+ @Override
+ protected void initializeDeployment(Deployment deployment)
+ {
+ ((DeploymentImpl) deployment).initialize(new MockWeldBootstrap());
+ }
+
+ @Override
protected void assertNewBeanDeploymentArchive(List<BeanDeploymentArchive> archives, BeanDeploymentArchive newBDA)
{
assertSame(newBDA, archives.iterator().next());
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -1,272 +1,273 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.deployers.test;
-
-import java.net.URL;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import junit.framework.Test;
-
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.jboss.test.deployers.support.CheckableBootstrap;
-import org.jboss.test.deployers.support.MockEjbServices;
-import org.jboss.test.deployers.support.MockEmptyEjbServices;
-import org.jboss.test.deployers.support.MockTransactionServices;
-import org.jboss.test.deployers.support.MockWeldBootstrap;
-import org.jboss.test.deployers.support.WeldDEWrapper;
-import org.jboss.test.deployers.support.crm.CrmWebBean;
-import org.jboss.test.deployers.support.ejb.BusinessInterface;
-import org.jboss.test.deployers.support.ejb.MySLSBean;
-import org.jboss.test.deployers.support.ext.ExternalWebBean;
-import org.jboss.test.deployers.support.jar.PlainJavaBean;
-import org.jboss.test.deployers.support.jsf.NotWBJsfBean;
-import org.jboss.test.deployers.support.ui.UIWebBean;
-import org.jboss.test.deployers.support.util.SomeUtil;
-import org.jboss.test.deployers.support.web.ServletWebBean;
-import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.weld.bootstrap.spi.Deployment;
-
-/**
- * JBossDeployment environment test case.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- */
-public class DeploymentEnvironmentTestCase extends AbstractSingleArchiveTest<BeanDeploymentArchive>
-{
- public DeploymentEnvironmentTestCase(String name)
- {
- super(name);
- }
-
- public static Test suite()
- {
- return suite(DeploymentEnvironmentTestCase.class);
- }
-
- public void setUp() throws Exception
- {
- super.setUp();
- JavaArchive mockJar = ShrinkWrap.create(JavaArchive.class, "mock.jar");
- mockJar.addClass(CheckableBootstrap.class);
- mockJar.addClass(MockEjbServices.class);
- mockJar.addClass(MockEmptyEjbServices.class);
- mockJar.addClass(MockTransactionServices.class);
- mockJar.addClass(MockWeldBootstrap.class);
- mockJar.addClass(WeldDEWrapper.class);
- assertDeploy(mockJar);
- }
-
- @Override
- protected void assertWarsInEar()
- {
- Deployment deployment = (Deployment) getBean(Deployment.class);
- Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
- assertEquals(2, bdas.size());
- Iterator<BeanDeploymentArchive> iterator = bdas.iterator();
- BeanDeploymentArchive bda = iterator.next();
- BeanDeploymentArchive bda1, bda2;
- if (bda.getId().contains("simple1.war"))
- {
- bda1 = bda;
- bda2 = iterator.next();
- }
- else
- {
- bda2 = bda;
- bda1 = iterator.next();
- }
- assertBDAId(bda1, "warinear.ear/simple1.war");
- assertExpectedClasses(bda1, ServletWebBean.class);
- assertExpectedWarResources(bda1, "simple1.war", true);
-
- assertBDAId(bda2, "warinear.ear/simple2.war");
- assertExpectedClasses(bda2, NotWBJsfBean.class);
- assertExpectedWarResources(bda2, "simple2.war", true);
-
- Collection<BeanDeploymentArchive> reachableBDAs = getReachableBDAs(bda1);
- assertTrue(reachableBDAs.isEmpty());
- reachableBDAs = getReachableBDAs(bda2);
- assertTrue(reachableBDAs.isEmpty());
- }
-
- @Override
- protected void assertBasicEar()
- {
- Deployment deployment = (Deployment) getBean(Deployment.class);
- Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
- assertEquals(3, bdas.size());
- BeanDeploymentArchive earBDA = null, simpleWarBDA = null, crmWarBDA = null;
- for (BeanDeploymentArchive bda: bdas)
- {
- if (bda.getId().contains("simple.war"))
- {
- simpleWarBDA = bda;
- assertBDAId(simpleWarBDA, "top-level.ear/simple.war");
- assertExpectedClasses(simpleWarBDA, UIWebBean.class, ServletWebBean.class);
- assertExpectedWarResources(simpleWarBDA, "top-level.ear/simple.war", true, "ui.jar");
- }
- else if (bda.getId().contains("crm.war"))
- {
- crmWarBDA = bda;
- assertBDAId(crmWarBDA, "top-level.ear/crm.war");
- assertExpectedClasses(crmWarBDA, CrmWebBean.class);
- assertExpectedResources(crmWarBDA, "crm.jar");
- }
- else
- {
- earBDA = bda;
- assertBDAId(earBDA, "top-level.ear");
- assertExpectedClasses(earBDA, BusinessInterface.class, MySLSBean.class,
- ExternalWebBean.class, PlainJavaBean.class);
- assertExpectedResources(earBDA, "top-level.ear/ejbs.jar",
- "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar");
- }
- }
- Collection<BeanDeploymentArchive> reachableBDAs = getReachableBDAs(earBDA);
- assertTrue(reachableBDAs.isEmpty());
- reachableBDAs = getReachableBDAs(simpleWarBDA);
- assertEquals(1, reachableBDAs.size());
- assertSame(earBDA, reachableBDAs.iterator().next());
- }
-
- @Override
- protected void assertBasicEarFullCDI()
- {
- Deployment deployment = (Deployment) getBean(Deployment.class);
- Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
- assertEquals(3, bdas.size());
- BeanDeploymentArchive earBDA = null, simpleWarBDA = null, crmWarBDA = null;
- for (BeanDeploymentArchive bda: bdas)
- {
- if (bda.getId().contains("simple.war"))
- {
- simpleWarBDA = bda;
- assertBDAId(simpleWarBDA, "top-level.ear/simple.war");
- assertExpectedClasses(simpleWarBDA, UIWebBean.class, ServletWebBean.class);
- assertExpectedWarResources(simpleWarBDA, "top-level.ear/simple.war", true, "ui.jar");
- }
- else if (bda.getId().contains("crm.war"))
- {
- crmWarBDA = bda;
- assertBDAId(crmWarBDA, "top-level.ear/crm.war");
- assertExpectedClasses(crmWarBDA, CrmWebBean.class, NotWBJsfBean.class);
- assertExpectedWarResources(crmWarBDA, "top-level.ear/crm.war", true, "crm.jar");
- }
- else
- {
- earBDA = bda;
- assertBDAId(earBDA, "top-level.ear");
- assertExpectedClasses(earBDA, BusinessInterface.class, MySLSBean.class,
- ExternalWebBean.class, PlainJavaBean.class, SomeUtil.class);
- assertExpectedResources(earBDA, "top-level.ear/lib/util.jar",
- "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar",
- "top-level.ear/ejbs.jar");
- }
- }
-
- Collection<BeanDeploymentArchive> reachableBDAs = getReachableBDAs(earBDA);
- assertTrue(reachableBDAs.isEmpty());
- reachableBDAs = getReachableBDAs(simpleWarBDA);
- assertEquals(1, reachableBDAs.size());
- assertSame(earBDA, reachableBDAs.iterator().next());
- }
-
- @Override
- protected void assertBasicEarWithoutXml()
- {
- assertEmptyEnvironment();
- }
-
- @Override
- protected void assertEmptyEnvironment()
- {
- assertNoBean(Deployment.class);
- }
-
- @Override
- protected BeanDeploymentArchive assertSingleEnvironment(String name)
- {
- Deployment deployment = (Deployment) getBean(Deployment.class);
- return assertOneBDA(deployment, name);
- }
-
- @Override
- protected Collection<Class<?>> getClasses(BeanDeploymentArchive bda)
- {
- return bda.getBeanClasses();
- }
-
- @Override
- protected Collection<URL> getResources(BeanDeploymentArchive bda)
- {
- return bda.getBeansXml();
- }
-
- private BeanDeploymentArchive assertOneBDA(Deployment deployment, String name)
- {
- Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
- assertEquals(1, bdas.size());
- BeanDeploymentArchive bda = bdas.iterator().next();
- assertBDAId(bda, name);
- assertTrue(getReachableBDAs(bda).isEmpty());
- return bda;
- }
-
- private Collection<BeanDeploymentArchive> getBDAs(Deployment deployment)
- {
- assertNotNull(deployment);
- Collection<BeanDeploymentArchive> bdas = deployment.getBeanDeploymentArchives();
- assertNotNull(bdas);
- return bdas;
- }
-
- private void assertBDAId(BeanDeploymentArchive bda, String name)
- {
- assertTrue("BDA id \"" + bda.getId() + "\" expected to end with suffix \"" + name + "/}\"",
- bda.getId().endsWith(name + "/}"));
- }
-
- private Collection<BeanDeploymentArchive> getReachableBDAs(BeanDeploymentArchive bda)
- {
- Collection<BeanDeploymentArchive> result = new HashSet<BeanDeploymentArchive>();
- getReachableBDAs(bda, result);
- result.remove(bda);
- return result;
- }
-
- private void getReachableBDAs(BeanDeploymentArchive bda, Collection<BeanDeploymentArchive> result)
- {
- if (result.contains(bda))
- {
- return;
- }
- result.add(bda);
- for (BeanDeploymentArchive reachableBDA: bda.getBeanDeploymentArchives())
- {
- getReachableBDAs(reachableBDA, result);
- }
- }
-}
+///*
+// * JBoss, Home of Professional Open Source.
+// * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+// * as indicated by the @author tags. See the copyright.txt file in the
+// * distribution for a full listing of individual contributors.
+// *
+// * This is free software; you can redistribute it and/or modify it
+// * under the terms of the GNU Lesser General Public License as
+// * published by the Free Software Foundation; either version 2.1 of
+// * the License, or (at your option) any later version.
+// *
+// * This software is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// * Lesser General Public License for more details.
+// *
+// * You should have received a copy of the GNU Lesser General Public
+// * License along with this software; if not, write to the Free
+// * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+// * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+// */
+//package org.jboss.test.deployers.test;
+//
+//import java.net.URL;
+//import java.util.Collection;
+//import java.util.HashSet;
+//import java.util.Iterator;
+//
+//import org.jboss.shrinkwrap.api.ShrinkWrap;
+//import org.jboss.shrinkwrap.api.spec.JavaArchive;
+//import org.jboss.test.deployers.support.CheckableBootstrap;
+//import org.jboss.test.deployers.support.MockEjbServices;
+//import org.jboss.test.deployers.support.MockEmptyEjbServices;
+//import org.jboss.test.deployers.support.MockTransactionServices;
+//import org.jboss.test.deployers.support.MockWeldBootstrap;
+//import org.jboss.test.deployers.support.WeldDEWrapper;
+//import org.jboss.test.deployers.support.crm.CrmWebBean;
+//import org.jboss.test.deployers.support.ejb.BusinessInterface;
+//import org.jboss.test.deployers.support.ejb.MySLSBean;
+//import org.jboss.test.deployers.support.ext.ExternalWebBean;
+//import org.jboss.test.deployers.support.jar.PlainJavaBean;
+//import org.jboss.test.deployers.support.jsf.NotWBJsfBean;
+//import org.jboss.test.deployers.support.ui.UIWebBean;
+//import org.jboss.test.deployers.support.util.SomeUtil;
+//import org.jboss.test.deployers.support.web.ServletWebBean;
+//import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+//import org.jboss.weld.bootstrap.spi.Deployment;
+//
+///**
+// * JBossDeployment environment test case.
+// *
+// * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+// * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+// */
+//public class DeploymentEnvironmentTestCase extends AbstractSingleArchiveTest<BeanDeploymentArchive>
+//{
+// public DeploymentEnvironmentTestCase(String name)
+// {
+// super(name);
+// }
+//
+// public static Test suite()
+// {
+// return suite(DeploymentEnvironmentTestCase.class);
+// }
+//
+// @Override
+// public void setUp() throws Exception
+// {
+// super.setUp();
+// JavaArchive mockJar = ShrinkWrap.create(JavaArchive.class, "mock.jar");
+// mockJar.addClass(CheckableBootstrap.class);
+// mockJar.addClass(MockEjbServices.class);
+// mockJar.addClass(MockEmptyEjbServices.class);
+// mockJar.addClass(MockTransactionServices.class);
+// mockJar.addClass(MockWeldBootstrap.class);
+// mockJar.addClass(WeldDEWrapper.class);
+// assertDeploy(mockJar);
+// }
+//
+// @Override
+// protected void assertWarsInEar()
+// {
+// Deployment deployment = (Deployment) getBean(Deployment.class);
+// Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
+// assertEquals(2, bdas.size());
+// Iterator<BeanDeploymentArchive> iterator = bdas.iterator();
+// BeanDeploymentArchive bda = iterator.next();
+// BeanDeploymentArchive bda1, bda2;
+// if (bda.getId().contains("simple1.war"))
+// {
+// bda1 = bda;
+// bda2 = iterator.next();
+// }
+// else
+// {
+// bda2 = bda;
+// bda1 = iterator.next();
+// }
+// assertBDAId(bda1, "warinear.ear/simple1.war");
+// assertExpectedClasses(bda1, ServletWebBean.class);
+// assertExpectedWarResources(bda1, "simple1.war", true);
+//
+// assertBDAId(bda2, "warinear.ear/simple2.war");
+// assertExpectedClasses(bda2, NotWBJsfBean.class);
+// assertExpectedWarResources(bda2, "simple2.war", true);
+//
+// Collection<BeanDeploymentArchive> reachableBDAs = getReachableBDAs(bda1);
+// assertTrue(reachableBDAs.isEmpty());
+// reachableBDAs = getReachableBDAs(bda2);
+// assertTrue(reachableBDAs.isEmpty());
+// }
+//
+// @Override
+// protected void assertBasicEar()
+// {
+// Deployment deployment = (Deployment) getBean(Deployment.class);
+// Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
+// assertEquals(3, bdas.size());
+// BeanDeploymentArchive earBDA = null, simpleWarBDA = null, crmWarBDA = null;
+// for (BeanDeploymentArchive bda: bdas)
+// {
+// if (bda.getId().contains("simple.war"))
+// {
+// simpleWarBDA = bda;
+// assertBDAId(simpleWarBDA, "top-level.ear/simple.war");
+// assertExpectedClasses(simpleWarBDA, UIWebBean.class, ServletWebBean.class);
+// assertExpectedWarResources(simpleWarBDA, "top-level.ear/simple.war", true, "ui.jar");
+// }
+// else if (bda.getId().contains("crm.war"))
+// {
+// crmWarBDA = bda;
+// assertBDAId(crmWarBDA, "top-level.ear/crm.war");
+// assertExpectedClasses(crmWarBDA, CrmWebBean.class);
+// assertExpectedResources(crmWarBDA, "crm.jar");
+// }
+// else
+// {
+// earBDA = bda;
+// assertBDAId(earBDA, "top-level.ear");
+// assertExpectedClasses(earBDA, BusinessInterface.class, MySLSBean.class,
+// ExternalWebBean.class, PlainJavaBean.class);
+// assertExpectedResources(earBDA, "top-level.ear/ejbs.jar",
+// "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar");
+// }
+// }
+// Collection<BeanDeploymentArchive> reachableBDAs = getReachableBDAs(earBDA);
+// assertTrue(reachableBDAs.isEmpty());
+// reachableBDAs = getReachableBDAs(simpleWarBDA);
+// assertEquals(1, reachableBDAs.size());
+// assertSame(earBDA, reachableBDAs.iterator().next());
+// }
+//
+// @Override
+// protected void assertBasicEarFullCDI()
+// {
+// Deployment deployment = (Deployment) getBean(Deployment.class);
+// Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
+// assertEquals(3, bdas.size());
+// BeanDeploymentArchive earBDA = null, simpleWarBDA = null, crmWarBDA = null;
+// for (BeanDeploymentArchive bda: bdas)
+// {
+// if (bda.getId().contains("simple.war"))
+// {
+// simpleWarBDA = bda;
+// assertBDAId(simpleWarBDA, "top-level.ear/simple.war");
+// assertExpectedClasses(simpleWarBDA, UIWebBean.class, ServletWebBean.class);
+// assertExpectedWarResources(simpleWarBDA, "top-level.ear/simple.war", true, "ui.jar");
+// }
+// else if (bda.getId().contains("crm.war"))
+// {
+// crmWarBDA = bda;
+// assertBDAId(crmWarBDA, "top-level.ear/crm.war");
+// assertExpectedClasses(crmWarBDA, CrmWebBean.class, NotWBJsfBean.class);
+// assertExpectedWarResources(crmWarBDA, "top-level.ear/crm.war", true, "crm.jar");
+// }
+// else
+// {
+// earBDA = bda;
+// assertBDAId(earBDA, "top-level.ear");
+// assertExpectedClasses(earBDA, BusinessInterface.class, MySLSBean.class,
+// ExternalWebBean.class, PlainJavaBean.class, SomeUtil.class);
+// assertExpectedResources(earBDA, "top-level.ear/lib/util.jar",
+// "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar",
+// "top-level.ear/ejbs.jar");
+// }
+// }
+//
+// Collection<BeanDeploymentArchive> reachableBDAs = getReachableBDAs(earBDA);
+// assertTrue(reachableBDAs.isEmpty());
+// reachableBDAs = getReachableBDAs(simpleWarBDA);
+// assertEquals(1, reachableBDAs.size());
+// assertSame(earBDA, reachableBDAs.iterator().next());
+// }
+//
+// @Override
+// protected void assertBasicEarWithoutXml()
+// {
+// assertEmptyEnvironment();
+// }
+//
+// @Override
+// protected void assertEmptyEnvironment()
+// {
+// assertNoBean(Deployment.class);
+// }
+//
+// @Override
+// protected BeanDeploymentArchive assertSingleEnvironment(String name)
+// {
+// Deployment deployment = (Deployment) getBean(Deployment.class);
+// return assertOneBDA(deployment, name);
+// }
+//
+// @Override
+// protected Collection<Class<?>> getClasses(BeanDeploymentArchive bda)
+// {
+// return bda.getBeanClasses();
+// }
+//
+// @Override
+// protected Collection<URL> getResources(BeanDeploymentArchive bda)
+// {
+// //return bda.getBeansXml();
+// // TODO Fix this
+// return null;
+// }
+//
+// private BeanDeploymentArchive assertOneBDA(Deployment deployment, String name)
+// {
+// Collection<BeanDeploymentArchive> bdas = getBDAs(deployment);
+// assertEquals(1, bdas.size());
+// BeanDeploymentArchive bda = bdas.iterator().next();
+// assertBDAId(bda, name);
+// assertTrue(getReachableBDAs(bda).isEmpty());
+// return bda;
+// }
+//
+// private Collection<BeanDeploymentArchive> getBDAs(Deployment deployment)
+// {
+// assertNotNull(deployment);
+// Collection<BeanDeploymentArchive> bdas = deployment.getBeanDeploymentArchives();
+// assertNotNull(bdas);
+// return bdas;
+// }
+//
+// private void assertBDAId(BeanDeploymentArchive bda, String name)
+// {
+// assertTrue("BDA id \"" + bda.getId() + "\" expected to end with suffix \"" + name + "/}\"",
+// bda.getId().endsWith(name + "/}"));
+// }
+//
+// private Collection<BeanDeploymentArchive> getReachableBDAs(BeanDeploymentArchive bda)
+// {
+// Collection<BeanDeploymentArchive> result = new HashSet<BeanDeploymentArchive>();
+// getReachableBDAs(bda, result);
+// result.remove(bda);
+// return result;
+// }
+//
+// private void getReachableBDAs(BeanDeploymentArchive bda, Collection<BeanDeploymentArchive> result)
+// {
+// if (result.contains(bda))
+// {
+// return;
+// }
+// result.add(bda);
+// for (BeanDeploymentArchive reachableBDA: bda.getBeanDeploymentArchives())
+// {
+// getReachableBDAs(reachableBDA, result);
+// }
+// }
+//}
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentTestCase.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -24,7 +24,9 @@
import java.util.List;
import junit.framework.Test;
+
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
/**
* Flat Deployment test case.
@@ -44,11 +46,19 @@
}
+ @Override
protected int getExpectedArchives()
{
return 1; // flat only
}
+ @Override
+ protected void initializeDeployment(Deployment deployment)
+ {
+ // do nothing
+ }
+
+ @Override
protected void assertNewBeanDeploymentArchive(List<BeanDeploymentArchive> archives, BeanDeploymentArchive newBDA)
{
assertSame(newBDA, archives.iterator().next());
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -21,7 +21,6 @@
*/
package org.jboss.test.deployers.test;
-import java.net.URL;
import java.util.Collection;
import java.util.Iterator;
@@ -34,6 +33,7 @@
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.test.deployers.support.CheckableBootstrap;
import org.jboss.test.deployers.support.MockArchiveManifest;
+import org.jboss.test.deployers.support.MockEjbInjectionServices;
import org.jboss.test.deployers.support.MockEjbServices;
import org.jboss.test.deployers.support.MockEmptyEjbServices;
import org.jboss.test.deployers.support.MockTransactionServices;
@@ -50,9 +50,12 @@
import org.jboss.test.deployers.support.web.ServletWebBean;
import org.jboss.test.deployers.vfs.classloader.support.a.A;
import org.jboss.test.deployers.vfs.classloader.support.b.B;
+import org.jboss.weld.bootstrap.api.Bootstrap;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.BeansXml;
import org.jboss.weld.bootstrap.spi.Deployment;
import org.jboss.weld.integration.deployer.DeployersUtils;
+import org.jboss.weld.integration.deployer.env.bda.DeploymentImpl;
/**
* Deployment.loadBeanDeploymentArchive test case.
@@ -61,6 +64,8 @@
*/
public class LoadBeanDeploymentArchiveTestCase extends AbstractEnvironmentTest<BeanDeploymentArchive>
{
+ private Bootstrap bootstrap = new MockWeldBootstrap();
+
public LoadBeanDeploymentArchiveTestCase(String name)
{
super(name);
@@ -71,6 +76,7 @@
return suite(LoadBeanDeploymentArchiveTestCase.class);
}
+ @Override
public void setUp() throws Exception
{
super.setUp();
@@ -78,6 +84,7 @@
mockJar.addClass(CheckableBootstrap.class);
mockJar.addClass(MockEjbServices.class);
mockJar.addClass(MockEmptyEjbServices.class);
+ mockJar.addClass(MockEjbInjectionServices.class);
mockJar.addClass(MockTransactionServices.class);
mockJar.addClass(MockWeldBootstrap.class);
mockJar.addClass(WeldDEWrapper.class);
@@ -90,13 +97,14 @@
JavaArchive ejbJar1 = createEjbJar("ejb1.jar", true, PlainJavaBean.class);
DeploymentUnit unit = assertDeploy(ejbJar1);
Class<?> plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
+
// ejb2.jar
JavaArchive ejbJar2 = createEjbJar("ejb2.jar", true, MySLSBean.class, BusinessInterface.class);
unit = assertDeploy(ejbJar2);
Class<?> mySLSBeanClass = getClass(MySLSBean.class, unit);
Class<?> businessInterface = getClass(BusinessInterface.class, unit);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
assertNotSame(deployment1, deployment2);
@@ -125,7 +133,7 @@
JavaArchive ejbJar1 = createEjbJar("ejb1.jar", true, PlainJavaBean.class);
DeploymentUnit unit = assertDeploy(ejbJar1);
Class<?> plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
// ejb2.jar
JavaArchive ejbJar2 = createEjbJar("ejb2.jar", false, MySLSBean.class, BusinessInterface.class);
unit = assertDeploy(ejbJar2);
@@ -139,22 +147,22 @@
BeanDeploymentArchive bda2 = deployment1.loadBeanDeploymentArchive(mySLSBeanClass);
assertBDAId(bda2, "ejb2.jar");
assertExpectedClasses(bda2, MySLSBean.class);
- assertExpectedResources(bda2);
+ assertNoBeansXml(bda2);
// double invocation
assertSame(bda2, deployment1.loadBeanDeploymentArchive(mySLSBeanClass));
assertBDAId(bda2, "ejb2.jar");
assertExpectedClasses(bda2, MySLSBean.class);
- assertExpectedResources(bda2);
+ assertNoBeansXml(bda2);
// inclusion of BusinessInterface
assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
assertBDAId(bda2, "ejb2.jar");
assertExpectedClasses(bda2, MySLSBean.class, BusinessInterface.class);
- assertExpectedResources(bda2);
+ assertNoBeansXml(bda2);
// double invocation
assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
assertBDAId(bda2, "ejb2.jar");
assertExpectedClasses(bda2, MySLSBean.class, BusinessInterface.class);
- assertExpectedResources(bda2);
+ assertNoBeansXml(bda2);
}
public void testEjbJarsInEar() throws Exception
@@ -170,7 +178,7 @@
Class<?> mySLSBeanClass = getClass(MySLSBean.class, unit);
Class<?> businessInterface = getClass(BusinessInterface.class, unit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
assertBDAId(bda, EAR_NAME);
assertExpectedClasses(bda, PlainJavaBean.class, MySLSBean.class, BusinessInterface.class);
@@ -192,7 +200,7 @@
Class<?> mySLSBeanClass = getClass(MySLSBean.class, unit);
Class<?> businessInterface = getClass(BusinessInterface.class, unit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
assertBDAId(bda, EAR_NAME);
assertExpectedClasses(bda, PlainJavaBean.class);
@@ -218,7 +226,7 @@
MockArchiveManifest.addManifest(ear1);
DeploymentUnit unit = assertDeploy(ear1);
Class<?> plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
// simple2.ear
EnterpriseArchive ear2 = ShrinkWrap.create(EnterpriseArchive.class, "simple2.ear");
JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", true, MySLSBean.class, BusinessInterface.class);
@@ -227,7 +235,7 @@
unit = assertDeploy(ear2);
Class<?> mySLSBeanClass = getClass(MySLSBean.class, unit);
Class<?> businessInterface = getClass(BusinessInterface.class, unit);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
BeanDeploymentArchive bda1 = deployment1.getBeanDeploymentArchives().iterator().next();
BeanDeploymentArchive bda2 = deployment2.getBeanDeploymentArchives().iterator().next();
@@ -267,7 +275,7 @@
unit = assertDeploy(ear2);
Class<?> mySLSBeanClass = getClass(MySLSBean.class, unit);
Class<?> businessInterface = getClass(BusinessInterface.class, unit);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
BeanDeploymentArchive bda2 = deployment2.getBeanDeploymentArchives().iterator().next();
// contents of BDA2
@@ -284,12 +292,12 @@
BeanDeploymentArchive bda1 = deployment2.loadBeanDeploymentArchive(plainJavaBeanClass);
assertBDAId(bda1, "simple1.ear");
assertExpectedClasses(bda1, PlainJavaBean.class);
- assertExpectedResources(bda1);
+ assertNoBeansXml(bda1);
// double invocation
assertSame(bda1, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
assertBDAId(bda1, "simple1.ear");
assertExpectedClasses(bda1, PlainJavaBean.class);
- assertExpectedResources(bda1);
+ assertNoBeansXml(bda1);
}
public void testWars() throws Exception
@@ -297,12 +305,12 @@
WebArchive war1 = createWar("simple1.war", true, ServletWebBean.class);
DeploymentUnit unit = assertDeploy(war1);
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
WebArchive war2 = createWar("simple2.war", true, NotWBJsfBean.class);
unit = assertDeploy(war2);
Class<?> notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
// assertion deleted as loadBDA implementation does not check for unreachable classes anymore
//assertCannotLoadBDA(deployment1, notWBJsfBeanClass);
@@ -329,7 +337,7 @@
{
WebArchive war1 = createWar("simple1.war", true, ServletWebBean.class);
/*DeploymentUnit unit = */assertDeploy(war1);
- //Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ //Deployment deployment1 = initializeDeploymentBean(unit));
WebArchive war2 = createWar("simple2.war", false, NotWBJsfBean.class);
/*unit = */assertDeploy(war2);
@@ -345,7 +353,7 @@
DeploymentUnit unit = assertDeploy(war);
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
Class<?> uiWebBeanClass = getClass(UIWebBean.class, unit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(bda, WAR_NAME);
@@ -363,7 +371,7 @@
DeploymentUnit unit = assertDeploy(war);
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
Class<?> uiWebBeanClass = getClass(UIWebBean.class, unit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(bda, WAR_NAME);
@@ -386,7 +394,7 @@
DeploymentUnit unit = assertDeploy(war);
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
Class<?> uiWebBeanClass = getClass(UIWebBean.class, unit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(bda, WAR_NAME);
@@ -410,7 +418,7 @@
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
Class<?> uiWebBeanClass = getClass(UIWebBean.class, unit);
Class<?> crmWebBeanClass = getClass(CrmWebBean.class, unit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(bda, WAR_NAME);
@@ -439,7 +447,7 @@
MockArchiveManifest.addManifest(ear1);
/*DeploymentUnit unit = */assertDeploy(ear1);
//Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit.getChildren().iterator().next());
- //Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ //Deployment deployment1 = initializeDeploymentBean(unit));
EnterpriseArchive ear2 = ShrinkWrap.create(EnterpriseArchive.class, "warinear2.ear");
WebArchive war2 = createWar(WAR_NAME, true, NotWBJsfBean.class);
@@ -449,7 +457,7 @@
// assertion deleted as loadBDA implementation does not check for unreachable classes anymore
// Class<?> notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit.getChildren().iterator().next());
- // Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ // Deployment deployment2 = initializeDeploymentBean(unit));
//assertCannotLoadBDA(deployment1, notWBJsfBeanClass);
//assertCannotLoadBDA(deployment2, servletWebBeanClass);
}
@@ -474,7 +482,7 @@
}
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit1);
Class<?> notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit2);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda1 = deployment.loadBeanDeploymentArchive(servletWebBeanClass);
assertBDAId(bda1, "warinear.ear/simple1.war");
@@ -491,12 +499,12 @@
JavaArchive ejbJar = createEjbJar(true);
DeploymentUnit unit = assertDeploy(ejbJar);
Class<?> plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
// simple.war
WebArchive war = createWar(true);
unit = assertDeploy(war);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
// assertion deleted as loadBDA implementation does not check for unreachable classes anymore
//Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
@@ -531,7 +539,7 @@
} while (!warUnit.getName().contains(WAR_NAME));
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, warUnit);
- Deployment deployment = (Deployment) getBean(Deployment.class);
+ Deployment deployment = initializeDeploymentBean();
BeanDeploymentArchive bda = deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
@@ -552,12 +560,12 @@
MockArchiveManifest.addManifest(ear);
DeploymentUnit unit = assertDeploy(ear);
Class<?> plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
// simple.war
WebArchive war = createWar(true);
unit = assertDeploy(war);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
// assertion deleted as loadBDA implementation does not check for unreachable classes anymore
// Class<?> servletWebBeanClass = getClass(ServletWebBean.class, unit);
@@ -582,7 +590,7 @@
MockArchiveManifest.addManifest(ejbEar);
DeploymentUnit unit = assertDeploy(ejbEar);
Class<?> plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
- Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment1 = initializeDeploymentBean(unit);
// war.ear
EnterpriseArchive warEar = ShrinkWrap.create(EnterpriseArchive.class, "war.ear");
WebArchive war = createWarWithLib(true, false);
@@ -592,7 +600,7 @@
DeploymentUnit warUnit = unit.getChildren().iterator().next();
Class<?> servletWebBeanClass = getClass(ServletWebBean.class, warUnit);
Class<?> uiWebBeanClass = getClass(UIWebBean.class, warUnit);
- Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ Deployment deployment2 = initializeDeploymentBean(unit);
// assertion deleted as loadBDA implementation does not check for unreachable classes anymore
//assertCannotLoadBDA(deployment1, servletWebBeanClass);
@@ -620,7 +628,7 @@
{
WebArchive war1 = createWar("web1.war", true, ServletWebBean.class);
DeploymentUnit war1Unit = assertDeploy(war1);
- Deployment war1Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(war1Unit));
+ Deployment war1Deployment = initializeDeploymentBean(war1Unit);
BeanDeploymentArchive war1BDA = war1Deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(war1BDA, "web1.war");
assertExpectedClasses(war1BDA, ServletWebBean.class);
@@ -629,7 +637,7 @@
WebArchive war2 = createWar("web2.war", true, NotWBJsfBean.class);
createLib(war2, "crm.jar", false, CrmWebBean.class);
DeploymentUnit war2Unit = assertDeploy(war2);
- Deployment war2Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(war2Unit));
+ Deployment war2Deployment = initializeDeploymentBean(war2Unit);
BeanDeploymentArchive war2BDA = war2Deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(war2BDA, "web2.war");
assertExpectedClasses(war2BDA, NotWBJsfBean.class);
@@ -638,7 +646,7 @@
JavaArchive ejbJar = createEjbJar("ejb.jar", true, BusinessInterface.class);
DeploymentUnit ejbJarUnit = assertDeploy(ejbJar);
- Deployment ejbJarDeployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(ejbJarUnit));
+ Deployment ejbJarDeployment = initializeDeploymentBean(ejbJarUnit);
BeanDeploymentArchive ejbJarBDA = ejbJarDeployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(ejbJarBDA, "ejb.jar");
assertExpectedClasses(ejbJarBDA, BusinessInterface.class);
@@ -655,7 +663,7 @@
createLib(ear1, "lib3.jar", false, B.class);
MockArchiveManifest.addManifest(ear1);
DeploymentUnit ear1Unit = assertDeploy(ear1);
- Deployment ear1Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(ear1Unit));
+ Deployment ear1Deployment = initializeDeploymentBean(ear1Unit);
BeanDeploymentArchive ear1BDA = null, ear1War1BDA = null, ear1War2BDA = null;
for (BeanDeploymentArchive bda: ear1Deployment.getBeanDeploymentArchives())
{
@@ -706,7 +714,7 @@
createLib(ear2, "lib2.jar", true, CrmWebBean.class);
MockArchiveManifest.addManifest(ear2);
DeploymentUnit ear2Unit = assertDeploy(ear2);
- Deployment ear2Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(ear2Unit));
+ Deployment ear2Deployment = initializeDeploymentBean(ear2Unit);
BeanDeploymentArchive ear2BDA = ear2Deployment.getBeanDeploymentArchives().iterator().next();
assertBDAId(ear2BDA, "ejbWLibs.ear");
assertExpectedClasses(ear2BDA, PlainJavaBean.class, CrmWebBean.class);
@@ -880,17 +888,30 @@
}
@Override
- protected Collection<Class<?>> getClasses(BeanDeploymentArchive bda)
+ protected Collection<String> getClasses(BeanDeploymentArchive bda)
{
return bda.getBeanClasses();
}
- @Override
- protected Collection<URL> getResources(BeanDeploymentArchive bda)
+ private Deployment initializeDeploymentBean(DeploymentUnit unit)
{
- return bda.getBeansXml();
+ DeploymentImpl deployment = (DeploymentImpl) getBean(DeployersUtils.getDeploymentBeanName(unit));
+ deployment.initialize(bootstrap);
+ return deployment;
}
+ private Deployment initializeDeploymentBean()
+ {
+ DeploymentImpl deployment = (DeploymentImpl) getBean(Deployment.class);
+ deployment.initialize(bootstrap);
+ return deployment;
+ }
+
+ private void assertNoBeansXml (BeanDeploymentArchive bda)
+ {
+ assertSame(BeansXml.EMPTY_BEANS_XML, bda.getBeansXml());
+ }
+
private void assertBDAId(BeanDeploymentArchive bda, String name)
{
assertTrue("BDA id \"" + bda.getId() + "\" expected to end with suffix \"" + name + "/}\"",
Modified: branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/WeldDiscoveryEnvTestCase.java
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/WeldDiscoveryEnvTestCase.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/WeldDiscoveryEnvTestCase.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -27,6 +27,7 @@
import java.util.Set;
import junit.framework.Test;
+
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.test.deployers.support.crm.CrmWebBean;
import org.jboss.test.deployers.support.ejb.BusinessInterface;
@@ -101,8 +102,8 @@
addExpectedClass(expected, ServletWebBean.class);
addExpectedClass(expected, CrmWebBean.class);
- for (Class<?> clazz : wbDiscovery.getWeldClasses())
- assertTrue(expected.remove(clazz.getName()));
+ for (String className : wbDiscovery.getWeldClasses())
+ assertTrue(expected.remove(className));
assertEmpty("Should be emtpy, missing " + expected, expected);
}
Modified: branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -10,9 +10,11 @@
<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
+ <beanfactory name="JBossEjbInjectionServices" class="org.jboss.test.deployers.support.MockEjbInjectionServices"/>
<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
+ <property name="ejbInjectionServicesClassName">org.jboss.test.deployers.support.MockEjbInjectionServices</property>
</bean>
<!-- Target of the Test -->
Modified: branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BootDeployerTestCase.xml
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BootDeployerTestCase.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BootDeployerTestCase.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -19,6 +19,7 @@
<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEjbServices</property>
+ <property name="ejbInjectionServicesClassName">org.jboss.test.deployers.support.MockEjbInjectionServices</property>
</bean>
<bean name="DeploymentDeployer" class="org.jboss.weld.integration.deployer.env.FlatDeploymentDeployer"/>
Modified: branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -10,9 +10,11 @@
<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
+ <beanfactory name="JBossEjbInjectionServices" class="org.jboss.test.deployers.support.MockEjbInjectionServices"/>
<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
+ <property name="ejbInjectionServicesClassName">org.jboss.test.deployers.support.MockEjbInjectionServices</property>
</bean>
<!-- Target of the Test -->
Modified: branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/FlatDeploymentTestCase.xml
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/FlatDeploymentTestCase.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/FlatDeploymentTestCase.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -8,9 +8,11 @@
<bean name="WeldDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.WeldDiscoveryDeployer"/>
<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
+ <beanfactory name="JBossEjbInjectionServices" class="org.jboss.test.deployers.support.MockEjbInjectionServices"/>
<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
+ <property name="ejbInjectionServicesClassName">org.jboss.test.deployers.support.MockEjbInjectionServices</property>
</bean>
<bean name="DeploymentDeployer" class="org.jboss.weld.integration.deployer.env.FlatDeploymentDeployer"/>
Modified: branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml
===================================================================
--- branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml 2010-08-31 20:35:44 UTC (rev 107931)
@@ -10,9 +10,11 @@
<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
+ <beanfactory name="JBossEjbInjectionServices" class="org.jboss.test.deployers.support.MockEjbInjectionServices"/>
<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
+ <property name="ejbInjectionServicesClassName">org.jboss.test.deployers.support.MockEjbInjectionServices</property>
</bean>
<!-- Target of the Test -->
Modified: branches/infinispan-int/weld-int/deployer-mc-int/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java
===================================================================
--- branches/infinispan-int/weld-int/deployer-mc-int/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/deployer-mc-int/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -90,17 +90,17 @@
.addPath(metaInfParent);
}
- protected Class<?> findClass(DeploymentUnit unit, String name, boolean mustFind)
+ protected Class<?> findClass(DeploymentUnit unit, String name, boolean mustFind) throws ClassNotFoundException
{
//The class is loaded by a different classloader, so search for the correct class
FlatDeployment flatDeployment = (FlatDeployment)getBean(DeployersUtils.getDeploymentBeanName(unit));
assertNotNull(flatDeployment);
Class<?> found = null;
- for (Class<?> current : flatDeployment.getFlatBeanDeploymentArchive().getBeanClasses())
+ for (String current : flatDeployment.getFlatBeanDeploymentArchive().getBeanClasses())
{
- if (name.equals(current.getName()))
+ if (name.equals(current))
{
- found = current;
+ found = unit.getClassLoader().loadClass(current);
break;
}
}
Copied: branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbInjectionServices.java (from rev 107921, trunk/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbInjectionServices.java)
===================================================================
--- branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbInjectionServices.java (rev 0)
+++ branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbInjectionServices.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -0,0 +1,88 @@
+package org.jboss.weld.integration.ejb;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import javax.ejb.EJB;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.naming.NamingException;
+
+import org.jboss.ejb3.common.resolvers.spi.EjbReference;
+import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
+import org.jboss.weld.injection.spi.EjbInjectionServices;
+import org.jboss.weld.integration.util.AbstractJBossServices;
+import org.jboss.weld.integration.vdf.DeploymentUnitAware;
+
+/**
+ * An implementation of EjbInjectionServices for JBoss EJB3
+ *
+ * @author Pete Muir
+ * @author ales.justin at jboss.org
+ * @author Marius Bogoevici
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone </a>
+ */
+public class JBossEjbInjectionServices extends AbstractJBossServices implements EjbInjectionServices, DeploymentUnitAware
+{
+
+ protected EjbReferenceResolver resolver;
+
+ public JBossEjbInjectionServices() throws NamingException
+ {
+ super();
+ }
+
+ public void setResolver(EjbReferenceResolver resolver)
+ {
+ this.resolver = resolver;
+ }
+
+ public Object resolveEjb(InjectionPoint injectionPoint)
+ {
+ if (!injectionPoint.getAnnotated().isAnnotationPresent(EJB.class))
+ {
+ throw new IllegalArgumentException("No @EJB annotation found on injection point " + injectionPoint);
+ }
+ if (injectionPoint.getMember() instanceof Method && ((Method) injectionPoint.getMember()).getParameterTypes().length != 1)
+ {
+ throw new IllegalArgumentException("Injection point represents a method which doesn't follow JavaBean conventions (must have exactly one parameter) " + injectionPoint);
+ }
+ EJB annotation = injectionPoint.getAnnotated().getAnnotation(EJB.class);
+ // Get properties from the annotation
+ String beanName = annotation.beanName();
+ String beanInterface = annotation.beanInterface().getName();
+
+ // Supply beanInterface from reflection if not explicitly-defined
+ if (beanInterface == null || beanInterface.equals(Object.class.getName()))
+ {
+ if (injectionPoint.getMember() instanceof Field && injectionPoint.getType() instanceof Class<?>)
+ {
+ beanInterface = ((Class<?>) injectionPoint.getType()).getName();
+ }
+ else if (injectionPoint.getMember() instanceof Method)
+ {
+ Method method = (Method) injectionPoint.getMember();
+ beanInterface = method.getParameterTypes()[0].getName();
+ }
+ }
+
+ String jndiName = resolver.resolveEjb(topLevelDeploymentUnit, new EjbReference(beanName, beanInterface, null));
+ if (jndiName == null)
+ {
+ throw new IllegalStateException("No EJBs available which can be injected into " + injectionPoint);
+ }
+ try
+ {
+ return context.lookup(jndiName);
+ }
+ catch (NamingException e)
+ {
+ throw new RuntimeException("Error retreiving EJB from JNDI for injection point " + injectionPoint, e);
+ }
+ }
+
+ @Override
+ public void cleanup()
+ {
+ resolver = null;
+ }
+}
\ No newline at end of file
Modified: branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java
===================================================================
--- branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossEjbServices.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -25,7 +25,6 @@
import org.jboss.weld.ejb.spi.EjbDescriptor;
import org.jboss.weld.ejb.spi.EjbServices;
import org.jboss.weld.ejb.spi.InterceptorBindings;
-import org.jboss.weld.injection.spi.EjbInjectionServices;
import org.jboss.weld.integration.util.AbstractJBossServices;
import org.jboss.weld.integration.vdf.DeploymentUnitAware;
@@ -35,14 +34,15 @@
* @author Pete Muir
* @author ales.justin at jboss.org
* @author Marius Bogoevici
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
*/
-public class JBossEjbServices extends AbstractJBossServices implements EjbServices, EjbInjectionServices, DeploymentUnitAware
+public class JBossEjbServices extends AbstractJBossServices implements EjbServices, DeploymentUnitAware
{
protected EjbReferenceResolver resolver;
private final List<EjbDescriptor<?>> ejbs = new ArrayList<EjbDescriptor<?>>();
private final List<String> ejbContainerNames = new ArrayList<String>();
- private Map<EjbDescriptor, InterceptorBindings> interceptorBindings = new ConcurrentHashMap<EjbDescriptor, InterceptorBindings>();
+ private Map<EjbDescriptor<?>, InterceptorBindings> interceptorBindings = new ConcurrentHashMap<EjbDescriptor<?>, InterceptorBindings>();
public JBossEjbServices() throws NamingException
{
@@ -61,50 +61,6 @@
discoverEjbs(du.getTopLevel());
}
- public Object resolveEjb(InjectionPoint injectionPoint)
- {
- if (!injectionPoint.getAnnotated().isAnnotationPresent(EJB.class))
- {
- throw new IllegalArgumentException("No @EJB annotation found on injection point " + injectionPoint);
- }
- if (injectionPoint.getMember() instanceof Method && ((Method) injectionPoint.getMember()).getParameterTypes().length != 1)
- {
- throw new IllegalArgumentException("Injection point represents a method which doesn't follow JavaBean conventions (must have exactly one parameter) " + injectionPoint);
- }
- EJB annotation = injectionPoint.getAnnotated().getAnnotation(EJB.class);
- // Get properties from the annotation
- String beanName = annotation.beanName();
- String beanInterface = annotation.beanInterface().getName();
-
- // Supply beanInterface from reflection if not explicitly-defined
- if (beanInterface == null || beanInterface.equals(Object.class.getName()))
- {
- if (injectionPoint.getMember() instanceof Field && injectionPoint.getType() instanceof Class)
- {
- beanInterface = ((Class<?>) injectionPoint.getType()).getName();
- }
- else if (injectionPoint.getMember() instanceof Method)
- {
- Method method = (Method) injectionPoint.getMember();
- beanInterface = method.getParameterTypes()[0].getName();
- }
- }
-
- String jndiName = resolver.resolveEjb(topLevelDeploymentUnit, new EjbReference(beanName, beanInterface, null));
- if (jndiName == null)
- {
- throw new IllegalStateException("No EJBs available which can be injected into " + injectionPoint);
- }
- try
- {
- return context.lookup(jndiName);
- }
- catch (NamingException e)
- {
- throw new RuntimeException("Error retreiving EJB from JNDI for injection point " + injectionPoint, e);
- }
- }
-
public SessionObjectReference resolveEjb(EjbDescriptor<?> ejbDescriptor)
{
try
@@ -216,7 +172,7 @@
*/
public Iterable<String> getEjbContainerNames()
{
- return Collections.unmodifiableCollection(ejbContainerNames);
+ return Collections.unmodifiableCollection(ejbContainerNames);
}
public InterceptorBindings getInterceptorBindings(EjbDescriptor<?> ejbDescriptor)
Modified: branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossMessageDrivenBeanDescriptorAdaptor.java
===================================================================
--- branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossMessageDrivenBeanDescriptorAdaptor.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossMessageDrivenBeanDescriptorAdaptor.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -20,7 +20,14 @@
// Not relevant for MDBs
return null;
}
+
+ public Collection<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces()
+ {
+ // Not relevant for MDBs
+ return null;
+ }
+
public Collection<Method> getRemoveMethods()
{
// Not relevant for MDBs
Modified: branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java
===================================================================
--- branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java 2010-08-31 20:22:33 UTC (rev 107930)
+++ branches/infinispan-int/weld-int/ejb/src/main/java/org/jboss/weld/integration/ejb/JBossSessionBeanDescriptorAdaptor.java 2010-08-31 20:35:44 UTC (rev 107931)
@@ -19,6 +19,8 @@
private static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];
private final List<BusinessInterfaceDescriptor<?>> localBusinessInterfaces;
+ private final List<BusinessInterfaceDescriptor<?>> remoteBusinessInterfaces;
+
private final List<Method> removeMethods;
private final boolean stateful;
private final boolean stateless;
@@ -42,6 +44,15 @@
this.localBusinessInterfaces.add(new JBossBussinessInterfaceDescriptorAdaptor<Object>(interfaceName, getEjbName(), deploymentUnit, resolver));
}
}
+
+ this.remoteBusinessInterfaces = new ArrayList<BusinessInterfaceDescriptor<?>>();
+ if (sessionBeanMetaData.getBusinessRemotes() != null)
+ {
+ for (String interfaceName : sessionBeanMetaData.getBusinessRemotes())
+ {
+ this.remoteBusinessInterfaces.add(new JBossBussinessInterfaceDescriptorAdaptor<Object>(interfaceName, getEjbName(), deploymentUnit, resolver));
+ }
+ }
this.removeMethods = new ArrayList<Method>();
@@ -91,7 +102,13 @@
{
return localBusinessInterfaces;
}
+
+ public Collection<BusinessInterfaceDescriptor<?>> getRemoteBusinessInterfaces()
+ {
+ return remoteBusinessInterfaces;
+ }
+
public Collection<Method> getRemoveMethods()
{
return removeMethods;
@@ -116,7 +133,7 @@
{
return false;
}
-
+
public String getLocalJndiName()
{
return localJndiName;
More information about the jboss-cvs-commits
mailing list