[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