[jboss-cvs] JBossAS SVN: r76528 - in projects/ejb3/tags: jboss-ejb3-core-0.1.9 and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 31 09:58:02 EDT 2008
Author: wolfc
Date: 2008-07-31 09:58:01 -0400 (Thu, 31 Jul 2008)
New Revision: 76528
Added:
projects/ejb3/tags/jboss-ejb3-core-0.1.9/
projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath
projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project
projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java
Removed:
projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath
projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project
projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java
projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java
Log:
[maven-release-plugin] copy for tag jboss-ejb3-core-0.1.9
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9 (from rev 76502, projects/ejb3/trunk/core)
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath
===================================================================
--- projects/ejb3/trunk/core/.classpath 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
- <classpathentry kind="src" output="eclipse-target/tests-classes" path="src/test/java"/>
- <classpathentry excluding="**/*.java" kind="src" output="eclipse-target/tests-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
- <classpathentry kind="output" path="eclipse-target/classes"/>
-</classpath>
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath (from rev 76526, projects/ejb3/trunk/core/.classpath)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/.classpath 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,155 @@
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="eclipse-target/tests-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="eclipse-target/tests-classes" excluding="**/*.java"/>
+ <classpathentry kind="output" path="eclipse-target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.0.2/activation-1.0.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ant/ant/1.6.5/ant-1.6.5.jar" sourcepath="M2_REPO/ant/ant/1.6.5/ant-1.6.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant/1.7.0/ant-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ant/ant-junit/1.6.5/ant-junit-1.6.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-junit/1.7.0/ant-junit-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/authorization-spi/2.0.2.Beta4/authorization-spi-2.0.2.Beta4.jar" sourcepath="M2_REPO/org/jboss/security/authorization-spi/2.0.2.Beta4/authorization-spi-2.0.2.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/bcel/bcel/5.1/bcel-5.1.jar" sourcepath="M2_REPO/bcel/bcel/5.1/bcel-5.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/bsh/bsh/1.3.0/bsh-1.3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/2.1.1/commons-collections-2.1.1.jar" sourcepath="M2_REPO/commons-collections/commons-collections/2.1.1/commons-collections-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/oswego-concurrent/concurrent/1.3.4-jboss-update1/concurrent-1.3.4-jboss-update1.jar" sourcepath="M2_REPO/oswego-concurrent/concurrent/1.3.4-jboss-update1/concurrent-1.3.4-jboss-update1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/wutka-dtdparser/dtdparser121/1.2.1/dtdparser121-1.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar" sourcepath="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.0.0.ga/hibernate-commons-annotations-3.0.0.ga.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.3.2.GA/hibernate-entitymanager-3.3.2.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/identity-spi/2.0.2.Beta4/identity-spi-2.0.2.Beta4.jar" sourcepath="M2_REPO/org/jboss/security/identity-spi/2.0.2.Beta4/identity-spi-2.0.2.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/security/jaas/1.0.01/jaas-1.0.01.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/security/jacc/1.0/jacc-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/urbanophile/java-getopt/1.0.9/java-getopt-1.0.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.7.1.GA/javassist-3.7.1.GA.jar" sourcepath="M2_REPO/javassist/javassist/3.7.1.GA/javassist-3.7.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar" sourcepath="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aop/jboss-aop/2.0.0.CR11/jboss-aop-2.0.0.CR11.jar" sourcepath="M2_REPO/org/jboss/aop/jboss-aop/2.0.0.CR11/jboss-aop-2.0.0.CR11-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aop/jboss-aop-aspects/2.0.0.CR7/jboss-aop-aspects-2.0.0.CR7.jar" sourcepath="M2_REPO/org/jboss/aop/jboss-aop-aspects/2.0.0.CR7/jboss-aop-aspects-2.0.0.CR7-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aop/jboss-aop-deployer-jdk50/2.0.0.CR10/jboss-aop-deployer-jdk50-2.0.0.CR10.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-bootstrap/5.0.0.Beta4/jboss-as-bootstrap-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-bootstrap/5.0.0.Beta4/jboss-as-bootstrap-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-j2se/5.0.0.Beta4/jboss-as-j2se-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-j2se/5.0.0.Beta4/jboss-as-j2se-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-j2se/5.0.0.Beta4/jboss-as-j2se-5.0.0.Beta4-tests.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-jmx/5.0.0.Beta4/jboss-as-jmx-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-jmx/5.0.0.Beta4/jboss-as-jmx-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-main/5.0.0.Beta4/jboss-as-main-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-main/5.0.0.Beta4/jboss-as-main-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-mbeans/5.0.0.Beta4/jboss-as-mbeans-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-mbeans/5.0.0.Beta4/jboss-as-mbeans-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-naming/5.0.0.Beta4/jboss-as-naming-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-naming/5.0.0.Beta4/jboss-as-naming-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-server/5.0.0.Beta4/jboss-as-server-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-server/5.0.0.Beta4/jboss-as-server-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-system/5.0.0.Beta4/jboss-as-system-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-system/5.0.0.Beta4/jboss-as-system-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-as-system-jmx/5.0.0.Beta4/jboss-as-system-jmx-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-as-system-jmx/5.0.0.Beta4/jboss-as-system-jmx-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aspects/jboss-aspects-test/1.0.0.Beta1/jboss-aspects-test-1.0.0.Beta1.jar" sourcepath="M2_REPO/org/jboss/aspects/jboss-aspects-test/1.0.0.Beta1/jboss-aspects-test-1.0.0.Beta1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloader/2.0.0.Beta11/jboss-classloader-2.0.0.Beta11.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloader/2.0.0.Beta11/jboss-classloader-2.0.0.Beta11-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-classloader/2.0.0.Beta10/jboss-classloader-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-classloader/2.0.0.Beta10/jboss-classloader-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloading/2.0.0.Beta11/jboss-classloading-2.0.0.Beta11.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloading/2.0.0.Beta11/jboss-classloading-2.0.0.Beta11-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-classloading-spi/5.0.0.Beta4/jboss-classloading-spi-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jboss-classloading-spi/5.0.0.Beta4/jboss-classloading-spi-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cl/jboss-classloading-vfs/2.0.0.Beta11/jboss-classloading-vfs-2.0.0.Beta11.jar" sourcepath="M2_REPO/org/jboss/cl/jboss-classloading-vfs/2.0.0.Beta11/jboss-classloading-vfs-2.0.0.Beta11-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-core/2.0.2.GA/jboss-common-core-2.0.2.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-core/2.0.2.GA/jboss-common-core-2.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.5.GA/jboss-common-core-2.2.5.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.5.GA/jboss-common-core-2.2.5.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aspects/jboss-current-invocation-aspects/1.0.0.CR1/jboss-current-invocation-aspects-1.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/aspects/jboss-current-invocation-aspects/1.0.0.CR1/jboss-current-invocation-aspects-1.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.Beta14/jboss-dependency-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-dependency/2.0.0.Beta14/jboss-dependency-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-client/2.0.0.Beta14/jboss-deployers-client-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-client/2.0.0.Beta14/jboss-deployers-client-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-client/2.0.0.Beta10/jboss-deployers-client-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-client/2.0.0.Beta10/jboss-deployers-client-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-client-spi/2.0.0.Beta14/jboss-deployers-client-spi-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-client-spi/2.0.0.Beta14/jboss-deployers-client-spi-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-client-spi/2.0.0.Beta6/jboss-deployers-client-spi-2.0.0.Beta6.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-client-spi/2.0.0.Beta6/jboss-deployers-client-spi-2.0.0.Beta6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-core/2.0.0.Beta14/jboss-deployers-core-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-core/2.0.0.Beta14/jboss-deployers-core-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-core/2.0.0.Beta10/jboss-deployers-core-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-core/2.0.0.Beta10/jboss-deployers-core-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-core-spi/2.0.0.Beta14/jboss-deployers-core-spi-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-core-spi/2.0.0.Beta14/jboss-deployers-core-spi-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-core-spi/2.0.0.Beta10/jboss-deployers-core-spi-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-core-spi/2.0.0.Beta10/jboss-deployers-core-spi-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-impl/2.0.0.Beta14/jboss-deployers-impl-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-impl/2.0.0.Beta14/jboss-deployers-impl-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-spi/2.0.0.Beta14/jboss-deployers-spi-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-spi/2.0.0.Beta14/jboss-deployers-spi-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-structure-spi/2.0.0.Beta14/jboss-deployers-structure-spi-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-structure-spi/2.0.0.Beta14/jboss-deployers-structure-spi-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-structure-spi/2.0.0.Beta10/jboss-deployers-structure-spi-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-structure-spi/2.0.0.Beta10/jboss-deployers-structure-spi-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-vfs/2.0.0.Beta14/jboss-deployers-vfs-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-vfs/2.0.0.Beta14/jboss-deployers-vfs-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-vfs/2.0.0.Beta10/jboss-deployers-vfs-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-vfs/2.0.0.Beta10/jboss-deployers-vfs-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/deployers/jboss-deployers-vfs-spi/2.0.0.Beta14/jboss-deployers-vfs-spi-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/deployers/jboss-deployers-vfs-spi/2.0.0.Beta14/jboss-deployers-vfs-spi-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-deployers-vfs-spi/2.0.0.Beta10/jboss-deployers-vfs-spi-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-deployers-vfs-spi/2.0.0.Beta10/jboss-deployers-vfs-spi-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-ejb-api/3.0.0.CR1/jboss-ejb-api-3.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-ejb-api/3.0.0.CR1/jboss-ejb-api-3.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-async/0.1.1/jboss-ejb3-async-0.1.1.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-async/0.1.1/jboss-ejb3-async-0.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-cache/0.13.0/jboss-ejb3-cache-0.13.0.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-cache/0.13.0/jboss-ejb3-cache-0.13.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-common/0.1.3/jboss-ejb3-common-0.1.3.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-common/0.1.3/jboss-ejb3-common-0.1.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-ext-api/0.4/jboss-ejb3-ext-api-0.4.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-ext-api/0.4/jboss-ejb3-ext-api-0.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-ext-api-impl/0.4.1/jboss-ejb3-ext-api-impl-0.4.1.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-ext-api-impl/0.4.1/jboss-ejb3-ext-api-impl-0.4.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-interceptors/0.13.1/jboss-ejb3-interceptors-0.13.1.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-interceptors/0.13.1/jboss-ejb3-interceptors-0.13.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-metadata/0.12.1/jboss-ejb3-metadata-0.12.1.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-metadata/0.12.1/jboss-ejb3-metadata-0.12.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-security/0.13.0/jboss-ejb3-security-0.13.0.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-security/0.13.0/jboss-ejb3-security-0.13.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-test/0.1.2/jboss-ejb3-test-0.1.2.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-test/0.1.2/jboss-ejb3-test-0.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ejb3/jboss-ejb3-transactions/0.13.2/jboss-ejb3-transactions-0.13.2.jar" sourcepath="M2_REPO/org/jboss/ejb3/jboss-ejb3-transactions/0.13.2/jboss-ejb3-transactions-0.13.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/embedded/jboss-embedded/beta3/jboss-embedded-beta3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cluster/jboss-ha-client/1.1.0.CR1/jboss-ha-client-1.1.0.CR1.jar" sourcepath="M2_REPO/org/jboss/cluster/jboss-ha-client/1.1.0.CR1/jboss-ha-client-1.1.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cluster/jboss-ha-server-api/1.1.0.CR1/jboss-ha-server-api-1.1.0.CR1.jar" sourcepath="M2_REPO/org/jboss/cluster/jboss-ha-server-api/1.1.0.CR1/jboss-ha-server-api-1.1.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-jacc-api/1.1.0.CR1/jboss-jacc-api-1.1.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-jacc-api/1.1.0.CR1/jboss-jacc-api-1.1.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-jaspi-api/1.0.0.CR1/jboss-jaspi-api-1.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-jaspi-api/1.0.0.CR1/jboss-jaspi-api-1.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jbossws/jboss-jaxrpc/1.0.4.GA/jboss-jaxrpc-1.0.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-jaxws/2.0.1.GA/jboss-jaxws-2.0.1.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-jca-api/1.5.0.CR1/jboss-jca-api-1.5.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-jca-api/1.5.0.CR1/jboss-jca-api-1.5.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-jms-api/1.1.0.CR1/jboss-jms-api-1.1.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-jms-api/1.1.0.CR1/jboss-jms-api-1.1.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jpa/jboss-jpa-deployers/0.1.0/jboss-jpa-deployers-0.1.0.jar" sourcepath="M2_REPO/org/jboss/jpa/jboss-jpa-deployers/0.1.0/jboss-jpa-deployers-0.1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.0.Beta14/jboss-kernel-2.0.0.Beta14.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-kernel/2.0.0.Beta14/jboss-kernel-2.0.0.Beta14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-logging-log4j/2.0.2.GA/jboss-logging-log4j-2.0.2.GA.jar" sourcepath="M2_REPO/jboss/jboss-logging-log4j/2.0.2.GA/jboss-logging-log4j-2.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-logging-spi/2.0.2.GA/jboss-logging-spi-2.0.2.GA.jar" sourcepath="M2_REPO/jboss/jboss-logging-spi/2.0.2.GA/jboss-logging-spi-2.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA.jar" sourcepath="M2_REPO/org/jboss/logging/jboss-logging-spi/2.0.5.GA/jboss-logging-spi-2.0.5.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-managed/2.0.0.Beta12/jboss-managed-2.0.0.Beta12.jar" sourcepath="M2_REPO/org/jboss/man/jboss-managed/2.0.0.Beta12/jboss-managed-2.0.0.Beta12-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-managed/2.0.0.Beta10/jboss-managed-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-managed/2.0.0.Beta10/jboss-managed-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-mdr/2.0.0.Beta15/jboss-mdr-2.0.0.Beta15.jar" sourcepath="M2_REPO/org/jboss/jboss-mdr/2.0.0.Beta15/jboss-mdr-2.0.0.Beta15-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/metadata/jboss-metadata/1.0.0.Beta29/jboss-metadata-1.0.0.Beta29.jar" sourcepath="M2_REPO/org/jboss/metadata/jboss-metadata/1.0.0.Beta29/jboss-metadata-1.0.0.Beta29-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/man/jboss-metatype/2.0.0.Beta12/jboss-metatype-2.0.0.Beta12.jar" sourcepath="M2_REPO/org/jboss/man/jboss-metatype/2.0.0.Beta12/jboss-metatype-2.0.0.Beta12-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/microcontainer/jboss-metatype/2.0.0.Beta10/jboss-metatype-2.0.0.Beta10.jar" sourcepath="M2_REPO/org/jboss/microcontainer/jboss-metatype/2.0.0.Beta10/jboss-metatype-2.0.0.Beta10-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-persistence-api/3.0.0.CR1/jboss-persistence-api-3.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-persistence-api/3.0.0.CR1/jboss-persistence-api-3.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/profiler/jvmti/jboss-profiler-jvmti/1.0.0.CR5/jboss-profiler-jvmti-1.0.0.CR5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-reflect/2.0.0.Beta12/jboss-reflect-2.0.0.Beta12.jar" sourcepath="M2_REPO/org/jboss/jboss-reflect/2.0.0.Beta12/jboss-reflect-2.0.0.Beta12-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/remoting/jboss-remoting/2.4.0.CR2/jboss-remoting-2.4.0.CR2.jar" sourcepath="M2_REPO/org/jboss/remoting/jboss-remoting/2.4.0.CR2/jboss-remoting-2.4.0.CR2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aspects/jboss-remoting-aspects/1.0.1.CR2/jboss-remoting-aspects-1.0.1.CR2.jar" sourcepath="M2_REPO/org/jboss/aspects/jboss-remoting-aspects/1.0.1.CR2/jboss-remoting-aspects-1.0.1.CR2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jbossws/jboss-saaj/1.0.4.GA/jboss-saaj-1.0.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aspects/jboss-security-aspects/1.0.0.Beta1/jboss-security-aspects-1.0.0.Beta1.jar" sourcepath="M2_REPO/org/jboss/aspects/jboss-security-aspects/1.0.0.Beta1/jboss-security-aspects-1.0.0.Beta1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/jboss-security-spi/2.0.2.CR5/jboss-security-spi-2.0.2.CR5.jar" sourcepath="M2_REPO/org/jboss/security/jboss-security-spi/2.0.2.CR5/jboss-security-spi-2.0.2.CR5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/jboss-security-spi-bare/2.0.2.Beta4/jboss-security-spi-bare-2.0.2.Beta4.jar" sourcepath="M2_REPO/org/jboss/security/jboss-security-spi-bare/2.0.2.Beta4/jboss-security-spi-bare-2.0.2.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-serialization/1.0.3.GA/jboss-serialization-1.0.3.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.0.GA/jboss-server-manager-0.1.0.GA.jar" sourcepath="M2_REPO/org/jboss/jbossas/jboss-server-manager/0.1.0.GA/jboss-server-manager-0.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-servlet-api/2.5.0.CR1/jboss-servlet-api-2.5.0.CR1.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-servlet-api/2.5.0.CR1/jboss-servlet-api-2.5.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-test/1.0.3.GA/jboss-test-1.0.3.GA.jar" sourcepath="M2_REPO/jboss/jboss-test/1.0.3.GA/jboss-test-1.0.3.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-test/1.0.4.GA/jboss-test-1.0.4.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-test/1.0.4.GA/jboss-test-1.0.4.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/test/jboss-test/1.1.0.GA/jboss-test-1.1.0.GA.jar" sourcepath="M2_REPO/org/jboss/test/jboss-test/1.1.0.GA/jboss-test-1.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/javaee/jboss-transaction-api/1.0.1.20070913080910/jboss-transaction-api-1.0.1.20070913080910.jar" sourcepath="M2_REPO/org/jboss/javaee/jboss-transaction-api/1.0.1.20070913080910/jboss-transaction-api-1.0.1.20070913080910-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/aspects/jboss-transaction-aspects/1.0.0.Beta1/jboss-transaction-aspects-1.0.0.Beta1.jar" sourcepath="M2_REPO/org/jboss/aspects/jboss-transaction-aspects/1.0.0.Beta1/jboss-transaction-aspects-1.0.0.Beta1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-transaction-spi/5.0.0.Beta4/jboss-transaction-spi-5.0.0.Beta4.jar" sourcepath="M2_REPO/org/jboss/jboss-transaction-spi/5.0.0.Beta4/jboss-transaction-spi-5.0.0.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-vfs/2.0.0.Beta13/jboss-vfs-2.0.0.Beta13.jar" sourcepath="M2_REPO/org/jboss/jboss-vfs/2.0.0.Beta13/jboss-vfs-2.0.0.Beta13-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/cache/jbosscache-core/2.1.1.GA/jbosscache-core-2.1.1.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jbossts/jbossjta/4.3.0.GA/jbossjta-4.3.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/jbosssx/2.0.2.CR5/jbosssx-2.0.2.CR5.jar" sourcepath="M2_REPO/org/jboss/security/jbosssx/2.0.2.CR5/jbosssx-2.0.2.CR5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/security/jbosssx-client/2.0.2.Beta4/jbosssx-client-2.0.2.Beta4.jar" sourcepath="M2_REPO/org/jboss/security/jbosssx-client/2.0.2.Beta4/jbosssx-client-2.0.2.Beta4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jbossts/jbossts-common/4.3.0.GA/jbossts-common-4.3.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/ws/jbossws-spi/1.0.3.GA/jbossws-spi-1.0.3.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.0.CR9/jbossxb-2.0.0.CR9.jar" sourcepath="M2_REPO/org/jboss/jbossxb/2.0.0.CR9/jbossxb-2.0.0.CR9-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jgroups/jgroups/2.6.2/jgroups-2.6.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/naming/jnpserver/5.0.0.CR1/jnpserver-5.0.0.CR1.jar" sourcepath="M2_REPO/org/jboss/naming/jnpserver/5.0.0.CR1/jnpserver-5.0.0.CR1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jpl-pattern/jpl-pattern/1.0/jpl-pattern-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jpl-util/jpl-util/1.0/jpl-util-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.4/junit-4.4.jar" sourcepath="M2_REPO/junit/junit/4.4/junit-4.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/apache-log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar" sourcepath="M2_REPO/javax/mail/mail/1.4/mail-1.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/qdox/qdox/1.6/qdox-1.6.jar" sourcepath="M2_REPO/qdox/qdox/1.6/qdox-1.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/quartz/quartz/1.6.0/quartz-1.6.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/soap/saaj-api/1.3/saaj-api-1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/trove/trove/1.0.2/trove-1.0.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-slide/webdavlib/2.0/webdavlib-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.7.1/xml-apis-2.7.1.jar"/>
+</classpath>
\ No newline at end of file
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project
===================================================================
--- projects/ejb3/trunk/core/.project 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,22 +0,0 @@
-<projectDescription>
- <name>jboss-ejb3-core</name>
- <comment>JBoss EJB 3.0 Core</comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- </natures>
-</projectDescription>
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project (from rev 76526, projects/ejb3/trunk/core/.project)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/.project 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,17 @@
+<projectDescription>
+ <name>jboss-ejb3-core</name>
+ <comment>JBoss EJB 3.0 Core</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml
===================================================================
--- projects/ejb3/trunk/core/pom.xml 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,566 +0,0 @@
-<!--
- vi:ts=2:sw=2:expandtab
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <!-- Parent -->
- <parent>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-build</artifactId>
- <version>0.13.10</version>
- <relativePath>../build/pom.xml</relativePath>
- </parent>
-
- <!-- POM Model Version -->
- <modelVersion>4.0.0</modelVersion>
-
- <!-- Artifact Information -->
- <artifactId>jboss-ejb3-core</artifactId>
- <packaging>jar</packaging>
- <version>0.1.9-SNAPSHOT</version>
- <name>JBoss EJB 3.0 Core</name>
- <url>http://labs.jboss.com/jbossejb3</url>
- <description>JBoss EJB 3.0 Core</description>
-
- <repositories>
- <!-- APIviz repository -->
- <repository>
- <id>apiviz.release</id>
- <name>APIviz releases</name>
- <url>http://apiviz.googlecode.com/svn/site/repo/mvn/release</url>
- <releases>
-
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <!-- Properties -->
-
- <properties>
- <version.org.jboss.jboss-as>5.0.0.Beta4</version.org.jboss.jboss-as>
- </properties>
-
- <!-- Build Information -->
- <build>
-
- <plugins>
-
- <!-- Assembly Plugin -->
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.2-beta-1</version>
- <executions>
- <execution>
- <id>make-assembly</id><!-- this is used for inheritance merges -->
- <phase>package</phase>
- <goals>
- <goal>attached</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <!-- JBoss EJB3 Client JAR -->
- <descriptors>
- <descriptor>jboss-ejb3-client.xml</descriptor>
- </descriptors>
- <attach>true</attach>
- </configuration>
- <inherited>false</inherited>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
-<!--
- <executions>
- <execution>
- <id>attach-javadoc</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
--->
- <configuration>
- <doclet>net.gleamynode.apiviz.APIviz</doclet>
- <docletArtifact>
- <groupId>net.gleamynode.apiviz</groupId>
- <artifactId>apiviz</artifactId>
- <version>1.0.3</version>
- </docletArtifact>
-<!--
- <aggregate>true</aggregate>
- <encoding>UTF-8</encoding>
- <locale>en_US</locale>
--->
- </configuration>
- </plugin>
-
- </plugins>
-
- </build>
-
- <!-- Dependencies -->
-
- <dependencies>
-
- <!-- Because AOP doesn't declare a proper dependency -->
- <dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>3.7.1.GA</version>
- </dependency>
-
- <dependency>
- <groupId>javax.xml.soap</groupId>
- <artifactId>saaj-api</artifactId>
- <version>1.3</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>jboss.jbossts</groupId>
- <artifactId>jbossjta</artifactId>
- <version>4.3.0.GA</version>
- <scope>test</scope>
- </dependency>
-
- <!-- To actually run SimpleTransactionService -->
- <dependency>
- <groupId>jboss.jbossts</groupId>
- <artifactId>jbossts-common</artifactId>
- <version>4.3.0.GA</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- <version>3.2.6.ga</version>
- </dependency>
-
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-annotations</artifactId>
- <version>3.3.1.GA</version>
- </dependency>
-
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.3.2.GA</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.metadata</groupId>
- <artifactId>jboss-metadata</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-javaee</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.logging</groupId>
- <artifactId>jboss-logging-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.test</groupId>
- <artifactId>jboss-test</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-server-manager</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-transaction-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-vfs</artifactId>
- <version>2.0.0.Beta13</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.naming</groupId>
- <artifactId>jnpserver</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.aop</groupId>
- <artifactId>jboss-aop</artifactId>
- <exclusions>
- <exclusion>
- <groupId>org.jboss</groupId>
- <artifactId>javassist</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-container</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.aop</groupId>
- <artifactId>jboss-aop-aspects</artifactId>
- </dependency>
-
- <!-- used in the basicbootstrap-beans.xml -->
- <dependency>
- <groupId>org.jboss.aop</groupId>
- <artifactId>jboss-aop-deployer-jdk50</artifactId>
- <version>2.0.0.CR10</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-core</artifactId>
- <!-- not used anywhere else -->
- <version>2.1.1.GA</version>
- <exclusions>
- <exclusion>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-javaee</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.aspects</groupId>
- <artifactId>jboss-aspects-test</artifactId>
- <version>1.0.0.Beta1</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.aspects</groupId>
- <artifactId>jboss-remoting-aspects</artifactId>
- <version>1.0.1.CR2</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.cluster</groupId>
- <artifactId>jboss-ha-client</artifactId>
- <version>1.1.0.CR1</version>
- <exclusions>
- <exclusion>
- <groupId>org.jboss.aspects</groupId>
- <artifactId>jboss-remoting-aspects</artifactId>
- </exclusion>
- <exclusion>
- <groupId>jboss.remoting</groupId>
- <artifactId>jboss-remoting</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.aop</groupId>
- <artifactId>jboss-aop</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.cluster</groupId>
- <artifactId>jboss-ha-server-api</artifactId>
- <version>1.1.0.CR1</version>
- <exclusions>
- <exclusion>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-common-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.logging</groupId>
- <artifactId>jboss-logging-spi</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-core</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.cache</groupId>
- <artifactId>jbosscache-pojo</artifactId>
- </exclusion>
- <exclusion>
- <groupId>jgroups</groupId>
- <artifactId>jgroups</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-async</artifactId>
- <version>0.1.1</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-cache</artifactId>
- <version>0.13.0</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-common</artifactId>
- <version>0.1.3</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-security</artifactId>
- <version>0.13.0</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-ext-api</artifactId>
- <version>0.4</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-ext-api-impl</artifactId>
- <version>0.4.1</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-interceptors</artifactId>
- <version>0.13.1</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-metadata</artifactId>
- <version>0.12.1</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-test</artifactId>
- <version>0.1.2</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-transactions</artifactId>
- <version>0.13.2</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.embedded</groupId>
- <artifactId>jboss-embedded</artifactId>
- <version>beta3</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-ejb-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-jacc-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-jca-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-jms-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.javaee</groupId>
- <artifactId>jboss-servlet-api</artifactId>
- </dependency>
-
- <!-- those needs to be removed - EJBTHREE-1340 -->
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-main</artifactId>
- <version>${version.org.jboss.jboss-as}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-system</artifactId>
- <version>${version.org.jboss.jboss-as}</version>
- <scope>provided</scope>
- <exclusions>
- <exclusion>
- <groupId>org.jboss</groupId>
- <artifactId>javassist</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-aop-mc-int</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-container</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-deployers-impl</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-deployers-spi</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-system-jmx</artifactId>
- <version>${version.org.jboss.jboss-as}</version>
- <scope>provided</scope>
- <exclusions>
- <exclusion>
- <groupId>org.jboss</groupId>
- <artifactId>javassist</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-aop-mc-int</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-container</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-deployers-impl</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-deployers-spi</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-mbeans</artifactId>
- <version>${version.org.jboss.jboss-as}</version>
- <exclusions>
- <exclusion>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-test</artifactId>
- </exclusion>
- </exclusions>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-j2se</artifactId>
- <version>${version.org.jboss.jboss-as}</version>
- <scope>provided</scope>
- <exclusions>
- <exclusion>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-container</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <!-- this needs to be removed - EJBTHREE-1343 -->
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-server</artifactId>
- <version>${version.org.jboss.jboss-as}</version>
- <exclusions>
- <exclusion>
- <groupId>jboss</groupId>
- <artifactId>jboss-remoting</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-metadata</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-security</artifactId>
- </exclusion>
- </exclusions>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.jpa</groupId>
- <artifactId>jboss-jpa-deployers</artifactId>
- <version>0.1.0</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-deployers-core-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.microcontainer</groupId>
- <artifactId>jboss-kernel</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.security</groupId>
- <artifactId>jboss-security-spi</artifactId>
- <version>2.0.2.CR5</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.security</groupId>
- <artifactId>jbosssx</artifactId>
- <version>2.0.2.CR5</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ws</groupId>
- <artifactId>jbossws-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>quartz</groupId>
- <artifactId>quartz</artifactId>
- <version>1.6.0</version>
- </dependency>
-
- <dependency>
- <groupId>trove</groupId>
- <artifactId>trove</artifactId>
- </dependency>
-
- </dependencies>
-</project>
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml (from rev 76527, projects/ejb3/trunk/core/pom.xml)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/pom.xml 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,572 @@
+<!--
+ vi:ts=2:sw=2:expandtab
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-build</artifactId>
+ <version>0.13.10</version>
+ <relativePath>../build/pom.xml</relativePath>
+ </parent>
+
+ <!-- POM Model Version -->
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- Artifact Information -->
+ <artifactId>jboss-ejb3-core</artifactId>
+ <packaging>jar</packaging>
+ <version>0.1.9</version>
+ <name>JBoss EJB 3.0 Core</name>
+ <url>http://labs.jboss.com/jbossejb3</url>
+ <description>JBoss EJB 3.0 Core</description>
+
+ <repositories>
+ <!-- APIviz repository -->
+ <repository>
+ <id>apiviz.release</id>
+ <name>APIviz releases</name>
+ <url>http://apiviz.googlecode.com/svn/site/repo/mvn/release</url>
+ <releases>
+
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <!-- Properties -->
+
+ <properties>
+ <version.org.jboss.jboss-as>5.0.0.Beta4</version.org.jboss.jboss-as>
+ </properties>
+
+ <!-- Build Information -->
+ <build>
+
+ <plugins>
+
+ <!-- Assembly Plugin -->
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2-beta-1</version>
+ <executions>
+ <execution>
+ <id>make-assembly</id><!-- this is used for inheritance merges -->
+ <phase>package</phase>
+ <goals>
+ <goal>attached</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <!-- JBoss EJB3 Client JAR -->
+ <descriptors>
+ <descriptor>jboss-ejb3-client.xml</descriptor>
+ </descriptors>
+ <attach>true</attach>
+ </configuration>
+ <inherited>false</inherited>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+<!--
+ <executions>
+ <execution>
+ <id>attach-javadoc</id>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+-->
+ <configuration>
+ <doclet>net.gleamynode.apiviz.APIviz</doclet>
+ <docletArtifact>
+ <groupId>net.gleamynode.apiviz</groupId>
+ <artifactId>apiviz</artifactId>
+ <version>1.0.3</version>
+ </docletArtifact>
+<!--
+ <aggregate>true</aggregate>
+ <encoding>UTF-8</encoding>
+ <locale>en_US</locale>
+-->
+ </configuration>
+ </plugin>
+
+ </plugins>
+
+ </build>
+
+ <!-- Dependencies -->
+
+ <dependencies>
+
+ <!-- Because AOP doesn't declare a proper dependency -->
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.7.1.GA</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.xml.soap</groupId>
+ <artifactId>saaj-api</artifactId>
+ <version>1.3</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>jboss.jbossts</groupId>
+ <artifactId>jbossjta</artifactId>
+ <version>4.3.0.GA</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- To actually run SimpleTransactionService -->
+ <dependency>
+ <groupId>jboss.jbossts</groupId>
+ <artifactId>jbossts-common</artifactId>
+ <version>4.3.0.GA</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate</artifactId>
+ <version>3.2.6.ga</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-annotations</artifactId>
+ <version>3.3.1.GA</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-entitymanager</artifactId>
+ <version>3.3.2.GA</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.metadata</groupId>
+ <artifactId>jboss-metadata</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-javaee</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.test</groupId>
+ <artifactId>jboss-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-server-manager</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-transaction-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-vfs</artifactId>
+ <version>2.0.0.Beta13</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.naming</groupId>
+ <artifactId>jnpserver</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.aop</groupId>
+ <artifactId>jboss-aop</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>javassist</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.aop</groupId>
+ <artifactId>jboss-aop-aspects</artifactId>
+ </dependency>
+
+ <!-- used in the basicbootstrap-beans.xml -->
+ <dependency>
+ <groupId>org.jboss.aop</groupId>
+ <artifactId>jboss-aop-deployer-jdk50</artifactId>
+ <version>2.0.0.CR10</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ <!-- not used anywhere else -->
+ <version>2.1.1.GA</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-javaee</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.aspects</groupId>
+ <artifactId>jboss-aspects-test</artifactId>
+ <version>1.0.0.Beta1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.aspects</groupId>
+ <artifactId>jboss-remoting-aspects</artifactId>
+ <version>1.0.1.CR2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.cluster</groupId>
+ <artifactId>jboss-ha-client</artifactId>
+ <version>1.1.0.CR1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.aspects</groupId>
+ <artifactId>jboss-remoting-aspects</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>jboss.remoting</groupId>
+ <artifactId>jboss-remoting</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.aop</groupId>
+ <artifactId>jboss-aop</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.cluster</groupId>
+ <artifactId>jboss-ha-server-api</artifactId>
+ <version>1.1.0.CR1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-spi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.cache</groupId>
+ <artifactId>jbosscache-pojo</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>jgroups</groupId>
+ <artifactId>jgroups</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-async</artifactId>
+ <version>0.1.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-cache</artifactId>
+ <version>0.13.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-common</artifactId>
+ <version>0.1.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-security</artifactId>
+ <version>0.13.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-ext-api</artifactId>
+ <version>0.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-ext-api-impl</artifactId>
+ <version>0.4.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-interceptors</artifactId>
+ <version>0.13.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-metadata</artifactId>
+ <version>0.12.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-test</artifactId>
+ <version>0.1.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-transactions</artifactId>
+ <version>0.13.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.embedded</groupId>
+ <artifactId>jboss-embedded</artifactId>
+ <version>beta3</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-ejb-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-jacc-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-jca-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-jms-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-servlet-api</artifactId>
+ </dependency>
+
+ <!-- those needs to be removed - EJBTHREE-1340 -->
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-main</artifactId>
+ <version>${version.org.jboss.jboss-as}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-system</artifactId>
+ <version>${version.org.jboss.jboss-as}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>javassist</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-aop-mc-int</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-impl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-system-jmx</artifactId>
+ <version>${version.org.jboss.jboss-as}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>javassist</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-aop-mc-int</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-impl</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-mbeans</artifactId>
+ <version>${version.org.jboss.jboss-as}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-test</artifactId>
+ </exclusion>
+ </exclusions>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-j2se</artifactId>
+ <version>${version.org.jboss.jboss-as}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <!-- this needs to be removed - EJBTHREE-1343 -->
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-server</artifactId>
+ <version>${version.org.jboss.jboss-as}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-remoting</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-metadata</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-security</artifactId>
+ </exclusion>
+ </exclusions>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.jpa</groupId>
+ <artifactId>jboss-jpa-deployers</artifactId>
+ <version>0.1.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-deployers-core-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-kernel</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.security</groupId>
+ <artifactId>jboss-security-spi</artifactId>
+ <version>2.0.2.CR5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.security</groupId>
+ <artifactId>jbosssx</artifactId>
+ <version>2.0.2.CR5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ws</groupId>
+ <artifactId>jbossws-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>quartz</groupId>
+ <artifactId>quartz</artifactId>
+ <version>1.6.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>trove</groupId>
+ <artifactId>trove</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <scm>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-core-0.1.9</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-core-0.1.9</developerConnection>
+ <url>http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-core-0.1.9</url>
+ </scm>
+</project>
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,1539 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.ejb3;
-
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-import javax.ejb.EJBContext;
-import javax.ejb.EJBException;
-import javax.ejb.Local;
-import javax.ejb.Remote;
-import javax.ejb.TimedObject;
-import javax.ejb.Timeout;
-import javax.ejb.Timer;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.LinkRef;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingException;
-import javax.naming.Reference;
-import javax.naming.StringRefAddr;
-
-import org.jboss.aop.Advisor;
-import org.jboss.aop.Domain;
-import org.jboss.aop.MethodInfo;
-import org.jboss.aop.advice.Interceptor;
-import org.jboss.aop.annotation.AnnotationRepository;
-import org.jboss.aop.joinpoint.ConstructionInvocation;
-import org.jboss.aop.util.MethodHashing;
-import org.jboss.ejb3.annotation.Clustered;
-import org.jboss.ejb3.annotation.SecurityDomain;
-import org.jboss.ejb3.annotation.defaults.PoolDefaults;
-import org.jboss.ejb3.aop.BeanContainer;
-import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
-import org.jboss.ejb3.entity.PersistenceUnitDeployment;
-import org.jboss.ejb3.interceptor.InterceptorInfoRepository;
-import org.jboss.ejb3.interceptor.InterceptorInjector;
-import org.jboss.ejb3.interceptors.aop.LifecycleCallbacks;
-import org.jboss.ejb3.interceptors.container.ManagedObjectAdvisor;
-import org.jboss.ejb3.interceptors.direct.DirectContainer;
-import org.jboss.ejb3.interceptors.direct.IndirectContainer;
-import org.jboss.ejb3.javaee.JavaEEComponent;
-import org.jboss.ejb3.javaee.JavaEEComponentHelper;
-import org.jboss.ejb3.javaee.JavaEEModule;
-import org.jboss.ejb3.pool.Pool;
-import org.jboss.ejb3.pool.PoolFactory;
-import org.jboss.ejb3.pool.PoolFactoryRegistry;
-import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
-import org.jboss.ejb3.security.SecurityDomainManager;
-import org.jboss.ejb3.statistics.InvocationStatistics;
-import org.jboss.ejb3.tx.UserTransactionImpl;
-import org.jboss.injection.DependsHandler;
-import org.jboss.injection.EJBHandler;
-import org.jboss.injection.EncInjector;
-import org.jboss.injection.ExtendedInjectionContainer;
-import org.jboss.injection.InjectionHandler;
-import org.jboss.injection.InjectionUtil;
-import org.jboss.injection.Injector;
-import org.jboss.injection.JndiInjectHandler;
-import org.jboss.injection.PersistenceContextHandler;
-import org.jboss.injection.PersistenceUnitHandler;
-import org.jboss.injection.ResourceHandler;
-import org.jboss.injection.WebServiceRefHandler;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorsMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.metadata.javaee.spec.Environment;
-import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
-import org.jboss.util.StringPropertyReplacer;
-import org.jboss.util.naming.Util;
-import org.jboss.virtual.VirtualFile;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @version $Revision$
- */
-public abstract class EJBContainer implements Container, IndirectContainer<EJBContainer, DirectContainer<EJBContainer>>, ExtendedInjectionContainer, JavaEEComponent
-{
- private static final Logger log = Logger.getLogger(EJBContainer.class);
-
- private String name;
-
- private BeanContainer beanContainer;
-
- private DirectContainer<EJBContainer> directContainer;
-
- protected EjbEncFactory encFactory = new DefaultEjbEncFactory();
-
- protected Pool pool;
-
- protected String ejbName;
-
- protected ObjectName objectName;
-
- protected int defaultConstructorIndex;
-
- protected String beanClassName;
-
- private Class<?> beanClass;
-
- protected ClassLoader classloader;
-
- // for performance there is an array.
- protected List<Injector> injectors = new ArrayList<Injector>();
-
- protected Context enc;
-
-// protected LifecycleInterceptorHandler callbackHandler;
-
- protected Hashtable initialContextProperties;
-
- protected Map<String, EncInjector> encInjectors = new HashMap<String, EncInjector>();
-
- protected JBossEnterpriseBeanMetaData xml;
- protected JBossAssemblyDescriptorMetaData assembly;
-
- protected Map<String, Map<AccessibleObject, Injector>> encInjections = new HashMap<String, Map<AccessibleObject, Injector>>();
-
-// protected List<InterceptorInfo> classInterceptors = new ArrayList<InterceptorInfo>();
-//
-// protected LinkedHashSet<InterceptorInfo> applicableInterceptors;
-
- private HashMap<Class<?>, InterceptorInjector> interceptorInjectors = new HashMap<Class<?>, InterceptorInjector>();
-
- private Ejb3Deployment deployment;
-
- private DependencyPolicy dependencyPolicy;
-
- private String jaccContextId;
-
- protected HashMap invokedMethod = new HashMap();
-
- protected InvocationStatistics invokeStats = new InvocationStatistics();
-
- private String partitionName;
-
- private List<Class<?>> businessInterfaces;
-
- private ThreadLocalStack<BeanContext<?>> currentBean = new ThreadLocalStack<BeanContext<?>>();
-
- protected boolean reinitialize = false;
-
- // To support clean startup/shutdown
- private ReadWriteLock containerLock = new ReentrantReadWriteLock();
-
- /**
- * @param name Advisor name
- * @param manager Domain to get interceptor bindings from
- * @param cl the EJB's classloader
- * @param beanClassName
- * @param ejbName
- * @param ctxProperties
- * @param interceptorRepository
- * @param deployment
- * @param beanMetaData the meta data for this bean or null
- */
-
- public EJBContainer(String name, Domain domain, ClassLoader cl,
- String beanClassName, String ejbName, Hashtable ctxProperties,
- Ejb3Deployment deployment, JBossEnterpriseBeanMetaData beanMetaData) throws ClassNotFoundException
- {
- assert name != null : "name is null";
- assert deployment != null : "deployment is null";
-
- this.name = name;
- this.deployment = deployment;
- this.beanClassName = beanClassName;
- this.classloader = cl;
- this.xml = beanMetaData;
-
- this.beanClass = classloader.loadClass(beanClassName);
-
- // We can't type cast the direct container, because we just loaded the beanClass
- // so assuming we have an object is a safe bet.
- this.beanContainer = new BeanContainer(this);
-
- this.ejbName = ejbName;
-
- // Because interceptors will query back the EJBContainer for annotations
- // we must have set beanContainer first and then do the advisor.
- try
- {
- beanContainer.initialize(ejbName, domain, beanClass, beanMetaData, cl);
- }
- catch(Exception e)
- {
- throw new RuntimeException("failed to initialize bean container ",e);
- }
- String on = createObjectName(ejbName);
-
- try
- {
- objectName = new ObjectName(on);
- }
- catch (MalformedObjectNameException e)
- {
- throw new RuntimeException("failed to create object name for: " + on, e);
- }
-
- //annotations = new AnnotationRepositoryToMetaData(this);
-
- initialContextProperties = ctxProperties;
- try
- {
- Util.createSubcontext(getEnc(), "env");
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- bindORB();
- bindEJBContext();
-
- this.dependencyPolicy = deployment.createDependencyPolicy(this);
- }
-
- private void bindEJBContext()
- {
- try
- {
- Reference ref = new Reference(EJBContext.class.getName(), EJBContextFactory.class.getName(), null);
- ref.add(new StringRefAddr("containerGuid", Ejb3Registry.guid(this)));
- ref.add(new StringRefAddr("containerClusterUid", Ejb3Registry.clusterUid(this)));
- ref.add(new StringRefAddr("isClustered", Boolean.toString(isClustered())));
- Util.rebind(getEnc(), "EJBContext", ref);
- }
- catch (NamingException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- private void bindORB()
- {
- try
- {
- Util.rebind(getEnc(), "ORB", new LinkRef("java:/JBossCorbaORB"));
- }
- catch(NamingException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- public abstract BeanContext<?> createBeanContext();
-
- public String createObjectName(String ejbName)
- {
- return JavaEEComponentHelper.createObjectName(deployment, ejbName);
- }
-
- /**
- * Do not call, for BeanContainer.
- * @throws IllegalAccessException
- * @throws InstantiationException
- */
- public Object createInterceptor(Class<?> interceptorClass) throws InstantiationException, IllegalAccessException
- {
- Object instance = interceptorClass.newInstance();
- InterceptorInjector interceptorInjector = interceptorInjectors.get(interceptorClass);
- assert interceptorInjector != null : "interceptorInjector not found for " + interceptorClass;
- interceptorInjector.inject(null, instance);
- return instance;
- }
-
- public String createObjectName(String unitName, String ejbName)
- {
- return JavaEEComponentHelper.createObjectName(deployment, unitName, ejbName);
- }
-
- // TODO: re-evaluate this exposure
- @Deprecated
- public Advisor getAdvisor()
- {
- return beanContainer._getAdvisor();
- }
-
- /*
- * TODO: re-evalute this exposure
- */
- @Deprecated
- public AnnotationRepository getAnnotations()
- {
- return beanContainer.getAnnotationRepository();
- }
-
- protected BeanContainer getBeanContainer()
- {
- return beanContainer;
- }
-
- /**
- *
- * @return the bean class of this container
- * @deprecated use getBeanClass
- */
- public Class<?> getClazz()
- {
- return getBeanClass();
- }
-
- @SuppressWarnings("unchecked")
- public static <C extends EJBContainer> C getEJBContainer(Advisor advisor)
- {
- try
- {
- return (C) ((ManagedObjectAdvisor<Object, BeanContainer>) advisor).getContainer().getEJBContainer();
- }
- catch(ClassCastException e)
- {
- throw new ClassCastException(e.getMessage() + " using " + advisor);
- }
- }
-
- public String getName()
- {
- return name;
- }
-
- public void pushContext(BeanContext<?> beanContext)
- {
- currentBean.push(beanContext);
- }
-
- /**
- * Makes sure that EJB's ENC is available
- * Delegates to whatever implementation is used to push the ENC of the EJB
- * onto the stack
- *
- */
- protected void pushEnc()
- {
- encFactory.pushEnc(this);
- }
-
- public BeanContext<?> peekContext()
- {
- BeanContext<?> ctx = currentBean.get();
- assert ctx != null : "ctx is null";
- return ctx;
- }
-
- public BeanContext<?> popContext()
- {
- return currentBean.pop();
- }
-
- /**
- * Pops EJB's ENC from the stack. Delegates to whatever implementation
- * is used to pop the EJB's ENC from the stock
- *
- */
- protected void popEnc()
- {
- encFactory.popEnc(this);
- }
-
- public Environment getEnvironmentRefGroup()
- {
- return xml;
- }
-
- public List<Injector> getInjectors()
- {
- return injectors;
- }
-
-
- public String getJaccContextId()
- {
- return jaccContextId;
- }
-
- /**
- * Do not call, used by BeanContainer.
- * @return
- */
- public List<Method> getVirtualMethods()
- {
- return null;
- }
-
- public void setJaccContextId(String jaccContextId)
- {
- this.jaccContextId = jaccContextId;
- }
-
- public VirtualFile getRootFile()
- {
- return getDeploymentUnit().getRootFile();
- }
-
- /**
- * Return all the business interfaces implemented by this bean.
- *
- * Available after the meta data has been processed.
- *
- * @return an array of business interfaces or empty if no interface is provided
- */
- public List<Class<?>> getBusinessInterfaces()
- {
- if(businessInterfaces == null) throw new IllegalStateException("businessInterfaces not yet initialized");
- return businessInterfaces;
- }
-
- public String getDeploymentQualifiedName()
- {
- return objectName.getCanonicalName();
- }
-
- /**
- * Returns a String identifier for this bean that is qualified by the
- * deployment, and hence should be unique across deployments. Name is of the
- * form "ear=foo.ear,jar=foo.jar,name=Bar", where "Bar" is the value
- * returned by {@link #getEjbName()}. The "ear=foo.ear" portion is ommitted
- * if the bean is not packaged in an ear.
- */
- public String getDeploymentPropertyListString()
- {
- return objectName.getCanonicalKeyPropertyListString();
- }
-
- public DeploymentUnit getDeploymentUnit()
- {
- return deployment.getDeploymentUnit();
- }
-
- public Ejb3Deployment getDeployment()
- {
- return deployment;
- }
-
- public DependencyPolicy getDependencyPolicy()
- {
- return dependencyPolicy;
- }
-
- public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
- {
- return beanContainer.isAnnotationPresent(annotationType);
- }
-
- /**
- * Is the method a business method of this container.
- *
- * @param businessMethod the method in question
- * @return true if so, otherwise false
- */
- public boolean isBusinessMethod(Method businessMethod)
- {
- for(Class<?> businessInterface : getBusinessInterfaces())
- {
- for(Method method : businessInterface.getMethods())
- {
- if(isCallable(method, businessMethod))
- return true;
- }
- }
- return false;
- }
-
- /**
- * Can method definition method be used to call method other.
- * For example if the method is defined in an interface it can be used to call a method
- * in a class.
- *
- * @param method
- * @param other
- * @return
- */
- private static boolean isCallable(Method method, Method other)
- {
- if ((method.getDeclaringClass().isAssignableFrom(other.getDeclaringClass())) && (method.getName().equals(other.getName())))
- {
- if (!method.getReturnType().equals(other.getReturnType()))
- return false;
- Class<?>[] params1 = method.getParameterTypes();
- Class<?>[] params2 = other.getParameterTypes();
- if (params1.length == params2.length)
- {
- for (int i = 0; i < params1.length; i++)
- {
- if (params1[i] != params2[i])
- return false;
- }
- return true;
- }
- }
- return false;
- }
-
- /**
- * introspects EJB container to find all dependencies
- * and initialize any extra metadata.
- * <p/>
- * This must be called before container is registered with any microcontainer
- *
- * @param dependencyPolicy
- */
- public void processMetadata()
- {
- // XML must be done first so that any annotation overrides are initialized
-
- // todo injection handlers should be pluggable from XML
- Collection<InjectionHandler<Environment>> handlers = this.deployment.getHandlers();
- if(handlers == null)
- {
- handlers = new ArrayList<InjectionHandler<Environment>>();
- handlers.add(new EJBHandler<Environment>());
- handlers.add(new DependsHandler<Environment>());
- handlers.add(new JndiInjectHandler<Environment>());
- handlers.add(new PersistenceContextHandler<Environment>());
- handlers.add(new PersistenceUnitHandler<Environment>());
- handlers.add(new ResourceHandler<Environment>());
- handlers.add(new WebServiceRefHandler<Environment>());
- }
-
- ClassLoader old = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(classloader);
- try
- {
- // EJB container's XML must be processed before interceptor's as it may override interceptor's references
- for (InjectionHandler<Environment> handler : handlers) handler.loadXml(xml, this);
-
- Map<AccessibleObject, Injector> tmp = InjectionUtil.processAnnotations(this, handlers, getBeanClass());
- injectors.addAll(tmp.values());
-
- /*
- initialiseInterceptors();
- */
- for (Class<?> interceptorClass : beanContainer.getInterceptorClasses())
- {
- InterceptorMetaData interceptorMetaData = findInterceptor(interceptorClass);
- if(interceptorMetaData == null)
- continue;
-
- for (InjectionHandler<Environment> handler : handlers)
- {
- handler.loadXml(interceptorMetaData, this);
- }
- }
- for (Class<?> interceptorClass : beanContainer.getInterceptorClasses())
- {
- Map<AccessibleObject, Injector> injections = InjectionUtil.processAnnotations(this, handlers, interceptorClass);
- InterceptorInjector injector = new InterceptorInjector(injections);
- interceptorInjectors.put(interceptorClass, injector);
- }
-
- // When @WebServiceRef is not used service-ref won't be processed
- // In this case we process them late
- if(xml != null && xml.getServiceReferences() != null)
- {
- for(ServiceReferenceMetaData sref : xml.getServiceReferences())
- {
- // FIXME: fix WS metadata
- /*
- if(!sref.isProcessed())
- {
- try
- {
- String name = sref.getServiceRefName();
- String encName = "env/" + name;
- Context encCtx = getEnc();
-
- UnifiedVirtualFile vfsRoot = new VirtualFileAdaptor(getRootFile());
- new ServiceRefDelegate().bindServiceRef(encCtx, encName, vfsRoot, getClassloader(), sref);
-
- }
- catch (Exception e)
- {
- log.error("Failed to bind service-ref", e);
- }
- }
- */
- }
- }
-
- // EJBTHREE-1025
- this.checkForDuplicateLocalAndRemoteInterfaces();
-
- for(Class<?> businessInterface : getBusinessInterfaces())
- ((JBoss5DependencyPolicy) getDependencyPolicy()).addSupply(businessInterface);
-
- Class localHomeInterface = ProxyFactoryHelper.getLocalHomeInterface(this);
- if(localHomeInterface != null)
- ((JBoss5DependencyPolicy) getDependencyPolicy()).addSupply(localHomeInterface);
-
- Class remoteHomeInterface = ProxyFactoryHelper.getRemoteHomeInterface(this);
- if(remoteHomeInterface != null)
- ((JBoss5DependencyPolicy) getDependencyPolicy()).addSupply(remoteHomeInterface);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(old);
- }
- }
-
- /**
- * Ensures that the bean does not implement any one interface as both @Local and @Remote
- *
- * @throws EJBException If the bean does implements any one interface as both @Local and @Remote
- */
- protected void checkForDuplicateLocalAndRemoteInterfaces() throws EJBException
- {
- // Initialize issue used in Error Message
- String issue = "(EJBTHREE-1025)";
-
- // Obtain annotations, if found
- Local local = (Local) resolveAnnotation(Local.class);
- Remote remote = (Remote) resolveAnnotation(Remote.class);
-
- // If either local or remote is unspecified, return safely - there can be no overlap
- if (local == null || remote == null)
- {
- return;
- }
-
- // Ensure "value" attribute of both local and remote are not blank
- if (local.value().length < 1 && local.value().length < 1)
- {
- throw new EJBException("Cannot designate both " + Local.class.getName() + " and " + Remote.class.getName()
- + " annotations without 'value' attribute on " + this.getEjbName() + ". " + issue);
- }
-
- // Iterate through local and remote interfaces, ensuring any one interface is not being used for both local and remote exposure
- for (Class<?> localClass : local.value())
- {
- for (Class<?> remoteClass : remote.value())
- {
- if (localClass.equals(remoteClass))
- {
- throw new EJBException("Cannot designate " + localClass.getName() + " as both " + Local.class.getName()
- + " and " + Remote.class.getName() + " on " + this.getEjbName() + ". " + issue);
- }
- }
- }
- }
-
- public JBossEnterpriseBeanMetaData getXml()
- {
- return xml;
- }
-
- public JBossAssemblyDescriptorMetaData getAssemblyDescriptor()
- {
- return assembly;
- }
-
- // FIXME: remove
- @Deprecated
- public void setAssemblyDescriptor(JBossAssemblyDescriptorMetaData assembly)
- {
- this.assembly = assembly;
- }
-
- protected abstract List<Class<?>> resolveBusinessInterfaces();
-
- public InterceptorInfoRepository getInterceptorRepository()
- {
- throw new RuntimeException("invalid");
- }
-
- public Map<String, EncInjector> getEncInjectors()
- {
- return encInjectors;
- }
-
- public ClassLoader getClassloader()
- {
- return classloader;
- }
-
- public InitialContext getInitialContext()
- {
- try
- {
- return InitialContextFactory.getInitialContext(initialContextProperties);
- }
- catch (NamingException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- public Map<String, Map<AccessibleObject, Injector>> getEncInjections()
- {
- return encInjections;
- }
-
- public Context getEnc()
- {
- if (enc == null)
- {
- enc = encFactory.getEnc(this);
- }
- return enc;
- }
-
- public Hashtable getInitialContextProperties()
- {
- return initialContextProperties;
- }
-
- public ObjectName getObjectName()
- {
- return objectName;
- }
-
- public String getEjbName()
- {
- return ejbName;
- }
-
- public String getBeanClassName()
- {
- return beanClassName;
- }
-
- public Class<?> getBeanClass()
- {
- return beanClass;
- }
-
- public Pool getPool()
- {
- return pool;
- }
-
- /**
- * Gets the name of the cluster partition with which this container is
- * associated. Not available until <code>EJBContainer.start()</code>
- * is completed.
- *
- * @return the name of the cluster partition with which this container is
- * associated, or <code>null</code> if the container is not clustered
- */
- public String getPartitionName()
- {
- if (partitionName == null)
- this.findPartitionName();
- return partitionName;
- }
-
- protected Object construct()
- {
- /*
- try
- {
- return beanContainer.construct();
- }
- catch (SecurityException e)
- {
- throw new RuntimeException(e);
- }
- catch (NoSuchMethodException e)
- {
- throw new RuntimeException(e);
- }
- */
- try
- {
- return beanClass.newInstance();
- }
- catch (InstantiationException e)
- {
- throw new RuntimeException(e);
- }
- catch (IllegalAccessException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- protected void reinitialize()
- {
- // FIXME: is this correct?
- beanContainer.reinitializeAdvisor();
-
- /*
- initClassMetaDataBindingsList();
- adviceBindings.clear();
- doesHaveAspects = false;
- constructorInfos = null;
- rebuildInterceptors();
- */
-
- bindEJBContext();
-
- reinitialize = false;
- }
-
- public void create() throws Exception
- {
- // Lock until start()
- this.getContainerLock().lock();
- /*
- initializeClassContainer();
- for (int i = 0; i < constructors.length; i++)
- {
- if (constructors[i].getParameterTypes().length == 0)
- {
- defaultConstructorIndex = i;
- break;
- }
- }
- */
- }
-
- public final void start() throws Exception
- {
- this.lockedStart();
-
- this.getContainerLock().unlock();
- }
-
- // Everything must be done in start to make sure all dependencies have been satisfied
- protected void lockedStart() throws Exception
- {
- if (reinitialize)
- reinitialize();
-
- initializePool();
-
- for (EncInjector injector : encInjectors.values())
- {
- injector.inject(this);
- }
-
- // creating of injector array should come after injection into ENC as an ENC injector
- // may add additional injectors into the injector list. An example is an extended persistence
- // context which mush be created and added to the SFSB bean context.
-
- Injector[] injectors2 = injectors.toArray(new Injector[injectors.size()]);
- if (pool != null) pool.setInjectors(injectors2);
-
-// createCallbackHandler();
-
- // If we're clustered, find our partition name
- findPartitionName();
-
- log.info("STARTED EJB: " + beanClass.getName() + " ejbName: " + ejbName);
- }
-
- public final void stop() throws Exception
- {
- this.getContainerLock().lockInterruptibly();
-
- this.lockedStop();
- }
-
- protected void lockedStop() throws Exception
- {
- reinitialize = true;
-
- //encFactory.cleanupEnc(this);
-
- if (pool != null)
- {
- pool.destroy();
- pool = null;
- }
-
- injectors = new ArrayList<Injector>();
- encInjectors = new HashMap<String, EncInjector>();
-
- InitialContextFactory.close(enc, this.initialContextProperties);
- enc = null;
-
- log.info("STOPPED EJB: " + beanClass.getName() + " ejbName: " + ejbName);
- }
-
- public void destroy() throws Exception
- {
- encFactory.cleanupEnc(this);
-
- // TODO: clean up BeanContainer?
- //super.cleanup();
- }
-
- @SuppressWarnings("unchecked")
- public <T> T getSecurityManager(Class<T> type)
- {
- try
- {
- InitialContext ctx = getInitialContext();
- SecurityDomain securityAnnotation = (SecurityDomain) resolveAnnotation(SecurityDomain.class);
- if (securityAnnotation != null && securityAnnotation.value().length() > 0)
- {
- return (T) SecurityDomainManager.getSecurityManager(securityAnnotation.value(),ctx);
- }
- return null;
- }
- catch (NamingException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- protected Method getTimeoutCallback(NamedMethodMetaData timeoutMethodMetaData, Class<?> beanClass)
- {
- JBossEnterpriseBeanMetaData metaData = xml;
- if(metaData != null)
- {
- if(timeoutMethodMetaData != null)
- {
- String methodName = timeoutMethodMetaData.getMethodName();
- try
- {
- return beanClass.getMethod(methodName, Timer.class);
- }
- catch (SecurityException e)
- {
- throw new RuntimeException(e);
- }
- catch (NoSuchMethodException e)
- {
- throw new RuntimeException("No method " + methodName + "(javax.ejb.Timer timer) found on bean " + ejbName, e);
- }
- }
- }
-
- if(TimedObject.class.isAssignableFrom(beanClass))
- {
- try
- {
- return TimedObject.class.getMethod("ejbTimeout", Timer.class);
- }
- catch (SecurityException e)
- {
- throw new RuntimeException(e);
- }
- catch (NoSuchMethodException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- if(metaData != null)
- {
- // TODO: cross cutting concern
- if(metaData.getEjbJarMetaData().isMetadataComplete())
- return null;
- }
-
- for (Method method : beanClass.getMethods())
- {
- if (getAnnotation(Timeout.class, method) != null)
- {
- if (Modifier.isPublic(method.getModifiers()) &&
- method.getReturnType().equals(Void.TYPE) &&
- method.getParameterTypes().length == 1 &&
- method.getParameterTypes()[0].equals(Timer.class))
- {
- // TODO: check for multiples
- return method;
- }
- else
- {
- throw new RuntimeException("@Timeout method " + method + " must have signature: void <METHOD>(javax.ejb.Timer timer) (EJB3 18.2.2)");
- }
- }
- }
-
- return null;
- }
-
- protected void initializePool() throws Exception
- {
- org.jboss.ejb3.annotation.Pool poolAnnotation = getAnnotation(org.jboss.ejb3.annotation.Pool.class);
- if (poolAnnotation == null)
- throw new IllegalStateException("No pool annotation");
- String registeredPoolName = poolAnnotation.value();
- // EJBTHREE-1119
- if(registeredPoolName==null||registeredPoolName.trim().equals(""))
- {
- // Default the Pool Implementation
- registeredPoolName = PoolDefaults.POOL_IMPLEMENTATION_THREADLOCAL;
- }
- int maxSize = poolAnnotation.maxSize();
- long timeout = poolAnnotation.timeout();
- PoolFactoryRegistry registry = deployment.getPoolFactoryRegistry();
- PoolFactory factory = registry.getPoolFactory(registeredPoolName);
- pool = factory.createPool();
- pool.initialize(this, maxSize, timeout);
-
- resolveInjectors();
- pool.setInjectors(injectors.toArray(new Injector[injectors.size()]));
- }
-
- /**
- * Note that this method is a WIP.
- *
- * @param beanContext
- * @param callbackAnnotationClass on of PostConstruct, PreDestroy, PostActivate or PrePassivate
- */
- protected void invokeCallback(BeanContext<?> beanContext, Class<? extends Annotation> callbackAnnotationClass)
- {
- try
- {
- // Do lifecycle callbacks
- List<Class<?>> lifecycleInterceptorClasses = beanContainer.getInterceptorRegistry().getLifecycleInterceptorClasses();
- Advisor advisor = getAdvisor();
- Interceptor interceptors[] = LifecycleCallbacks.createLifecycleCallbackInterceptors(advisor, lifecycleInterceptorClasses, beanContext, callbackAnnotationClass);
-
- Constructor<?> constructor = beanClass.getConstructor();
- Object initargs[] = null;
- ConstructionInvocation invocation = new ConstructionInvocation(interceptors, constructor, initargs);
- invocation.setAdvisor(advisor);
- invocation.setTargetObject(beanContext.getInstance());
- invocation.invokeNext();
- }
- catch(Throwable t)
- {
- throw new RuntimeException(t);
- }
- }
-
- public void invokePostConstruct(BeanContext<?> beanContext)
- {
- invokeCallback(beanContext, PostConstruct.class);
- }
-
- @Deprecated
- public void invokePostConstruct(BeanContext beanContext, Object[] params)
- {
- invokePostConstruct(beanContext);
- }
-
- public void invokePreDestroy(BeanContext beanContext)
- {
- // This is the correct way to destroy an instance, do
- // not call invokeCallback here.
- beanContainer.destroy(beanContext);
- }
-
- public void invokePostActivate(BeanContext beanContext)
- {
- throw new RuntimeException("PostActivate not implemented for container");
- }
-
- public void invokePrePassivate(BeanContext beanContext)
- {
- throw new RuntimeException("PrePassivate not implemented for container");
- }
-
- public void invokeInit(Object bean, Class[] initParameterTypes,
- Object[] initParameterValues)
- {
- // do nothing, only useful on a stateful session bean
- }
-
- public static final String MANAGED_ENTITY_MANAGER_FACTORY = "ManagedEntityManagerFactory";
-
- public static final String ENTITY_MANAGER_FACTORY = "EntityManagerFactory";
-
- protected void resolveInjectors() throws Exception
- {
- pushEnc();
- try
- {
- Thread.currentThread().setContextClassLoader(classloader);
- try
- {
- Util.rebind(getEnc(), "UserTransaction", new UserTransactionImpl());
- }
- catch (NamingException e)
- {
- NamingException namingException = new NamingException("Could not bind user transaction for ejb name " + ejbName + " into JNDI under jndiName: " + getEnc().getNameInNamespace() + "/" + "UserTransaction");
- namingException.setRootCause(e);
- throw namingException;
- }
- try
- {
- Util.rebind(getEnc(), "TransactionSynchronizationRegistry", new LinkRef("java:TransactionSynchronizationRegistry"));
- log.debug("Linked java:comp/TransactionSynchronizationRegistry to JNDI name: java:TransactionSynchronizationRegistry");
- }
- catch (NamingException e)
- {
- NamingException namingException = new NamingException("Could not bind TransactionSynchronizationRegistry for ejb name " + ejbName + " into JNDI under jndiName: " + getEnc().getNameInNamespace() + "/" + "TransactionSynchronizationRegistry");
- namingException.setRootCause(e);
- throw namingException;
- }
- }
- finally
- {
- popEnc();
- }
- }
-
- /*
- protected void createCallbackHandler()
- {
- try
- {
- callbackHandler = new LifecycleInterceptorHandler(this,
- getHandledCallbacks());
- }
- catch (Exception e)
- {
- throw new RuntimeException("Error creating callback handler for bean "
- + beanClassName, e);
- }
- }
- */
-
- protected Class[] getHandledCallbacks()
- {
- return new Class[]
- {PostConstruct.class, PreDestroy.class, Timeout.class};
- }
-
- // TODO: once injection is finalized this method will disappear
- private InterceptorMetaData findInterceptor(Class<?> interceptorClass)
- {
- if(xml == null)
- return null;
- JBossMetaData ejbJarMetaData = xml.getEjbJarMetaData();
- if(ejbJarMetaData == null)
- return null;
- InterceptorsMetaData interceptors = ejbJarMetaData.getInterceptors();
- if(interceptors == null)
- return null;
- for(InterceptorMetaData interceptorMetaData : interceptors)
- {
- if(interceptorMetaData.getInterceptorClass().equals(interceptorClass.getName()))
- return interceptorMetaData;
- }
- return null;
- }
-
- protected void findPartitionName()
- {
- Clustered clustered = (Clustered) getAnnotation(Clustered.class);
- if (clustered == null)
- {
- partitionName = null;
- return;
- }
-
- String value = clustered.partition();
- try
- {
- String replacedValue = StringPropertyReplacer.replaceProperties(value);
- if (value != replacedValue)
- {
- log.debug("Replacing @Clustered partition attribute " + value + " with " + replacedValue);
- value = replacedValue;
- }
- }
- catch (Exception e)
- {
- log.warn("Unable to replace @Clustered partition attribute " + value +
- ". Caused by " + e.getClass() + " " + e.getMessage());
- }
-
- partitionName = value;
- }
-
- public <T> T getBusinessObject(BeanContext<?> beanContext, Class<T> businessInterface) throws IllegalStateException
- {
- throw new IllegalStateException("Not implemented");
- }
-
- public Object getInvokedBusinessInterface(BeanContext beanContext) throws IllegalStateException
- {
- throw new IllegalStateException("Not implemented");
- }
-
- protected Object getInvokedInterface(Method method)
- {
- Remote remoteAnnotation = (Remote) resolveAnnotation(Remote.class);
- if (remoteAnnotation != null)
- {
- Class[] remotes = remoteAnnotation.value();
- for (int i = 0; i < remotes.length; ++i)
- {
- try
- {
- remotes[i].getMethod(method.getName(), method.getParameterTypes());
- return remotes[i];
- }
- catch (NoSuchMethodException e)
- {
- }
- }
- }
-
- Local localAnnotation = (Local) resolveAnnotation(Local.class);
- if (localAnnotation != null)
- {
- Class[] locals = localAnnotation.value();
- for (int i = 0; i < locals.length; ++i)
- {
- Method[] interfaceMethods = locals[i].getMethods();
- for (int j = 0; j < interfaceMethods.length; ++j)
- {
- if (interfaceMethods[j].equals(method))
- return locals[i];
- }
- }
- }
-
- return null;
- }
-
- // todo these method overrides for aop are for performance reasons
- private Class loadPublicAnnotation(String annotation)
- {
- try
- {
- Class ann = classloader.loadClass(annotation);
- if (!ann.isAnnotation()) return null;
- Retention retention = (Retention) ann.getAnnotation(Retention.class);
- if (retention != null && retention.value() == RetentionPolicy.RUNTIME) return ann;
-
- }
- catch (ClassNotFoundException ignored)
- {
- }
- return null;
- }
-
- /*
- @Override
- public boolean hasAnnotation(Class tgt, String annotation)
- {
- if (annotations.hasClassAnnotation(annotation)) return true;
- if (tgt == null) return false;
- try
- {
- Class ann = loadPublicAnnotation(annotation);
- // it is metadata or CLASS annotation
- if (ann == null) return AnnotationElement.isAnyAnnotationPresent(tgt, annotation);
- return tgt.isAnnotationPresent(ann);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
- }
- }
-
-
- @Override
- public boolean hasAnnotation(Method m, String annotation)
- {
- if (annotations.hasAnnotation(m, annotation)) return true;
- try
- {
- Class ann = loadPublicAnnotation(annotation);
- // it is metadata or CLASS annotation
- if (ann == null) return AnnotationElement.isAnyAnnotationPresent(m, annotation);
- return m.isAnnotationPresent(ann);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
- }
- }
-
- @Override
- public boolean hasAnnotation(Field m, String annotation)
- {
- if (annotations.hasAnnotation(m, annotation)) return true;
- try
- {
- Class ann = loadPublicAnnotation(annotation);
- // it is metadata or CLASS annotation
- if (ann == null) return AnnotationElement.isAnyAnnotationPresent(m, annotation);
- return m.isAnnotationPresent(ann);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
- }
- }
-
- @Override
- public boolean hasAnnotation(Constructor m, String annotation)
- {
- if (annotations.hasAnnotation(m, annotation)) return true;
- try
- {
- Class ann = loadPublicAnnotation(annotation);
- // it is metadata or CLASS annotation
- if (ann == null) return AnnotationElement.isAnyAnnotationPresent(m, annotation);
- return m.isAnnotationPresent(ann);
- }
- catch (Exception e)
- {
- throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
- }
- }
- */
-
- public Container resolveEjbContainer(String link, Class businessIntf)
- {
- return deployment.getEjbContainer(link, businessIntf);
- }
-
- public Container resolveEjbContainer(Class businessIntf) throws NameNotFoundException
- {
- return deployment.getEjbContainer(businessIntf);
- }
-
- public String resolveMessageDestination(String link)
- {
- return deployment.resolveMessageDestination(link);
- }
-
- public String resolvePersistenceUnitSupplier(String unitName)
- {
- return getDeployment().resolvePersistenceUnitSupplier(unitName);
- }
-
- public <T extends Annotation> T getAnnotation(Class<T> annotationType)
- {
- if (this.getAnnotations().isDisabled(annotationType))
- return null;
-
- return beanContainer.getAnnotation(annotationType);
- }
-
- public <T extends Annotation> T getAnnotation(Class<T> annotationType, Class<?> clazz)
- {
- return beanContainer.getAnnotation(clazz, annotationType);
- }
-
- public <T extends Annotation> T getAnnotation(Class<T> annotationType, Class<?> clazz, Method method)
- {
- return beanContainer.getAnnotation(annotationType, clazz, method);
- }
-
- public <T extends Annotation> T getAnnotation(Class<T> annotationType, Method method)
- {
- if (this.getAnnotations().isDisabled(method, annotationType))
- return null;
-
- return beanContainer.getAnnotation(annotationType, method);
- }
-
- public <T extends Annotation> T getAnnotation(Class<T> annotationType, Class<?> clazz, Field field)
- {
- return beanContainer.getAnnotation(annotationType, clazz, field);
- }
-
- public <T extends Annotation> T getAnnotation(Class<T> annotationType, Field field)
- {
- return beanContainer.getAnnotation(annotationType, field);
- }
-
- /**
- * @deprecated use getAnnotation
- */
- @SuppressWarnings("unchecked")
- public Object resolveAnnotation(Class annotationType)
- {
- return getAnnotation(annotationType);
- }
-
- /**
- * @deprecated use getAnnotation
- */
- @SuppressWarnings("unchecked")
- public Object resolveAnnotation(Field field, Class annotationType)
- {
- return getAnnotation(annotationType, field);
- }
-
- /**
- * @deprecated use getAnnotation
- */
- @SuppressWarnings("unchecked")
- public Object resolveAnnotation(Method method, Class annotationType)
- {
- return getAnnotation(annotationType, method);
- }
-
- /**
- * @deprecated this is going to be gone soon
- */
- @SuppressWarnings("unchecked")
- public Object resolveAnnotation(Method m, Class[] annotationChoices)
- {
- Object value = null;
- int i = 0;
- while (value == null && i < annotationChoices.length){
- value = resolveAnnotation(m, annotationChoices[i++]);
- }
-
- return value;
- }
-
- public String getIdentifier()
- {
- return getEjbName();
- }
-
- public String getDeploymentDescriptorType()
- {
- return "ejb-jar.xml";
- }
-
- public PersistenceUnitDeployment getPersistenceUnitDeployment(String unitName) throws NameNotFoundException
- {
- return deployment.getPersistenceUnitDeployment(unitName);
- }
-
- public String getEjbJndiName(Class businessInterface) throws NameNotFoundException
- {
- return deployment.getEjbJndiName(businessInterface);
- }
-
- public String getEjbJndiName(String link, Class businessInterface)
- {
- return deployment.getEjbJndiName(link, businessInterface);
- }
-
- public InvocationStatistics getInvokeStats()
- {
- return invokeStats;
- }
-
- @Deprecated
- protected MethodInfo getMethodInfo(Method method)
- {
- long hash = MethodHashing.calculateHash(method);
- MethodInfo info = getAdvisor().getMethodInfo(hash);
- if (info == null)
- {
- throw new RuntimeException("Could not resolve beanClass method from proxy call: " + method.toString());
- }
- return info;
- }
-
- public boolean isClustered()
- {
- return false;
- }
-
- public JavaEEModule getModule()
- {
- return deployment;
- }
-
- public abstract boolean hasJNDIBinding(String jndiName);
-
- /**
- * After XML processing has been done this allows the container
- * to further initialize the meta data.
- */
- public void instantiated()
- {
- this.businessInterfaces = resolveBusinessInterfaces();
-
- // Before we start to process annotations, make sure we also have the ones from interceptors-aop.
- // FIXME: because of the flaked life cycle of an EJBContainer (we add annotations after it's been
- // constructed), we must reinitialize the whole thing.
- beanContainer.reinitializeAdvisor();
- }
-
- public void setDirectContainer(DirectContainer<EJBContainer> container)
- {
- this.directContainer = container;
- }
-
- protected Method getNonBridgeMethod(Method bridgeMethod)
- {
- Class clazz = bridgeMethod.getDeclaringClass();
- Method[] methods = clazz.getMethods();
- for (Method method : methods)
- {
- if (!method.isBridge() && method.getParameterTypes().length == bridgeMethod.getParameterTypes().length)
- {
- return method;
- }
- }
-
- return bridgeMethod;
- }
-
- public Lock getInvocationLock()
- {
- return this.containerLock.readLock();
- }
-
- private Lock getContainerLock()
- {
- return this.containerLock.writeLock();
- }
-
- public String toString()
- {
- return getObjectName().getCanonicalName();
- }
-}
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java (from rev 76506, projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/EJBContainer.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/EJBContainer.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,1549 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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.ejb3;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.ejb.EJBContext;
+import javax.ejb.EJBException;
+import javax.ejb.Local;
+import javax.ejb.Remote;
+import javax.ejb.TimedObject;
+import javax.ejb.Timeout;
+import javax.ejb.Timer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.LinkRef;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+import javax.naming.Reference;
+import javax.naming.StringRefAddr;
+
+import org.jboss.aop.Advisor;
+import org.jboss.aop.Domain;
+import org.jboss.aop.MethodInfo;
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.annotation.AnnotationRepository;
+import org.jboss.aop.joinpoint.ConstructionInvocation;
+import org.jboss.aop.util.MethodHashing;
+import org.jboss.ejb.AllowedOperationsAssociation;
+import org.jboss.ejb3.annotation.Clustered;
+import org.jboss.ejb3.annotation.SecurityDomain;
+import org.jboss.ejb3.annotation.defaults.PoolDefaults;
+import org.jboss.ejb3.aop.BeanContainer;
+import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
+import org.jboss.ejb3.entity.PersistenceUnitDeployment;
+import org.jboss.ejb3.interceptor.InterceptorInfoRepository;
+import org.jboss.ejb3.interceptor.InterceptorInjector;
+import org.jboss.ejb3.interceptors.aop.LifecycleCallbacks;
+import org.jboss.ejb3.interceptors.container.ManagedObjectAdvisor;
+import org.jboss.ejb3.interceptors.direct.DirectContainer;
+import org.jboss.ejb3.interceptors.direct.IndirectContainer;
+import org.jboss.ejb3.javaee.JavaEEComponent;
+import org.jboss.ejb3.javaee.JavaEEComponentHelper;
+import org.jboss.ejb3.javaee.JavaEEModule;
+import org.jboss.ejb3.pool.Pool;
+import org.jboss.ejb3.pool.PoolFactory;
+import org.jboss.ejb3.pool.PoolFactoryRegistry;
+import org.jboss.ejb3.proxy.factory.ProxyFactoryHelper;
+import org.jboss.ejb3.security.SecurityDomainManager;
+import org.jboss.ejb3.statistics.InvocationStatistics;
+import org.jboss.ejb3.tx.UserTransactionImpl;
+import org.jboss.injection.DependsHandler;
+import org.jboss.injection.EJBHandler;
+import org.jboss.injection.EncInjector;
+import org.jboss.injection.ExtendedInjectionContainer;
+import org.jboss.injection.InjectionHandler;
+import org.jboss.injection.InjectionUtil;
+import org.jboss.injection.Injector;
+import org.jboss.injection.JndiInjectHandler;
+import org.jboss.injection.PersistenceContextHandler;
+import org.jboss.injection.PersistenceUnitHandler;
+import org.jboss.injection.ResourceHandler;
+import org.jboss.injection.WebServiceRefHandler;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.spec.InterceptorMetaData;
+import org.jboss.metadata.ejb.spec.InterceptorsMetaData;
+import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
+import org.jboss.metadata.javaee.spec.Environment;
+import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.util.StringPropertyReplacer;
+import org.jboss.util.naming.Util;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @version $Revision$
+ */
+public abstract class EJBContainer implements Container, IndirectContainer<EJBContainer, DirectContainer<EJBContainer>>, ExtendedInjectionContainer, JavaEEComponent
+{
+ private static final Logger log = Logger.getLogger(EJBContainer.class);
+
+ private String name;
+
+ private BeanContainer beanContainer;
+
+ private DirectContainer<EJBContainer> directContainer;
+
+ protected EjbEncFactory encFactory = new DefaultEjbEncFactory();
+
+ protected Pool pool;
+
+ protected String ejbName;
+
+ protected ObjectName objectName;
+
+ protected int defaultConstructorIndex;
+
+ protected String beanClassName;
+
+ private Class<?> beanClass;
+
+ protected ClassLoader classloader;
+
+ // for performance there is an array.
+ protected List<Injector> injectors = new ArrayList<Injector>();
+
+ protected Context enc;
+
+// protected LifecycleInterceptorHandler callbackHandler;
+
+ protected Hashtable initialContextProperties;
+
+ protected Map<String, EncInjector> encInjectors = new HashMap<String, EncInjector>();
+
+ protected JBossEnterpriseBeanMetaData xml;
+ protected JBossAssemblyDescriptorMetaData assembly;
+
+ protected Map<String, Map<AccessibleObject, Injector>> encInjections = new HashMap<String, Map<AccessibleObject, Injector>>();
+
+// protected List<InterceptorInfo> classInterceptors = new ArrayList<InterceptorInfo>();
+//
+// protected LinkedHashSet<InterceptorInfo> applicableInterceptors;
+
+ private HashMap<Class<?>, InterceptorInjector> interceptorInjectors = new HashMap<Class<?>, InterceptorInjector>();
+
+ private Ejb3Deployment deployment;
+
+ private DependencyPolicy dependencyPolicy;
+
+ private String jaccContextId;
+
+ protected HashMap invokedMethod = new HashMap();
+
+ protected InvocationStatistics invokeStats = new InvocationStatistics();
+
+ private String partitionName;
+
+ private List<Class<?>> businessInterfaces;
+
+ private ThreadLocalStack<BeanContext<?>> currentBean = new ThreadLocalStack<BeanContext<?>>();
+
+ protected boolean reinitialize = false;
+
+ // To support clean startup/shutdown
+ private ReadWriteLock containerLock = new ReentrantReadWriteLock();
+
+ /**
+ * @param name Advisor name
+ * @param manager Domain to get interceptor bindings from
+ * @param cl the EJB's classloader
+ * @param beanClassName
+ * @param ejbName
+ * @param ctxProperties
+ * @param interceptorRepository
+ * @param deployment
+ * @param beanMetaData the meta data for this bean or null
+ */
+
+ public EJBContainer(String name, Domain domain, ClassLoader cl,
+ String beanClassName, String ejbName, Hashtable ctxProperties,
+ Ejb3Deployment deployment, JBossEnterpriseBeanMetaData beanMetaData) throws ClassNotFoundException
+ {
+ assert name != null : "name is null";
+ assert deployment != null : "deployment is null";
+
+ this.name = name;
+ this.deployment = deployment;
+ this.beanClassName = beanClassName;
+ this.classloader = cl;
+ this.xml = beanMetaData;
+
+ this.beanClass = classloader.loadClass(beanClassName);
+
+ // We can't type cast the direct container, because we just loaded the beanClass
+ // so assuming we have an object is a safe bet.
+ this.beanContainer = new BeanContainer(this);
+
+ this.ejbName = ejbName;
+
+ // Because interceptors will query back the EJBContainer for annotations
+ // we must have set beanContainer first and then do the advisor.
+ try
+ {
+ beanContainer.initialize(ejbName, domain, beanClass, beanMetaData, cl);
+ }
+ catch(Exception e)
+ {
+ throw new RuntimeException("failed to initialize bean container ",e);
+ }
+ String on = createObjectName(ejbName);
+
+ try
+ {
+ objectName = new ObjectName(on);
+ }
+ catch (MalformedObjectNameException e)
+ {
+ throw new RuntimeException("failed to create object name for: " + on, e);
+ }
+
+ //annotations = new AnnotationRepositoryToMetaData(this);
+
+ initialContextProperties = ctxProperties;
+ try
+ {
+ Util.createSubcontext(getEnc(), "env");
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ bindORB();
+ bindEJBContext();
+
+ this.dependencyPolicy = deployment.createDependencyPolicy(this);
+ }
+
+ private void bindEJBContext()
+ {
+ try
+ {
+ Reference ref = new Reference(EJBContext.class.getName(), EJBContextFactory.class.getName(), null);
+ ref.add(new StringRefAddr("containerGuid", Ejb3Registry.guid(this)));
+ ref.add(new StringRefAddr("containerClusterUid", Ejb3Registry.clusterUid(this)));
+ ref.add(new StringRefAddr("isClustered", Boolean.toString(isClustered())));
+ Util.rebind(getEnc(), "EJBContext", ref);
+ }
+ catch (NamingException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void bindORB()
+ {
+ try
+ {
+ Util.rebind(getEnc(), "ORB", new LinkRef("java:/JBossCorbaORB"));
+ }
+ catch(NamingException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public abstract BeanContext<?> createBeanContext();
+
+ public String createObjectName(String ejbName)
+ {
+ return JavaEEComponentHelper.createObjectName(deployment, ejbName);
+ }
+
+ /**
+ * Do not call, for BeanContainer.
+ * @throws IllegalAccessException
+ * @throws InstantiationException
+ */
+ public Object createInterceptor(Class<?> interceptorClass) throws InstantiationException, IllegalAccessException
+ {
+ Object instance = interceptorClass.newInstance();
+ InterceptorInjector interceptorInjector = interceptorInjectors.get(interceptorClass);
+ assert interceptorInjector != null : "interceptorInjector not found for " + interceptorClass;
+ interceptorInjector.inject(null, instance);
+ return instance;
+ }
+
+ public String createObjectName(String unitName, String ejbName)
+ {
+ return JavaEEComponentHelper.createObjectName(deployment, unitName, ejbName);
+ }
+
+ // TODO: re-evaluate this exposure
+ @Deprecated
+ public Advisor getAdvisor()
+ {
+ return beanContainer._getAdvisor();
+ }
+
+ /*
+ * TODO: re-evalute this exposure
+ */
+ @Deprecated
+ public AnnotationRepository getAnnotations()
+ {
+ return beanContainer.getAnnotationRepository();
+ }
+
+ protected BeanContainer getBeanContainer()
+ {
+ return beanContainer;
+ }
+
+ /**
+ *
+ * @return the bean class of this container
+ * @deprecated use getBeanClass
+ */
+ public Class<?> getClazz()
+ {
+ return getBeanClass();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <C extends EJBContainer> C getEJBContainer(Advisor advisor)
+ {
+ try
+ {
+ return (C) ((ManagedObjectAdvisor<Object, BeanContainer>) advisor).getContainer().getEJBContainer();
+ }
+ catch(ClassCastException e)
+ {
+ throw new ClassCastException(e.getMessage() + " using " + advisor);
+ }
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void pushContext(BeanContext<?> beanContext)
+ {
+ currentBean.push(beanContext);
+ }
+
+ /**
+ * Makes sure that EJB's ENC is available
+ * Delegates to whatever implementation is used to push the ENC of the EJB
+ * onto the stack
+ *
+ */
+ protected void pushEnc()
+ {
+ encFactory.pushEnc(this);
+ }
+
+ public BeanContext<?> peekContext()
+ {
+ BeanContext<?> ctx = currentBean.get();
+ assert ctx != null : "ctx is null";
+ return ctx;
+ }
+
+ public BeanContext<?> popContext()
+ {
+ return currentBean.pop();
+ }
+
+ /**
+ * Pops EJB's ENC from the stack. Delegates to whatever implementation
+ * is used to pop the EJB's ENC from the stock
+ *
+ */
+ protected void popEnc()
+ {
+ encFactory.popEnc(this);
+ }
+
+ public Environment getEnvironmentRefGroup()
+ {
+ return xml;
+ }
+
+ public List<Injector> getInjectors()
+ {
+ return injectors;
+ }
+
+
+ public String getJaccContextId()
+ {
+ return jaccContextId;
+ }
+
+ /**
+ * Do not call, used by BeanContainer.
+ * @return
+ */
+ public List<Method> getVirtualMethods()
+ {
+ return null;
+ }
+
+ public void setJaccContextId(String jaccContextId)
+ {
+ this.jaccContextId = jaccContextId;
+ }
+
+ public VirtualFile getRootFile()
+ {
+ return getDeploymentUnit().getRootFile();
+ }
+
+ /**
+ * Return all the business interfaces implemented by this bean.
+ *
+ * Available after the meta data has been processed.
+ *
+ * @return an array of business interfaces or empty if no interface is provided
+ */
+ public List<Class<?>> getBusinessInterfaces()
+ {
+ if(businessInterfaces == null) throw new IllegalStateException("businessInterfaces not yet initialized");
+ return businessInterfaces;
+ }
+
+ public String getDeploymentQualifiedName()
+ {
+ return objectName.getCanonicalName();
+ }
+
+ /**
+ * Returns a String identifier for this bean that is qualified by the
+ * deployment, and hence should be unique across deployments. Name is of the
+ * form "ear=foo.ear,jar=foo.jar,name=Bar", where "Bar" is the value
+ * returned by {@link #getEjbName()}. The "ear=foo.ear" portion is ommitted
+ * if the bean is not packaged in an ear.
+ */
+ public String getDeploymentPropertyListString()
+ {
+ return objectName.getCanonicalKeyPropertyListString();
+ }
+
+ public DeploymentUnit getDeploymentUnit()
+ {
+ return deployment.getDeploymentUnit();
+ }
+
+ public Ejb3Deployment getDeployment()
+ {
+ return deployment;
+ }
+
+ public DependencyPolicy getDependencyPolicy()
+ {
+ return dependencyPolicy;
+ }
+
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return beanContainer.isAnnotationPresent(annotationType);
+ }
+
+ /**
+ * Is the method a business method of this container.
+ *
+ * @param businessMethod the method in question
+ * @return true if so, otherwise false
+ */
+ public boolean isBusinessMethod(Method businessMethod)
+ {
+ for(Class<?> businessInterface : getBusinessInterfaces())
+ {
+ for(Method method : businessInterface.getMethods())
+ {
+ if(isCallable(method, businessMethod))
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Can method definition method be used to call method other.
+ * For example if the method is defined in an interface it can be used to call a method
+ * in a class.
+ *
+ * @param method
+ * @param other
+ * @return
+ */
+ private static boolean isCallable(Method method, Method other)
+ {
+ if ((method.getDeclaringClass().isAssignableFrom(other.getDeclaringClass())) && (method.getName().equals(other.getName())))
+ {
+ if (!method.getReturnType().equals(other.getReturnType()))
+ return false;
+ Class<?>[] params1 = method.getParameterTypes();
+ Class<?>[] params2 = other.getParameterTypes();
+ if (params1.length == params2.length)
+ {
+ for (int i = 0; i < params1.length; i++)
+ {
+ if (params1[i] != params2[i])
+ return false;
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * introspects EJB container to find all dependencies
+ * and initialize any extra metadata.
+ * <p/>
+ * This must be called before container is registered with any microcontainer
+ *
+ * @param dependencyPolicy
+ */
+ public void processMetadata()
+ {
+ // XML must be done first so that any annotation overrides are initialized
+
+ // todo injection handlers should be pluggable from XML
+ Collection<InjectionHandler<Environment>> handlers = this.deployment.getHandlers();
+ if(handlers == null)
+ {
+ handlers = new ArrayList<InjectionHandler<Environment>>();
+ handlers.add(new EJBHandler<Environment>());
+ handlers.add(new DependsHandler<Environment>());
+ handlers.add(new JndiInjectHandler<Environment>());
+ handlers.add(new PersistenceContextHandler<Environment>());
+ handlers.add(new PersistenceUnitHandler<Environment>());
+ handlers.add(new ResourceHandler<Environment>());
+ handlers.add(new WebServiceRefHandler<Environment>());
+ }
+
+ ClassLoader old = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(classloader);
+ try
+ {
+ // EJB container's XML must be processed before interceptor's as it may override interceptor's references
+ for (InjectionHandler<Environment> handler : handlers) handler.loadXml(xml, this);
+
+ Map<AccessibleObject, Injector> tmp = InjectionUtil.processAnnotations(this, handlers, getBeanClass());
+ injectors.addAll(tmp.values());
+
+ /*
+ initialiseInterceptors();
+ */
+ for (Class<?> interceptorClass : beanContainer.getInterceptorClasses())
+ {
+ InterceptorMetaData interceptorMetaData = findInterceptor(interceptorClass);
+ if(interceptorMetaData == null)
+ continue;
+
+ for (InjectionHandler<Environment> handler : handlers)
+ {
+ handler.loadXml(interceptorMetaData, this);
+ }
+ }
+ for (Class<?> interceptorClass : beanContainer.getInterceptorClasses())
+ {
+ Map<AccessibleObject, Injector> injections = InjectionUtil.processAnnotations(this, handlers, interceptorClass);
+ InterceptorInjector injector = new InterceptorInjector(injections);
+ interceptorInjectors.put(interceptorClass, injector);
+ }
+
+ // When @WebServiceRef is not used service-ref won't be processed
+ // In this case we process them late
+ if(xml != null && xml.getServiceReferences() != null)
+ {
+ for(ServiceReferenceMetaData sref : xml.getServiceReferences())
+ {
+ // FIXME: fix WS metadata
+ /*
+ if(!sref.isProcessed())
+ {
+ try
+ {
+ String name = sref.getServiceRefName();
+ String encName = "env/" + name;
+ Context encCtx = getEnc();
+
+ UnifiedVirtualFile vfsRoot = new VirtualFileAdaptor(getRootFile());
+ new ServiceRefDelegate().bindServiceRef(encCtx, encName, vfsRoot, getClassloader(), sref);
+
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to bind service-ref", e);
+ }
+ }
+ */
+ }
+ }
+
+ // EJBTHREE-1025
+ this.checkForDuplicateLocalAndRemoteInterfaces();
+
+ for(Class<?> businessInterface : getBusinessInterfaces())
+ ((JBoss5DependencyPolicy) getDependencyPolicy()).addSupply(businessInterface);
+
+ Class localHomeInterface = ProxyFactoryHelper.getLocalHomeInterface(this);
+ if(localHomeInterface != null)
+ ((JBoss5DependencyPolicy) getDependencyPolicy()).addSupply(localHomeInterface);
+
+ Class remoteHomeInterface = ProxyFactoryHelper.getRemoteHomeInterface(this);
+ if(remoteHomeInterface != null)
+ ((JBoss5DependencyPolicy) getDependencyPolicy()).addSupply(remoteHomeInterface);
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader(old);
+ }
+ }
+
+ /**
+ * Ensures that the bean does not implement any one interface as both @Local and @Remote
+ *
+ * @throws EJBException If the bean does implements any one interface as both @Local and @Remote
+ */
+ protected void checkForDuplicateLocalAndRemoteInterfaces() throws EJBException
+ {
+ // Initialize issue used in Error Message
+ String issue = "(EJBTHREE-1025)";
+
+ // Obtain annotations, if found
+ Local local = (Local) resolveAnnotation(Local.class);
+ Remote remote = (Remote) resolveAnnotation(Remote.class);
+
+ // If either local or remote is unspecified, return safely - there can be no overlap
+ if (local == null || remote == null)
+ {
+ return;
+ }
+
+ // Ensure "value" attribute of both local and remote are not blank
+ if (local.value().length < 1 && local.value().length < 1)
+ {
+ throw new EJBException("Cannot designate both " + Local.class.getName() + " and " + Remote.class.getName()
+ + " annotations without 'value' attribute on " + this.getEjbName() + ". " + issue);
+ }
+
+ // Iterate through local and remote interfaces, ensuring any one interface is not being used for both local and remote exposure
+ for (Class<?> localClass : local.value())
+ {
+ for (Class<?> remoteClass : remote.value())
+ {
+ if (localClass.equals(remoteClass))
+ {
+ throw new EJBException("Cannot designate " + localClass.getName() + " as both " + Local.class.getName()
+ + " and " + Remote.class.getName() + " on " + this.getEjbName() + ". " + issue);
+ }
+ }
+ }
+ }
+
+ public JBossEnterpriseBeanMetaData getXml()
+ {
+ return xml;
+ }
+
+ public JBossAssemblyDescriptorMetaData getAssemblyDescriptor()
+ {
+ return assembly;
+ }
+
+ // FIXME: remove
+ @Deprecated
+ public void setAssemblyDescriptor(JBossAssemblyDescriptorMetaData assembly)
+ {
+ this.assembly = assembly;
+ }
+
+ protected abstract List<Class<?>> resolveBusinessInterfaces();
+
+ public InterceptorInfoRepository getInterceptorRepository()
+ {
+ throw new RuntimeException("invalid");
+ }
+
+ public Map<String, EncInjector> getEncInjectors()
+ {
+ return encInjectors;
+ }
+
+ public ClassLoader getClassloader()
+ {
+ return classloader;
+ }
+
+ public InitialContext getInitialContext()
+ {
+ try
+ {
+ return InitialContextFactory.getInitialContext(initialContextProperties);
+ }
+ catch (NamingException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public Map<String, Map<AccessibleObject, Injector>> getEncInjections()
+ {
+ return encInjections;
+ }
+
+ public Context getEnc()
+ {
+ if (enc == null)
+ {
+ enc = encFactory.getEnc(this);
+ }
+ return enc;
+ }
+
+ public Hashtable getInitialContextProperties()
+ {
+ return initialContextProperties;
+ }
+
+ public ObjectName getObjectName()
+ {
+ return objectName;
+ }
+
+ public String getEjbName()
+ {
+ return ejbName;
+ }
+
+ public String getBeanClassName()
+ {
+ return beanClassName;
+ }
+
+ public Class<?> getBeanClass()
+ {
+ return beanClass;
+ }
+
+ public Pool getPool()
+ {
+ return pool;
+ }
+
+ /**
+ * Gets the name of the cluster partition with which this container is
+ * associated. Not available until <code>EJBContainer.start()</code>
+ * is completed.
+ *
+ * @return the name of the cluster partition with which this container is
+ * associated, or <code>null</code> if the container is not clustered
+ */
+ public String getPartitionName()
+ {
+ if (partitionName == null)
+ this.findPartitionName();
+ return partitionName;
+ }
+
+ protected Object construct()
+ {
+ /*
+ try
+ {
+ return beanContainer.construct();
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new RuntimeException(e);
+ }
+ */
+ try
+ {
+ return beanClass.newInstance();
+ }
+ catch (InstantiationException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected void reinitialize()
+ {
+ // FIXME: is this correct?
+ beanContainer.reinitializeAdvisor();
+
+ /*
+ initClassMetaDataBindingsList();
+ adviceBindings.clear();
+ doesHaveAspects = false;
+ constructorInfos = null;
+ rebuildInterceptors();
+ */
+
+ bindEJBContext();
+
+ reinitialize = false;
+ }
+
+ public void create() throws Exception
+ {
+ // Lock until start()
+ this.getContainerLock().lock();
+ /*
+ initializeClassContainer();
+ for (int i = 0; i < constructors.length; i++)
+ {
+ if (constructors[i].getParameterTypes().length == 0)
+ {
+ defaultConstructorIndex = i;
+ break;
+ }
+ }
+ */
+ }
+
+ public final void start() throws Exception
+ {
+ this.lockedStart();
+
+ this.getContainerLock().unlock();
+ }
+
+ // Everything must be done in start to make sure all dependencies have been satisfied
+ protected void lockedStart() throws Exception
+ {
+ if (reinitialize)
+ reinitialize();
+
+ initializePool();
+
+ for (EncInjector injector : encInjectors.values())
+ {
+ injector.inject(this);
+ }
+
+ // creating of injector array should come after injection into ENC as an ENC injector
+ // may add additional injectors into the injector list. An example is an extended persistence
+ // context which mush be created and added to the SFSB bean context.
+
+ Injector[] injectors2 = injectors.toArray(new Injector[injectors.size()]);
+ if (pool != null) pool.setInjectors(injectors2);
+
+// createCallbackHandler();
+
+ // If we're clustered, find our partition name
+ findPartitionName();
+
+ log.info("STARTED EJB: " + beanClass.getName() + " ejbName: " + ejbName);
+ }
+
+ public final void stop() throws Exception
+ {
+ this.getContainerLock().lockInterruptibly();
+
+ this.lockedStop();
+ }
+
+ protected void lockedStop() throws Exception
+ {
+ reinitialize = true;
+
+ //encFactory.cleanupEnc(this);
+
+ if (pool != null)
+ {
+ pool.destroy();
+ pool = null;
+ }
+
+ injectors = new ArrayList<Injector>();
+ encInjectors = new HashMap<String, EncInjector>();
+
+ InitialContextFactory.close(enc, this.initialContextProperties);
+ enc = null;
+
+ log.info("STOPPED EJB: " + beanClass.getName() + " ejbName: " + ejbName);
+ }
+
+ public void destroy() throws Exception
+ {
+ encFactory.cleanupEnc(this);
+
+ // TODO: clean up BeanContainer?
+ //super.cleanup();
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T getSecurityManager(Class<T> type)
+ {
+ try
+ {
+ InitialContext ctx = getInitialContext();
+ SecurityDomain securityAnnotation = (SecurityDomain) resolveAnnotation(SecurityDomain.class);
+ if (securityAnnotation != null && securityAnnotation.value().length() > 0)
+ {
+ return (T) SecurityDomainManager.getSecurityManager(securityAnnotation.value(),ctx);
+ }
+ return null;
+ }
+ catch (NamingException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected Method getTimeoutCallback(NamedMethodMetaData timeoutMethodMetaData, Class<?> beanClass)
+ {
+ JBossEnterpriseBeanMetaData metaData = xml;
+ if(metaData != null)
+ {
+ if(timeoutMethodMetaData != null)
+ {
+ String methodName = timeoutMethodMetaData.getMethodName();
+ try
+ {
+ return beanClass.getMethod(methodName, Timer.class);
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new RuntimeException("No method " + methodName + "(javax.ejb.Timer timer) found on bean " + ejbName, e);
+ }
+ }
+ }
+
+ if(TimedObject.class.isAssignableFrom(beanClass))
+ {
+ try
+ {
+ return TimedObject.class.getMethod("ejbTimeout", Timer.class);
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ if(metaData != null)
+ {
+ // TODO: cross cutting concern
+ if(metaData.getEjbJarMetaData().isMetadataComplete())
+ return null;
+ }
+
+ for (Method method : beanClass.getMethods())
+ {
+ if (getAnnotation(Timeout.class, method) != null)
+ {
+ if (Modifier.isPublic(method.getModifiers()) &&
+ method.getReturnType().equals(Void.TYPE) &&
+ method.getParameterTypes().length == 1 &&
+ method.getParameterTypes()[0].equals(Timer.class))
+ {
+ // TODO: check for multiples
+ return method;
+ }
+ else
+ {
+ throw new RuntimeException("@Timeout method " + method + " must have signature: void <METHOD>(javax.ejb.Timer timer) (EJB3 18.2.2)");
+ }
+ }
+ }
+
+ return null;
+ }
+
+ protected void initializePool() throws Exception
+ {
+ org.jboss.ejb3.annotation.Pool poolAnnotation = getAnnotation(org.jboss.ejb3.annotation.Pool.class);
+ if (poolAnnotation == null)
+ throw new IllegalStateException("No pool annotation");
+ String registeredPoolName = poolAnnotation.value();
+ // EJBTHREE-1119
+ if(registeredPoolName==null||registeredPoolName.trim().equals(""))
+ {
+ // Default the Pool Implementation
+ registeredPoolName = PoolDefaults.POOL_IMPLEMENTATION_THREADLOCAL;
+ }
+ int maxSize = poolAnnotation.maxSize();
+ long timeout = poolAnnotation.timeout();
+ PoolFactoryRegistry registry = deployment.getPoolFactoryRegistry();
+ PoolFactory factory = registry.getPoolFactory(registeredPoolName);
+ pool = factory.createPool();
+ pool.initialize(this, maxSize, timeout);
+
+ resolveInjectors();
+ pool.setInjectors(injectors.toArray(new Injector[injectors.size()]));
+ }
+
+ /**
+ * Note that this method is a WIP.
+ *
+ * @param beanContext
+ * @param callbackAnnotationClass on of PostConstruct, PreDestroy, PostActivate or PrePassivate
+ */
+ protected void invokeCallback(BeanContext<?> beanContext, Class<? extends Annotation> callbackAnnotationClass)
+ {
+ try
+ {
+ // Do lifecycle callbacks
+ List<Class<?>> lifecycleInterceptorClasses = beanContainer.getInterceptorRegistry().getLifecycleInterceptorClasses();
+ Advisor advisor = getAdvisor();
+ Interceptor interceptors[] = LifecycleCallbacks.createLifecycleCallbackInterceptors(advisor, lifecycleInterceptorClasses, beanContext, callbackAnnotationClass);
+
+ Constructor<?> constructor = beanClass.getConstructor();
+ Object initargs[] = null;
+ ConstructionInvocation invocation = new ConstructionInvocation(interceptors, constructor, initargs);
+ invocation.setAdvisor(advisor);
+ invocation.setTargetObject(beanContext.getInstance());
+ invocation.invokeNext();
+ }
+ catch(Throwable t)
+ {
+ throw new RuntimeException(t);
+ }
+ }
+
+ public void invokePostConstruct(BeanContext<?> beanContext)
+ {
+ // FIXME: This is a dirty hack to notify AS EJBTimerService about what's going on
+ AllowedOperationsAssociation.pushInMethodFlag(AllowedOperationsAssociation.IN_EJB_CREATE);
+ try
+ {
+ invokeCallback(beanContext, PostConstruct.class);
+ }
+ finally
+ {
+ AllowedOperationsAssociation.popInMethodFlag();
+ }
+ }
+
+ @Deprecated
+ public void invokePostConstruct(BeanContext beanContext, Object[] params)
+ {
+ invokePostConstruct(beanContext);
+ }
+
+ public void invokePreDestroy(BeanContext beanContext)
+ {
+ // This is the correct way to destroy an instance, do
+ // not call invokeCallback here.
+ beanContainer.destroy(beanContext);
+ }
+
+ public void invokePostActivate(BeanContext beanContext)
+ {
+ throw new RuntimeException("PostActivate not implemented for container");
+ }
+
+ public void invokePrePassivate(BeanContext beanContext)
+ {
+ throw new RuntimeException("PrePassivate not implemented for container");
+ }
+
+ public void invokeInit(Object bean, Class[] initParameterTypes,
+ Object[] initParameterValues)
+ {
+ // do nothing, only useful on a stateful session bean
+ }
+
+ public static final String MANAGED_ENTITY_MANAGER_FACTORY = "ManagedEntityManagerFactory";
+
+ public static final String ENTITY_MANAGER_FACTORY = "EntityManagerFactory";
+
+ protected void resolveInjectors() throws Exception
+ {
+ pushEnc();
+ try
+ {
+ Thread.currentThread().setContextClassLoader(classloader);
+ try
+ {
+ Util.rebind(getEnc(), "UserTransaction", new UserTransactionImpl());
+ }
+ catch (NamingException e)
+ {
+ NamingException namingException = new NamingException("Could not bind user transaction for ejb name " + ejbName + " into JNDI under jndiName: " + getEnc().getNameInNamespace() + "/" + "UserTransaction");
+ namingException.setRootCause(e);
+ throw namingException;
+ }
+ try
+ {
+ Util.rebind(getEnc(), "TransactionSynchronizationRegistry", new LinkRef("java:TransactionSynchronizationRegistry"));
+ log.debug("Linked java:comp/TransactionSynchronizationRegistry to JNDI name: java:TransactionSynchronizationRegistry");
+ }
+ catch (NamingException e)
+ {
+ NamingException namingException = new NamingException("Could not bind TransactionSynchronizationRegistry for ejb name " + ejbName + " into JNDI under jndiName: " + getEnc().getNameInNamespace() + "/" + "TransactionSynchronizationRegistry");
+ namingException.setRootCause(e);
+ throw namingException;
+ }
+ }
+ finally
+ {
+ popEnc();
+ }
+ }
+
+ /*
+ protected void createCallbackHandler()
+ {
+ try
+ {
+ callbackHandler = new LifecycleInterceptorHandler(this,
+ getHandledCallbacks());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error creating callback handler for bean "
+ + beanClassName, e);
+ }
+ }
+ */
+
+ protected Class[] getHandledCallbacks()
+ {
+ return new Class[]
+ {PostConstruct.class, PreDestroy.class, Timeout.class};
+ }
+
+ // TODO: once injection is finalized this method will disappear
+ private InterceptorMetaData findInterceptor(Class<?> interceptorClass)
+ {
+ if(xml == null)
+ return null;
+ JBossMetaData ejbJarMetaData = xml.getEjbJarMetaData();
+ if(ejbJarMetaData == null)
+ return null;
+ InterceptorsMetaData interceptors = ejbJarMetaData.getInterceptors();
+ if(interceptors == null)
+ return null;
+ for(InterceptorMetaData interceptorMetaData : interceptors)
+ {
+ if(interceptorMetaData.getInterceptorClass().equals(interceptorClass.getName()))
+ return interceptorMetaData;
+ }
+ return null;
+ }
+
+ protected void findPartitionName()
+ {
+ Clustered clustered = (Clustered) getAnnotation(Clustered.class);
+ if (clustered == null)
+ {
+ partitionName = null;
+ return;
+ }
+
+ String value = clustered.partition();
+ try
+ {
+ String replacedValue = StringPropertyReplacer.replaceProperties(value);
+ if (value != replacedValue)
+ {
+ log.debug("Replacing @Clustered partition attribute " + value + " with " + replacedValue);
+ value = replacedValue;
+ }
+ }
+ catch (Exception e)
+ {
+ log.warn("Unable to replace @Clustered partition attribute " + value +
+ ". Caused by " + e.getClass() + " " + e.getMessage());
+ }
+
+ partitionName = value;
+ }
+
+ public <T> T getBusinessObject(BeanContext<?> beanContext, Class<T> businessInterface) throws IllegalStateException
+ {
+ throw new IllegalStateException("Not implemented");
+ }
+
+ public Object getInvokedBusinessInterface(BeanContext beanContext) throws IllegalStateException
+ {
+ throw new IllegalStateException("Not implemented");
+ }
+
+ protected Object getInvokedInterface(Method method)
+ {
+ Remote remoteAnnotation = (Remote) resolveAnnotation(Remote.class);
+ if (remoteAnnotation != null)
+ {
+ Class[] remotes = remoteAnnotation.value();
+ for (int i = 0; i < remotes.length; ++i)
+ {
+ try
+ {
+ remotes[i].getMethod(method.getName(), method.getParameterTypes());
+ return remotes[i];
+ }
+ catch (NoSuchMethodException e)
+ {
+ }
+ }
+ }
+
+ Local localAnnotation = (Local) resolveAnnotation(Local.class);
+ if (localAnnotation != null)
+ {
+ Class[] locals = localAnnotation.value();
+ for (int i = 0; i < locals.length; ++i)
+ {
+ Method[] interfaceMethods = locals[i].getMethods();
+ for (int j = 0; j < interfaceMethods.length; ++j)
+ {
+ if (interfaceMethods[j].equals(method))
+ return locals[i];
+ }
+ }
+ }
+
+ return null;
+ }
+
+ // todo these method overrides for aop are for performance reasons
+ private Class loadPublicAnnotation(String annotation)
+ {
+ try
+ {
+ Class ann = classloader.loadClass(annotation);
+ if (!ann.isAnnotation()) return null;
+ Retention retention = (Retention) ann.getAnnotation(Retention.class);
+ if (retention != null && retention.value() == RetentionPolicy.RUNTIME) return ann;
+
+ }
+ catch (ClassNotFoundException ignored)
+ {
+ }
+ return null;
+ }
+
+ /*
+ @Override
+ public boolean hasAnnotation(Class tgt, String annotation)
+ {
+ if (annotations.hasClassAnnotation(annotation)) return true;
+ if (tgt == null) return false;
+ try
+ {
+ Class ann = loadPublicAnnotation(annotation);
+ // it is metadata or CLASS annotation
+ if (ann == null) return AnnotationElement.isAnyAnnotationPresent(tgt, annotation);
+ return tgt.isAnnotationPresent(ann);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
+ }
+ }
+
+
+ @Override
+ public boolean hasAnnotation(Method m, String annotation)
+ {
+ if (annotations.hasAnnotation(m, annotation)) return true;
+ try
+ {
+ Class ann = loadPublicAnnotation(annotation);
+ // it is metadata or CLASS annotation
+ if (ann == null) return AnnotationElement.isAnyAnnotationPresent(m, annotation);
+ return m.isAnnotationPresent(ann);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
+ }
+ }
+
+ @Override
+ public boolean hasAnnotation(Field m, String annotation)
+ {
+ if (annotations.hasAnnotation(m, annotation)) return true;
+ try
+ {
+ Class ann = loadPublicAnnotation(annotation);
+ // it is metadata or CLASS annotation
+ if (ann == null) return AnnotationElement.isAnyAnnotationPresent(m, annotation);
+ return m.isAnnotationPresent(ann);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
+ }
+ }
+
+ @Override
+ public boolean hasAnnotation(Constructor m, String annotation)
+ {
+ if (annotations.hasAnnotation(m, annotation)) return true;
+ try
+ {
+ Class ann = loadPublicAnnotation(annotation);
+ // it is metadata or CLASS annotation
+ if (ann == null) return AnnotationElement.isAnyAnnotationPresent(m, annotation);
+ return m.isAnnotationPresent(ann);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e); //To change body of catch statement use Options | File Templates.
+ }
+ }
+ */
+
+ public Container resolveEjbContainer(String link, Class businessIntf)
+ {
+ return deployment.getEjbContainer(link, businessIntf);
+ }
+
+ public Container resolveEjbContainer(Class businessIntf) throws NameNotFoundException
+ {
+ return deployment.getEjbContainer(businessIntf);
+ }
+
+ public String resolveMessageDestination(String link)
+ {
+ return deployment.resolveMessageDestination(link);
+ }
+
+ public String resolvePersistenceUnitSupplier(String unitName)
+ {
+ return getDeployment().resolvePersistenceUnitSupplier(unitName);
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationType)
+ {
+ if (this.getAnnotations().isDisabled(annotationType))
+ return null;
+
+ return beanContainer.getAnnotation(annotationType);
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationType, Class<?> clazz)
+ {
+ return beanContainer.getAnnotation(clazz, annotationType);
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationType, Class<?> clazz, Method method)
+ {
+ return beanContainer.getAnnotation(annotationType, clazz, method);
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationType, Method method)
+ {
+ if (this.getAnnotations().isDisabled(method, annotationType))
+ return null;
+
+ return beanContainer.getAnnotation(annotationType, method);
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationType, Class<?> clazz, Field field)
+ {
+ return beanContainer.getAnnotation(annotationType, clazz, field);
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotationType, Field field)
+ {
+ return beanContainer.getAnnotation(annotationType, field);
+ }
+
+ /**
+ * @deprecated use getAnnotation
+ */
+ @SuppressWarnings("unchecked")
+ public Object resolveAnnotation(Class annotationType)
+ {
+ return getAnnotation(annotationType);
+ }
+
+ /**
+ * @deprecated use getAnnotation
+ */
+ @SuppressWarnings("unchecked")
+ public Object resolveAnnotation(Field field, Class annotationType)
+ {
+ return getAnnotation(annotationType, field);
+ }
+
+ /**
+ * @deprecated use getAnnotation
+ */
+ @SuppressWarnings("unchecked")
+ public Object resolveAnnotation(Method method, Class annotationType)
+ {
+ return getAnnotation(annotationType, method);
+ }
+
+ /**
+ * @deprecated this is going to be gone soon
+ */
+ @SuppressWarnings("unchecked")
+ public Object resolveAnnotation(Method m, Class[] annotationChoices)
+ {
+ Object value = null;
+ int i = 0;
+ while (value == null && i < annotationChoices.length){
+ value = resolveAnnotation(m, annotationChoices[i++]);
+ }
+
+ return value;
+ }
+
+ public String getIdentifier()
+ {
+ return getEjbName();
+ }
+
+ public String getDeploymentDescriptorType()
+ {
+ return "ejb-jar.xml";
+ }
+
+ public PersistenceUnitDeployment getPersistenceUnitDeployment(String unitName) throws NameNotFoundException
+ {
+ return deployment.getPersistenceUnitDeployment(unitName);
+ }
+
+ public String getEjbJndiName(Class businessInterface) throws NameNotFoundException
+ {
+ return deployment.getEjbJndiName(businessInterface);
+ }
+
+ public String getEjbJndiName(String link, Class businessInterface)
+ {
+ return deployment.getEjbJndiName(link, businessInterface);
+ }
+
+ public InvocationStatistics getInvokeStats()
+ {
+ return invokeStats;
+ }
+
+ @Deprecated
+ protected MethodInfo getMethodInfo(Method method)
+ {
+ long hash = MethodHashing.calculateHash(method);
+ MethodInfo info = getAdvisor().getMethodInfo(hash);
+ if (info == null)
+ {
+ throw new RuntimeException("Could not resolve beanClass method from proxy call: " + method.toString());
+ }
+ return info;
+ }
+
+ public boolean isClustered()
+ {
+ return false;
+ }
+
+ public JavaEEModule getModule()
+ {
+ return deployment;
+ }
+
+ public abstract boolean hasJNDIBinding(String jndiName);
+
+ /**
+ * After XML processing has been done this allows the container
+ * to further initialize the meta data.
+ */
+ public void instantiated()
+ {
+ this.businessInterfaces = resolveBusinessInterfaces();
+
+ // Before we start to process annotations, make sure we also have the ones from interceptors-aop.
+ // FIXME: because of the flaked life cycle of an EJBContainer (we add annotations after it's been
+ // constructed), we must reinitialize the whole thing.
+ beanContainer.reinitializeAdvisor();
+ }
+
+ public void setDirectContainer(DirectContainer<EJBContainer> container)
+ {
+ this.directContainer = container;
+ }
+
+ protected Method getNonBridgeMethod(Method bridgeMethod)
+ {
+ Class clazz = bridgeMethod.getDeclaringClass();
+ Method[] methods = clazz.getMethods();
+ for (Method method : methods)
+ {
+ if (!method.isBridge() && method.getParameterTypes().length == bridgeMethod.getParameterTypes().length)
+ {
+ return method;
+ }
+ }
+
+ return bridgeMethod;
+ }
+
+ public Lock getInvocationLock()
+ {
+ return this.containerLock.readLock();
+ }
+
+ private Lock getContainerLock()
+ {
+ return this.containerLock.writeLock();
+ }
+
+ public String toString()
+ {
+ return getObjectName().getCanonicalName();
+ }
+}
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,144 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.ejb3.stateful;
-
-import java.rmi.RemoteException;
-
-import javax.ejb.EJBException;
-import javax.ejb.SessionSynchronization;
-import javax.transaction.RollbackException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-
-import org.jboss.aop.advice.Interceptor;
-import org.jboss.aop.joinpoint.Invocation;
-import org.jboss.ejb3.tx.TxUtil;
-import org.jboss.logging.Logger;
-
-/**
- * Comment
- *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
- * @version $Revision$
- */
-public class SessionSynchronizationInterceptor implements Interceptor
-{
- private static final Logger log = Logger.getLogger(SessionSynchronizationInterceptor.class);
-
- private TransactionManager tm;
-
- public SessionSynchronizationInterceptor()
- {
- this.tm = TxUtil.getTransactionManager();
- }
-
- public String getName()
- {
- return null;
- }
-
- protected static class SFSBSessionSynchronization implements Synchronization
- {
- private StatefulBeanContext ctx;
-
- public SFSBSessionSynchronization(StatefulBeanContext ctx)
- {
- this.ctx = ctx;
- }
-
- public void beforeCompletion()
- {
- SessionSynchronization bean = (SessionSynchronization) ctx.getInstance();
- try
- {
- bean.beforeCompletion();
- }
- catch (RemoteException e)
- {
- throw new RuntimeException(e);
- }
- }
-
- public void afterCompletion(int status)
- {
- ctx.setTxSynchronized(false);
- SessionSynchronization bean = (SessionSynchronization) ctx.getInstance();
- try
- {
- if (status == Status.STATUS_COMMITTED)
- {
- bean.afterCompletion(true);
- }
- else
- {
- bean.afterCompletion(false);
- }
- }
- catch (RemoteException ignore)
- {
- }
- finally
- {
- StatefulContainer container = (StatefulContainer) ctx.getContainer();
- container.getCache().release(ctx);
- }
- }
- }
-
- protected void registerSessionSynchronization(StatefulBeanContext ctx) throws RemoteException, SystemException
- {
- if (ctx.isTxSynchronized()) return;
- Transaction tx = tm.getTransaction();
- if (tx == null) return;
- // tx.registerSynchronization will throw RollbackException, so no go
- if (tx.getStatus() == Status.STATUS_MARKED_ROLLBACK) return;
- SFSBSessionSynchronization synch = new SFSBSessionSynchronization(ctx);
- try
- {
- tx.registerSynchronization(synch);
- }
- catch(RollbackException e)
- {
- log.warn("Unexpected RollbackException from tx " + tx + " with status " + tx.getStatus());
- throw new EJBException(e);
- }
- // Notify StatefulInstanceInterceptor that the synch will take care of the release.
- ctx.setTxSynchronized(true);
- SessionSynchronization bean = (SessionSynchronization) ctx.getInstance();
- // EJB 3 4.3.7 paragraph 2
- bean.afterBegin();
- }
-
- public Object invoke(Invocation invocation) throws Throwable
- {
- StatefulContainerInvocation ejb = (StatefulContainerInvocation) invocation;
- StatefulBeanContext target = (StatefulBeanContext) ejb.getBeanContext();
- if (target.getInstance() instanceof SessionSynchronization)
- {
- registerSessionSynchronization(target);
- }
- return ejb.invokeNext();
- }
-}
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java (from rev 76505, projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/stateful/SessionSynchronizationInterceptor.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,152 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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.ejb3.stateful;
+
+import java.rmi.RemoteException;
+
+import javax.ejb.EJBException;
+import javax.ejb.SessionSynchronization;
+import javax.transaction.RollbackException;
+import javax.transaction.Status;
+import javax.transaction.Synchronization;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.Invocation;
+import org.jboss.ejb.AllowedOperationsAssociation;
+import org.jboss.ejb3.tx.TxUtil;
+import org.jboss.logging.Logger;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @version $Revision$
+ */
+public class SessionSynchronizationInterceptor implements Interceptor
+{
+ private static final Logger log = Logger.getLogger(SessionSynchronizationInterceptor.class);
+
+ private TransactionManager tm;
+
+ public SessionSynchronizationInterceptor()
+ {
+ this.tm = TxUtil.getTransactionManager();
+ }
+
+ public String getName()
+ {
+ return null;
+ }
+
+ protected static class SFSBSessionSynchronization implements Synchronization
+ {
+ private StatefulBeanContext ctx;
+
+ public SFSBSessionSynchronization(StatefulBeanContext ctx)
+ {
+ this.ctx = ctx;
+ }
+
+ public void beforeCompletion()
+ {
+ SessionSynchronization bean = (SessionSynchronization) ctx.getInstance();
+ try
+ {
+ // FIXME: This is a dirty hack to notify AS EJBTimerService about what's going on
+ AllowedOperationsAssociation.pushInMethodFlag(AllowedOperationsAssociation.IN_BEFORE_COMPLETION);
+
+ bean.beforeCompletion();
+ }
+ catch (RemoteException e)
+ {
+ throw new RuntimeException(e);
+ }
+ finally
+ {
+ AllowedOperationsAssociation.popInMethodFlag();
+ }
+ }
+
+ public void afterCompletion(int status)
+ {
+ ctx.setTxSynchronized(false);
+ SessionSynchronization bean = (SessionSynchronization) ctx.getInstance();
+ try
+ {
+ if (status == Status.STATUS_COMMITTED)
+ {
+ bean.afterCompletion(true);
+ }
+ else
+ {
+ bean.afterCompletion(false);
+ }
+ }
+ catch (RemoteException ignore)
+ {
+ }
+ finally
+ {
+ StatefulContainer container = (StatefulContainer) ctx.getContainer();
+ container.getCache().release(ctx);
+ }
+ }
+ }
+
+ protected void registerSessionSynchronization(StatefulBeanContext ctx) throws RemoteException, SystemException
+ {
+ if (ctx.isTxSynchronized()) return;
+ Transaction tx = tm.getTransaction();
+ if (tx == null) return;
+ // tx.registerSynchronization will throw RollbackException, so no go
+ if (tx.getStatus() == Status.STATUS_MARKED_ROLLBACK) return;
+ SFSBSessionSynchronization synch = new SFSBSessionSynchronization(ctx);
+ try
+ {
+ tx.registerSynchronization(synch);
+ }
+ catch(RollbackException e)
+ {
+ log.warn("Unexpected RollbackException from tx " + tx + " with status " + tx.getStatus());
+ throw new EJBException(e);
+ }
+ // Notify StatefulInstanceInterceptor that the synch will take care of the release.
+ ctx.setTxSynchronized(true);
+ SessionSynchronization bean = (SessionSynchronization) ctx.getInstance();
+ // EJB 3 4.3.7 paragraph 2
+ bean.afterBegin();
+ }
+
+ public Object invoke(Invocation invocation) throws Throwable
+ {
+ StatefulContainerInvocation ejb = (StatefulContainerInvocation) invocation;
+ StatefulBeanContext target = (StatefulBeanContext) ejb.getBeanContext();
+ if (target.getInstance() instanceof SessionSynchronization)
+ {
+ registerSessionSynchronization(target);
+ }
+ return ejb.invokeNext();
+ }
+}
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,123 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.ejb3.timerservice.jboss;
-
-import javax.ejb.TimerService;
-import javax.management.ObjectName;
-
-import org.jboss.ejb.txtimer.EJBTimerService;
-import org.jboss.ejb3.Container;
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.timerservice.TimedObjectInvoker;
-import org.jboss.ejb3.timerservice.TimerServiceFactory;
-import org.jboss.logging.Logger;
-import org.jboss.mx.util.MBeanProxyExt;
-import org.jboss.mx.util.MBeanServerLocator;
-
-/**
- * Factory to create timer services which use the JBoss EJB Timer Service.
- *
- * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
- */
-public class JBossTimerServiceFactory extends TimerServiceFactory
-{
- private static Logger log = Logger.getLogger(JBossTimerServiceFactory.class);
-
- /* (non-Javadoc)
- * @see org.jboss.ejb3.timerservice.TimerServiceFactory#createTimerService(javax.management.ObjectName, org.jboss.ejb3.timerservice.TimedObjectInvoker)
- */
- @Override
- public TimerService createTimerService(Container container, TimedObjectInvoker invoker)
- {
- TimerService timerService = null;
- try
- {
- EJBTimerService service = getEJBTimerService();
- TimerService delegate = service.createTimerService(container.getObjectName(), null, invoker);
- timerService = new TimerServiceFacade(container, delegate);
- }
- catch (Exception e)
- {
- //throw new EJBException("Could not create timer service", e);
- if (log.isTraceEnabled())
- {
- log.trace("Unable to initialize timer service", e);
- }
- else
- {
- log.trace("Unable to initialize timer service");
- }
- }
- return timerService;
- }
-
- protected EJBTimerService getEJBTimerService()
- {
- return (EJBTimerService) MBeanProxyExt.create(EJBTimerService.class, EJBTimerService.OBJECT_NAME, MBeanServerLocator.locateJBoss());
- }
-
- /* (non-Javadoc)
- * @see org.jboss.ejb3.timerservice.TimerServiceFactory#removeTimerService(javax.ejb.TimerService)
- */
- @Override
- public void removeTimerService(TimerService timerService)
- {
- removeTimerService(((TimerServiceFacade) timerService).getContainerId());
- }
-
- protected void removeTimerService(ObjectName containerId)
- {
- try
- {
- EJBTimerService service = getEJBTimerService();
- service.removeTimerService(containerId, true);
- }
- catch (Exception e)
- {
- //throw new EJBException("Could not remove timer service", e);
- if (log.isTraceEnabled())
- {
- log.trace("Unable to initialize timer service", e);
- }
- else
- {
- log.trace("Unable to initialize timer service");
- }
- }
- }
-
- public void restoreTimerService(TimerService aTimerService)
- {
- if (aTimerService == null)
- {
- log.warn("TIMER SERVICE IS NOT INSTALLED");
- return;
- }
- TimerServiceFacade timerService = (TimerServiceFacade) aTimerService;
- EJBContainer container = timerService.getContainer();
- // FIXME: do not assume that a TimedObjectInvoker is an EJBContainer
- ClassLoader loader = container.getClassloader();
-
- getEJBTimerService().restoreTimers(timerService.getContainerId(), loader);
- }
-}
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java (from rev 76507, projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/JBossTimerServiceFactory.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,135 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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.ejb3.timerservice.jboss;
+
+import javax.ejb.TimerService;
+import javax.management.ObjectName;
+
+import org.jboss.ejb.AllowedOperationsAssociation;
+import org.jboss.ejb.txtimer.EJBTimerService;
+import org.jboss.ejb3.Container;
+import org.jboss.ejb3.EJBContainer;
+import org.jboss.ejb3.timerservice.TimedObjectInvoker;
+import org.jboss.ejb3.timerservice.TimerServiceFactory;
+import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.MBeanServerLocator;
+
+/**
+ * Factory to create timer services which use the JBoss EJB Timer Service.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class JBossTimerServiceFactory extends TimerServiceFactory
+{
+ private static Logger log = Logger.getLogger(JBossTimerServiceFactory.class);
+
+ /* (non-Javadoc)
+ * @see org.jboss.ejb3.timerservice.TimerServiceFactory#createTimerService(javax.management.ObjectName, org.jboss.ejb3.timerservice.TimedObjectInvoker)
+ */
+ @Override
+ public TimerService createTimerService(Container container, TimedObjectInvoker invoker)
+ {
+ TimerService timerService = null;
+ try
+ {
+ EJBTimerService service = getEJBTimerService();
+ TimerService delegate = service.createTimerService(container.getObjectName(), null, invoker);
+ timerService = new TimerServiceFacade(container, delegate);
+ }
+ catch (Exception e)
+ {
+ //throw new EJBException("Could not create timer service", e);
+ if (log.isTraceEnabled())
+ {
+ log.trace("Unable to initialize timer service", e);
+ }
+ else
+ {
+ log.trace("Unable to initialize timer service");
+ }
+ }
+ return timerService;
+ }
+
+ protected EJBTimerService getEJBTimerService()
+ {
+ return (EJBTimerService) MBeanProxyExt.create(EJBTimerService.class, EJBTimerService.OBJECT_NAME, MBeanServerLocator.locateJBoss());
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.ejb3.timerservice.TimerServiceFactory#removeTimerService(javax.ejb.TimerService)
+ */
+ @Override
+ public void removeTimerService(TimerService timerService)
+ {
+ removeTimerService(((TimerServiceFacade) timerService).getContainerId());
+ }
+
+ protected void removeTimerService(ObjectName containerId)
+ {
+ try
+ {
+ EJBTimerService service = getEJBTimerService();
+ service.removeTimerService(containerId, true);
+ }
+ catch (Exception e)
+ {
+ //throw new EJBException("Could not remove timer service", e);
+ if (log.isTraceEnabled())
+ {
+ log.trace("Unable to initialize timer service", e);
+ }
+ else
+ {
+ log.trace("Unable to initialize timer service");
+ }
+ }
+ }
+
+ public void restoreTimerService(TimerService aTimerService)
+ {
+ if (aTimerService == null)
+ {
+ log.warn("TIMER SERVICE IS NOT INSTALLED");
+ return;
+ }
+ TimerServiceFacade timerService = (TimerServiceFacade) aTimerService;
+ EJBContainer container = timerService.getContainer();
+ // FIXME: do not assume that a TimedObjectInvoker is an EJBContainer
+ ClassLoader loader = container.getClassloader();
+
+ // FIXME: A hack to circumvent the check in TimerServiceFacade
+ // In AS itself (/EJB2) the container has an unsecured timer service association
+ // see org.jboss.ejb.Container.getTimerService(Object pKey)
+ AllowedOperationsAssociation.pushInMethodFlag(AllowedOperationsAssociation.IN_BUSINESS_METHOD);
+ try
+ {
+ getEJBTimerService().restoreTimers(timerService.getContainerId(), loader);
+ }
+ finally
+ {
+ AllowedOperationsAssociation.popInMethodFlag();
+ }
+ }
+}
Deleted: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java 2008-07-31 08:23:55 UTC (rev 76502)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -1,88 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.ejb3.timerservice.jboss;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Date;
-
-import javax.ejb.EJBException;
-import javax.ejb.Timer;
-import javax.ejb.TimerService;
-import javax.management.ObjectName;
-
-import org.jboss.ejb3.Container;
-import org.jboss.ejb3.EJBContainer;
-
-/**
- * Comment
- *
- * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: $
- */
-public class TimerServiceFacade implements TimerService
-{
- private TimerService delegate;
-
- private Container container;
-
- protected TimerServiceFacade(Container container, TimerService delegate)
- {
- this.container = container;
- this.delegate = delegate;
- }
-
- public Timer createTimer(Date initialExpiration, long intervalDuration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
- {
- return delegate.createTimer(initialExpiration, intervalDuration, info);
- }
-
- public Timer createTimer(Date expiration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
- {
- return delegate.createTimer(expiration, info);
- }
-
- public Timer createTimer(long initialDuration, long intervalDuration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
- {
- return delegate.createTimer(initialDuration, intervalDuration, info);
- }
-
- public Timer createTimer(long duration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
- {
- return delegate.createTimer(duration, info);
- }
-
- protected EJBContainer getContainer()
- {
- return (EJBContainer) container;
- }
-
- protected ObjectName getContainerId()
- {
- return container.getObjectName();
- }
-
- public Collection getTimers() throws IllegalStateException, EJBException
- {
- return delegate.getTimers();
- }
-}
Copied: projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java (from rev 76507, projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-core-0.1.9/src/main/java/org/jboss/ejb3/timerservice/jboss/TimerServiceFacade.java 2008-07-31 13:58:01 UTC (rev 76528)
@@ -0,0 +1,104 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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.ejb3.timerservice.jboss;
+
+import static org.jboss.ejb.AllowedOperationsFlags.IN_BUSINESS_METHOD;
+import static org.jboss.ejb.AllowedOperationsFlags.IN_EJB_TIMEOUT;
+import static org.jboss.ejb.AllowedOperationsFlags.IN_SERVICE_ENDPOINT_METHOD;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.Date;
+
+import javax.ejb.EJBException;
+import javax.ejb.Timer;
+import javax.ejb.TimerService;
+import javax.management.ObjectName;
+
+import org.jboss.ejb.AllowedOperationsAssociation;
+import org.jboss.ejb3.Container;
+import org.jboss.ejb3.EJBContainer;
+
+/**
+ * Holds the association with the container, without exposing it.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class TimerServiceFacade implements TimerService
+{
+ private TimerService delegate;
+
+ private Container container;
+
+ protected TimerServiceFacade(Container container, TimerService delegate)
+ {
+ this.container = container;
+ this.delegate = delegate;
+ }
+
+ private void assertAllowedIn(String timerMethod)
+ {
+ // TODO: This isn't handled by the AS timer service itself
+ AllowedOperationsAssociation.assertAllowedIn(timerMethod, IN_BUSINESS_METHOD | IN_EJB_TIMEOUT | IN_SERVICE_ENDPOINT_METHOD);
+ }
+
+ public Timer createTimer(Date initialExpiration, long intervalDuration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
+ {
+ assertAllowedIn("TimerService.createTimer");
+ return delegate.createTimer(initialExpiration, intervalDuration, info);
+ }
+
+ public Timer createTimer(Date expiration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
+ {
+ assertAllowedIn("TimerService.createTimer");
+ return delegate.createTimer(expiration, info);
+ }
+
+ public Timer createTimer(long initialDuration, long intervalDuration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
+ {
+ assertAllowedIn("TimerService.createTimer");
+ return delegate.createTimer(initialDuration, intervalDuration, info);
+ }
+
+ public Timer createTimer(long duration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException
+ {
+ assertAllowedIn("TimerService.createTimer");
+ return delegate.createTimer(duration, info);
+ }
+
+ protected EJBContainer getContainer()
+ {
+ return (EJBContainer) container;
+ }
+
+ protected ObjectName getContainerId()
+ {
+ return container.getObjectName();
+ }
+
+ public Collection<?> getTimers() throws IllegalStateException, EJBException
+ {
+ assertAllowedIn("TimerService.getTimers");
+ return delegate.getTimers();
+ }
+}
More information about the jboss-cvs-commits
mailing list