[jboss-cvs] JBossAS SVN: r109340 - in trunk: component-matrix and 28 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 15 10:58:03 EST 2010


Author: jaikiran
Date: 2010-11-15 10:58:01 -0500 (Mon, 15 Nov 2010)
New Revision: 109340

Added:
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java
   trunk/server/src/etc/deployers/switchboard-clustered-jboss-beans.xml
   trunk/server/src/etc/deployers/switchboard-jboss-beans.xml
   trunk/server/src/main/java/org/jboss/as/switchboard/
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java
   trunk/server/src/main/java/org/jboss/deployment/Ejb2xComponentDeployer.java
   trunk/testsuite/src/resources/refs/resources/hornetq-jms.xml
   trunk/testsuite/src/resources/web/html/jbosstest/WEB-INF/jboss-service.xml
   trunk/testsuite/src/resources/web/jsfinjection/WEB-INF/jboss-service.xml
   trunk/testsuite/src/resources/web/simple-xmlonly/jboss-service.xml
   trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/ServiceRefResourceProvider.java
   trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/WebServiceContextResourceProvider.java
Removed:
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/
   trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java
   trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java
Modified:
   trunk/build/build.xml
   trunk/component-matrix/pom.xml
   trunk/depchain/pom.xml
   trunk/ejb3/src/resources/META-INF/ejb3-as-deployers-jboss-beans.xml
   trunk/server/pom.xml
   trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml
   trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java
   trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployment.java
   trunk/testsuite/build.xml
   trunk/testsuite/imports/sections/jsf.xml
   trunk/testsuite/imports/sections/web.xml
   trunk/testsuite/src/main/org/jboss/test/jsf/managed/ENCAnnotationsManagedBean.java
   trunk/testsuite/src/main/org/jboss/test/jsf/managed/SimpleManagedBean.java
   trunk/testsuite/src/main/org/jboss/test/web/servlets/ENCTester.java
   trunk/testsuite/src/main/org/jboss/test/web/servlets/StandaloneENCAnnotationsServlet.java
   trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java
   trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java
   trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java
   trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/injection/WebResourceHandler.java
   trunk/webservices/pom.xml
   trunk/webservices/src/resources/jbossws-jboss.deployer/META-INF/stack-agnostic-jboss-beans.xml
Log:
JBAS-8548 Merge switchboard-integration branch into AS trunk

Modified: trunk/build/build.xml
===================================================================
--- trunk/build/build.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/build/build.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -250,6 +250,11 @@
     <copy tofile="${install.default}/deployers/clustering-deployer-jboss-beans.xml"
           file="${project.root}/cluster/target/etc/clustering-deployer-jboss-beans-non-clustered.xml"/>
 
+	<!-- Use switchboard-clustered-jboss-beans.xml in all -->
+	<delete file="${install.all}/deployers/switchboard-jboss-beans.xml"/>
+      <!-- Use switchboard-jboss-beans.xml in default -->
+	<delete file="${install.default}/deployers/switchboard-clustered-jboss-beans.xml"/>
+
     <!-- Build server/minimal manually -->
     <mkdir dir="${install.minimal.deploy}"/>
     <mkdir dir="${install.minimal.deployers}"/>
@@ -315,6 +320,7 @@
         <include name="jbossweb.deployer/**"/>
         <include name="metadata-deployer-jboss-beans.xml"/>
         <include name="security-deployer-jboss-beans.xml"/>
+		<include name="switchboard-jboss-beans.xml"/>
         <include name="jboss-threads.deployer/**"/>
         <include name="jboss-logging.deployer/**"/>
         <exclude name="jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml"/>
@@ -933,7 +939,6 @@
       </fileset>
     </copy>
 
-
     <!-- Copy the "all" configuration files -->
     <mkdir dir="${install.server}/all/conf"/>
     <copy todir="${install.server}/all/conf" filtering="no">
@@ -952,7 +957,8 @@
       </fileset>
     </copy>
   </target>
-
+  
+	
   <!-- ========= -->
   <!-- Connector -->
   <!-- ========= -->
@@ -2119,6 +2125,15 @@
       <fileset refid="org.jboss.shrinkwrap:shrinkwrap-impl-base:jar" />
       <fileset refid="org.jboss.shrinkwrap:shrinkwrap-spi:jar" />
       <fileset refid="org.jboss.shrinkwrap:shrinkwrap-extension-vfs3:jar" />
+
+      <!-- SwitchBoard -->
+      <fileset refid="org.jboss.switchboard:jboss-switchboard-spi:jar"/>
+      <fileset refid="org.jboss.switchboard:jboss-switchboard-impl:jar"/>
+      <fileset refid="org.jboss.switchboard:jboss-switchboard-mc-spi:jar"/>
+      <fileset refid="org.jboss.switchboard:jboss-switchboard-mc-impl:jar"/>
+      <fileset refid="org.jboss.switchboard:jboss-switchboard-javaee:jar"/>
+      <fileset refid="org.jboss.switchboard:jboss-switchboard-jbmeta-javaee:jar"/>
+    	
       <fileset refid="org.hibernate:hibernate-core:jar"/>
       <fileset refid="org.hibernate:hibernate-commons-annotations:jar"/>
       <fileset refid="org.hibernate:hibernate-entitymanager:jar"/>
@@ -2131,7 +2146,10 @@
       <fileset refid="org.jboss.injection:jboss-resolver-impl:jar"/>
       <fileset refid="org.jboss.injection:jboss-switchboard-metadata:jar"/>
       <fileset refid="org.jboss.injection:jboss-injection-switchboard-deployer:jar"/>
-
+        <fileset refid="org.jboss.injection:jboss-injection-injector:jar"/>        
+        <fileset refid="org.jboss.injection:jboss-injection-mc-impl:jar"/>
+        <fileset refid="org.jboss.injection:jboss-injection-manager:jar"/>
+            
       <fileset refid="org.jboss.jpa:jboss-jpa-deployers:jar"/>
       <fileset refid="org.jboss.jpa:jboss-jpa-vfs3:jar"/>
       <fileset refid="org.jboss.jpa:jboss-jpa-impl:jar"/>
@@ -2595,6 +2613,15 @@
   		<fileset refid="org.jboss.jpa:jboss-jpa-mcint:jar"/>
   		<mapper refid="remove-versions"/>
   	</copy>
+
+	<!-- Copy jboss-injection jboss-beans.xml to deployers folder -->
+	<unjar src="${org.jboss.injection:jboss-injection-mc-impl:jar}" dest="${install.all.deployers}">
+		<patternset>
+      		<include name="META-INF/jboss-injection-jboss-beans.xml"/>
+		</patternset>
+	    <mapper type="flatten"/> 
+	</unjar>
+      
     <!-- End varia stuff -->
   </target>
 

Modified: trunk/component-matrix/pom.xml
===================================================================
--- trunk/component-matrix/pom.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/component-matrix/pom.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -49,11 +49,12 @@
     <version.javax.faces>2.0.3-b05</version.javax.faces>
     <version.javax.validation>1.0.0.GA</version.javax.validation>
     <version.jaxws-httpserver-httpspi>1.0.0.GA</version.jaxws-httpserver-httpspi>
+    <version.jboss.injection>1.0.0-alpha-2</version.jboss.injection>
     <version.jboss.jaxr>2.0.1</version.jboss.jaxr>
     <version.jboss.jbossts>4.13.1.Final</version.jboss.jbossts>
     <version.jboss.jbossws-native>3.4.0.CR3</version.jboss.jbossws-native>
     <version.jboss.jbossws-cxf>3.4.0.CR3</version.jboss.jbossws-cxf>
-    <version.jboss.jbossws-common>1.4.0.CR3</version.jboss.jbossws-common>
+    <version.jboss.jbossws-common>1.4.0.CR3.SP1</version.jboss.jbossws-common>
     <version.jboss.jbossws-framework>3.4.0.CR3</version.jboss.jbossws-framework>
     <version.jboss.jbossws-spi>1.4.0.CR3</version.jboss.jbossws-spi>
     <version.jboss.jms-integration-tests>1.0.1.GA</version.jboss.jms-integration-tests>
@@ -132,6 +133,7 @@
     <version.org.jboss.shrinkwrap>1.0.0-alpha-11</version.org.jboss.shrinkwrap>
     <version.org.jboss.slf4j>1.0.2.GA</version.org.jboss.slf4j>
     <version.org.jboss.stdio>1.0.0.CR3</version.org.jboss.stdio>
+    <version.org.jboss.switchboard.depchain>1.0.0-alpha-8</version.org.jboss.switchboard.depchain>
     <version.org.jboss.threads>2.0.0.CR7</version.org.jboss.threads>
     <version.org.jboss.threads-metadata>2.0.0.CR4</version.org.jboss.threads-metadata>
     <version.org.jboss.vfs>3.0.0.CR5</version.org.jboss.vfs>
@@ -1330,6 +1332,24 @@
         </exclusions>
       </dependency>
 
+      <dependency>
+        <groupId>org.jboss.switchboard.depchain</groupId>
+        <artifactId>jboss-switchboard-depchain-as6</artifactId>
+        <version>${version.org.jboss.switchboard.depchain}</version>
+        <type>pom</type>
+        <scope>import</scope>
+        <exclusions>
+          <exclusion>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging-spi</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging-log4j</artifactId>
+          </exclusion>
+        </exclusions>
+      </dependency>
+
         <dependency>
           <groupId>org.jboss.jbossts</groupId>
           <artifactId>jbossjts</artifactId>
@@ -2060,7 +2080,25 @@
          <artifactId>jboss-switchboard-metadata</artifactId>
          <version>${version.org.jboss.injection}</version>
       </dependency>
+      
+        <dependency>
+            <groupId>org.jboss.injection</groupId>
+            <artifactId>jboss-injection-manager</artifactId>        
+            <version>${version.jboss.injection}</version>
+        </dependency>
 
+        <dependency>
+            <groupId>org.jboss.injection</groupId>
+            <artifactId>jboss-injection-injector</artifactId>        
+            <version>${version.jboss.injection}</version>
+        </dependency>
+      
+        <dependency>
+            <groupId>org.jboss.injection</groupId>
+            <artifactId>jboss-injection-mc-impl</artifactId>        
+            <version>${version.jboss.injection}</version>
+        </dependency>
+
       <dependency>
         <groupId>org.jboss</groupId>
         <artifactId>jboss-mdr</artifactId>

Modified: trunk/depchain/pom.xml
===================================================================
--- trunk/depchain/pom.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/depchain/pom.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -853,6 +853,19 @@
       </exclusions>
     </dependency>
     <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-injector</artifactId>
+    </dependency>
+    <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-mc-impl</artifactId>
+    </dependency>
+    <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-manager</artifactId>
+    </dependency>
+    
+    <dependency>
       <groupId>org.jboss.spec.javax.interceptor</groupId>
       <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
     </dependency>
@@ -1039,6 +1052,23 @@
       <artifactId>jboss-stdio</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.jboss.switchboard.depchain</groupId>
+      <artifactId>jboss-switchboard-depchain-as6</artifactId>
+      <type>pom</type>
+      <version>${version.org.jboss.switchboard.depchain}</version>
+      <exclusions>
+          <exclusion>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging-spi</artifactId>
+          </exclusion>
+          <exclusion>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging-log4j</artifactId>
+          </exclusion>
+      </exclusions>
+      
+    </dependency>
+    <dependency>
       <groupId>org.jboss.threads</groupId>
       <artifactId>jboss-threads</artifactId>
     </dependency>

Copied: trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard (from rev 109338, branches/switchboard-integration/ejb3/src/main/java/org/jboss/as/ejb3/switchboard)

Copied: trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource (from rev 109338, branches/switchboard-integration/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource)

Copied: trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider (from rev 109338, branches/switchboard-integration/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider)

Deleted: trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java
===================================================================
--- branches/switchboard-integration/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java	2010-11-15 13:33:02 UTC (rev 109338)
+++ trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -1,111 +0,0 @@
-/**
- * 
- */
-package org.jboss.as.ejb3.switchboard.resource.provider;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.ejb3.resolvers.MessageDestinationReferenceResolver;
-import org.jboss.logging.Logger;
-import org.jboss.switchboard.impl.resource.LinkRefResource;
-import org.jboss.switchboard.javaee.jboss.environment.JBossMessageDestinationRefType;
-import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
-import org.jboss.switchboard.spi.Resource;
-
-/**
- * A {@link MCBasedResourceProvider} for processing message-destination-ref
- * references
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class MessageDestinationReferenceResourceProvider implements MCBasedResourceProvider<JBossMessageDestinationRefType>
-{
-
-   /**
-    * Logger
-    */
-   private static Logger logger = Logger.getLogger(MessageDestinationReferenceResourceProvider.class);
-   
-   /**
-    * A {@link MessageDestinationReferenceResolver} will be used to resolve a jndi-name out of 
-    * the message-destination link, used in message-destination-ref 
-    */
-   private MessageDestinationReferenceResolver messageDestinationResolver;
-   
-   /**
-    * {@inheritDoc}
-    */
-   public Class<JBossMessageDestinationRefType> getEnvironmentEntryType()
-   {
-      return JBossMessageDestinationRefType.class;
-   }
-
-   /**
-    * Processes a message-destination-ref and returns a {@link Resource} corresponding to that
-    * reference.
-    * If a {@link Resource} cannot be created out of the message-destination-ref, then this
-    * method throws a {@link RuntimeException}
-    */
-   public Resource provide(DeploymentUnit unit, JBossMessageDestinationRefType messageDestRef)
-   {
-      // first check lookup name
-      String lookupName = messageDestRef.getLookupName();
-      if (lookupName != null && !lookupName.trim().isEmpty())
-      {
-         return new LinkRefResource(lookupName);
-      }
-
-      // now check mapped name
-      String mappedName = messageDestRef.getMappedName();
-      if (mappedName != null && !mappedName.trim().isEmpty())
-      {
-         return new LinkRefResource(mappedName);
-      }
-      
-      // now check (JBoss specific) jndi name!
-      String jndiName = messageDestRef.getJNDIName();
-      if (jndiName != null && !jndiName.trim().isEmpty())
-      {
-         return new LinkRefResource(jndiName);
-      }
-      
-      // Now check if a message-destination link is specified.
-      // The "link" itself is a logical name to the destination, so we'll
-      // use a resolver to resolve a jndi name out of it.
-      // Note that a message-destination can *only* be specified in a ejb-jar deployment
-      // (see Java EE6 spec, EE.5.9.2), so the message-destination link resolver 
-      // needs to be provided by some JBoss EJB3 container component
-      String messageDestLink = messageDestRef.getMessageDestinationLink();
-      if (messageDestLink != null && !messageDestLink.trim().isEmpty())
-      {
-         if (this.messageDestinationResolver == null)
-         {
-            logger.warn("Cannot resolve message-destination link: " + messageDestLink
-                  + " for message-destination-ref: " + messageDestRef.getName() + " due to absence of a "
-                  + MessageDestinationReferenceResolver.class.getName());
-         }
-         else
-         {
-            String resolvedJNDIName = this.messageDestinationResolver.resolveMessageDestinationJndiName(unit, messageDestLink);
-            logger.debug("Resolved jndi-name: " + resolvedJNDIName + " for message-destination link: "
-                  + messageDestLink + " in message-destination-ref: " + messageDestRef.getName());
-            if (resolvedJNDIName != null && !resolvedJNDIName.trim().isEmpty())
-            {
-               return new LinkRefResource(resolvedJNDIName);
-            }
-            
-         }
-      }
-      throw new RuntimeException("Cannot provide a resource for message-destination-ref: " + messageDestRef.getName() + " in unit: " + unit);
-   }
-
-   /**
-    * Sets the {@link MessageDestinationReferenceResolver}, which will be used to resolve the jndi-name
-    * out of a message-destination link, used in the message-destination-ref
-    * @param resolver
-    */
-   public void setMessageDestinationLinkResolver(MessageDestinationReferenceResolver resolver)
-   {
-      this.messageDestinationResolver = resolver;
-   }
-}

Copied: trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java (from rev 109338, branches/switchboard-integration/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java)
===================================================================
--- trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java	                        (rev 0)
+++ trunk/ejb3/src/main/java/org/jboss/as/ejb3/switchboard/resource/provider/MessageDestinationReferenceResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,111 @@
+/**
+ * 
+ */
+package org.jboss.as.ejb3.switchboard.resource.provider;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.ejb3.resolvers.MessageDestinationReferenceResolver;
+import org.jboss.logging.Logger;
+import org.jboss.switchboard.impl.resource.LinkRefResource;
+import org.jboss.switchboard.javaee.jboss.environment.JBossMessageDestinationRefType;
+import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
+import org.jboss.switchboard.spi.Resource;
+
+/**
+ * A {@link MCBasedResourceProvider} for processing message-destination-ref
+ * references
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class MessageDestinationReferenceResourceProvider implements MCBasedResourceProvider<JBossMessageDestinationRefType>
+{
+
+   /**
+    * Logger
+    */
+   private static Logger logger = Logger.getLogger(MessageDestinationReferenceResourceProvider.class);
+   
+   /**
+    * A {@link MessageDestinationReferenceResolver} will be used to resolve a jndi-name out of 
+    * the message-destination link, used in message-destination-ref 
+    */
+   private MessageDestinationReferenceResolver messageDestinationResolver;
+   
+   /**
+    * {@inheritDoc}
+    */
+   public Class<JBossMessageDestinationRefType> getEnvironmentEntryType()
+   {
+      return JBossMessageDestinationRefType.class;
+   }
+
+   /**
+    * Processes a message-destination-ref and returns a {@link Resource} corresponding to that
+    * reference.
+    * If a {@link Resource} cannot be created out of the message-destination-ref, then this
+    * method throws a {@link RuntimeException}
+    */
+   public Resource provide(DeploymentUnit unit, JBossMessageDestinationRefType messageDestRef)
+   {
+      // first check lookup name
+      String lookupName = messageDestRef.getLookupName();
+      if (lookupName != null && !lookupName.trim().isEmpty())
+      {
+         return new LinkRefResource(lookupName);
+      }
+
+      // now check mapped name
+      String mappedName = messageDestRef.getMappedName();
+      if (mappedName != null && !mappedName.trim().isEmpty())
+      {
+         return new LinkRefResource(mappedName);
+      }
+      
+      // now check (JBoss specific) jndi name!
+      String jndiName = messageDestRef.getJNDIName();
+      if (jndiName != null && !jndiName.trim().isEmpty())
+      {
+         return new LinkRefResource(jndiName);
+      }
+      
+      // Now check if a message-destination link is specified.
+      // The "link" itself is a logical name to the destination, so we'll
+      // use a resolver to resolve a jndi name out of it.
+      // Note that a message-destination can *only* be specified in a ejb-jar deployment
+      // (see Java EE6 spec, EE.5.9.2), so the message-destination link resolver 
+      // needs to be provided by some JBoss EJB3 container component
+      String messageDestLink = messageDestRef.getMessageDestinationLink();
+      if (messageDestLink != null && !messageDestLink.trim().isEmpty())
+      {
+         if (this.messageDestinationResolver == null)
+         {
+            logger.warn("Cannot resolve message-destination link: " + messageDestLink
+                  + " for message-destination-ref: " + messageDestRef.getName() + " due to absence of a "
+                  + MessageDestinationReferenceResolver.class.getName());
+         }
+         else
+         {
+            String resolvedJNDIName = this.messageDestinationResolver.resolveMessageDestinationJndiName(unit, messageDestLink);
+            logger.debug("Resolved jndi-name: " + resolvedJNDIName + " for message-destination link: "
+                  + messageDestLink + " in message-destination-ref: " + messageDestRef.getName());
+            if (resolvedJNDIName != null && !resolvedJNDIName.trim().isEmpty())
+            {
+               return new LinkRefResource(resolvedJNDIName);
+            }
+            
+         }
+      }
+      throw new RuntimeException("Cannot provide a resource for message-destination-ref: " + messageDestRef.getName() + " in unit: " + unit);
+   }
+
+   /**
+    * Sets the {@link MessageDestinationReferenceResolver}, which will be used to resolve the jndi-name
+    * out of a message-destination link, used in the message-destination-ref
+    * @param resolver
+    */
+   public void setMessageDestinationLinkResolver(MessageDestinationReferenceResolver resolver)
+   {
+      this.messageDestinationResolver = resolver;
+   }
+}

Modified: trunk/ejb3/src/resources/META-INF/ejb3-as-deployers-jboss-beans.xml
===================================================================
--- trunk/ejb3/src/resources/META-INF/ejb3-as-deployers-jboss-beans.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/ejb3/src/resources/META-INF/ejb3-as-deployers-jboss-beans.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -312,6 +312,11 @@
     <!-- Responsible for creating the piece used to create EJB3 Bean Instances -->
     <bean name="org.jboss.ejb3.BeanInstantiator" class="org.jboss.ejb3.instantiator.impl.Ejb31SpecBeanInstantiator" />
 
+    <!--  ResourceProvider for message-destination-ref  (EE.5.9 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.MessageDestinationRefResourceProvider" class="org.jboss.as.ejb3.switchboard.resource.provider.MessageDestinationReferenceResourceProvider">
+        <property name="messageDestinationLinkResolver"><inject/></property>
+    </bean>  
+    
     <!-- Registers the default (EJB31) BeanInstantiatorDeployer  -->
     <!--<bean name="org.jboss.ejb3.BeanInstantiatorDeployer" class="org.jboss.ejb3.instantiator.deployer.SingletonBeanInstantiatorDeployer">-->
       <!--<constructor>-->

Modified: trunk/server/pom.xml
===================================================================
--- trunk/server/pom.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/server/pom.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -318,6 +318,10 @@
        <groupId>org.jboss.injection</groupId>
        <artifactId>jboss-switchboard-metadata</artifactId>
     </dependency>
+    <dependency>
+        <groupId>org.jboss.injection</groupId>
+        <artifactId>jboss-injection-mc-impl</artifactId>
+    </dependency>
 
     <dependency>
       <groupId>org.picketbox</groupId>
@@ -414,8 +418,28 @@
       <artifactId>jboss-annotations-api_1.1_spec</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>org.jboss.switchboard</groupId>
+      <artifactId>jboss-switchboard-spi</artifactId>
+    </dependency>
 
     <dependency>
+      <groupId>org.jboss.switchboard</groupId>
+      <artifactId>jboss-switchboard-mc-spi</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.switchboard</groupId>
+      <artifactId>jboss-switchboard-javaee</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.switchboard</groupId>
+      <artifactId>jboss-switchboard-impl</artifactId>
+    </dependency>
+
+
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

Modified: trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml
===================================================================
--- trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/server/src/etc/deployers/ejb-deployer-jboss-beans.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -20,7 +20,9 @@
    </bean>
 
    <bean name="EjbClassLoaderDeployer" class="org.jboss.deployment.EjbClassLoaderDeployer"/>
-
+    
+    <bean name="Ejb2xComponentDeployer" class="org.jboss.deployment.Ejb2xComponentDeployer"/>
+    
     <bean name="EJB2xDeployer" class="org.jboss.ejb.deployers.EjbDeployer">
        <!-- The EJBDeployer needs the JTA transaction manager service -->
        <property name="transactionManagerServiceName">jboss:service=TransactionManager</property>

Copied: trunk/server/src/etc/deployers/switchboard-clustered-jboss-beans.xml (from rev 109338, branches/switchboard-integration/server/src/etc/deployers/switchboard-clustered-jboss-beans.xml)
===================================================================
--- trunk/server/src/etc/deployers/switchboard-clustered-jboss-beans.xml	                        (rev 0)
+++ trunk/server/src/etc/deployers/switchboard-clustered-jboss-beans.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+    <!-- Deployers -->
+    <bean  name="org.jboss.switchboard.WebEnvironmentSwitchBoardDeployer" class="org.jboss.switchboard.mc.deployer.WebEnvironmentSwitchBoardDeployer">
+        <constructor><parameter class="org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer"><inject/></parameter></constructor>
+    </bean>
+    
+    <bean  name="org.jboss.switchboard.EJBEnvironmentSwitchBoardDeployer" class="org.jboss.switchboard.mc.deployer.EJBEnvironmentSwitchBoardDeployer">
+        <constructor><parameter class="org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer"><inject/></parameter></constructor>
+    </bean>
+
+    <!--  Resource providers -->
+
+    <!--  processes env-entry resources (EE.5.4 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.EnvEntryResourceProvider" class="org.jboss.switchboard.mc.resource.provider.EnvEntryResourceProvider"/>
+
+    <!--  processes resource-env-ref resources (EE.5.8 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.ResourceEnvRefResourceProvider" class="org.jboss.switchboard.mc.resource.provider.ResourceEnvRefProvider">
+        <property name="typedResourceEnvRefResourceProviders">
+            <map keyClass="java.lang.String" valueClass="org.jboss.switchboard.mc.spi.MCBasedResourceProvider">
+                <entry>
+                    <key>javax.xml.ws.WebServiceContext</key>
+                    <value><inject bean="org.jboss.switchboard.WebServiceContextResourceProvider"/></value>
+                </entry>
+            </map>           
+        </property>
+    </bean>
+
+    <!--  processes resource-ref resources (EE.5.7 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.ResourceRefResourceProvider" class="org.jboss.switchboard.mc.resource.provider.ResourceRefResourceProviderDelegator">
+        <property name="typedResourceRefResourceProviders">
+            <map keyClass="java.lang.String" valueClass="org.jboss.switchboard.mc.spi.MCBasedResourceProvider">
+                <entry>
+                    <key>java.net.URL</key>
+                    <value><bean name="org.jboss.switchboard.URLResourceProvider" class="org.jboss.switchboard.mc.resource.provider.URLResourceProvider"/></value>
+                </entry>
+            </map>           
+        </property>
+    </bean>
+
+    <!--  ResourceProvider for java:comp/ORB (EE.5.12 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.ORBRefResourceProvider" class="org.jboss.as.switchboard.resource.provider.ORBRefResourceProvider"/>
+
+    <!--  ResourceProvider for java:comp/UserTransaction (EE.5.10 of Java EE 6 spec) -->
+    <bean name="org.jboss.switchboard.UserTransactionRefResourceProvider" class="org.jboss.as.switchboard.resource.provider.UserTransactionRefResourceProvider"/>
+    
+    <!--  ResourceProvider for java:comp/TransactionSynchronizationRegistry (EE.5.11 of Java EE 6 spec) -->
+    <bean name="org.jboss.switchboard.TransactionSyncRegistryRefResourceProvider" class="org.jboss.as.switchboard.resource.provider.TransactionSynchronizationRefResourceProvider"/>
+
+    
+    <!-- Resource provider registry -->
+    <bean name="org.jboss.switchboard.ResourceProviderRegistry" class="org.jboss.switchboard.mc.resource.provider.ResourceProviderRegistry">
+        <property name="resourceProviders">
+            <list>
+                <inject bean="org.jboss.switchboard.EnvEntryResourceProvider"/>
+                <inject bean="org.jboss.switchboard.ResourceEnvRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.ResourceRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.MessageDestinationRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.WebServiceRefResourceProvider"/>
+                <!-- 
+                <inject bean="org.jboss.switchboard.EJBLocalRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.EJBRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.AnnotatedEJBRefResourceProvider"/>
+                -->
+                <!-- Disabled till container themselves stop binding into java:comp 
+                    <inject bean="org.jboss.switchboard.ORBRefResourceProvider"/>
+                    <inject bean="org.jboss.switchboard.UserTransactionRefResourceProvider"/>
+                -->
+                <!-- Disabled till https://jira.jboss.org/browse/JBAS-8465 is fixed 
+                <inject bean="org.jboss.switchboard.TransactionSyncRegistryRefResourceProvider"/>
+                -->
+            </list>
+        </property>
+
+    </bean>
+    
+    <!--  JNDI environment processor -->
+    <bean name="org.jboss.switchboard.JndiEnvironmentProcessor" class="org.jboss.switchboard.mc.JndiEnvironmentProcessor">
+        <constructor><parameter><inject bean="org.jboss.switchboard.ResourceProviderRegistry"/></parameter></constructor>
+    </bean>
+    
+    
+</deployment>
\ No newline at end of file

Copied: trunk/server/src/etc/deployers/switchboard-jboss-beans.xml (from rev 109338, branches/switchboard-integration/server/src/etc/deployers/switchboard-jboss-beans.xml)
===================================================================
--- trunk/server/src/etc/deployers/switchboard-jboss-beans.xml	                        (rev 0)
+++ trunk/server/src/etc/deployers/switchboard-jboss-beans.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+    <!-- Deployers -->
+    <bean  name="org.jboss.switchboard.WebEnvironmentSwitchBoardDeployer" class="org.jboss.switchboard.mc.deployer.WebEnvironmentSwitchBoardDeployer">
+        <constructor><parameter class="org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer"><inject/></parameter></constructor>
+    </bean>
+    
+    <bean  name="org.jboss.switchboard.EJBEnvironmentSwitchBoardDeployer" class="org.jboss.switchboard.mc.deployer.EJBEnvironmentSwitchBoardDeployer">
+        <constructor><parameter class="org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer"><inject/></parameter></constructor>
+    </bean>
+
+    <!--  Resource providers -->
+
+    <!--  processes env-entry resources (EE.5.4 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.EnvEntryResourceProvider" class="org.jboss.switchboard.mc.resource.provider.EnvEntryResourceProvider"/>
+
+    <!--  processes resource-env-ref resources (EE.5.8 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.ResourceEnvRefResourceProvider" class="org.jboss.switchboard.mc.resource.provider.ResourceEnvRefProvider">
+        <property name="typedResourceEnvRefResourceProviders">
+            <map keyClass="java.lang.String" valueClass="org.jboss.switchboard.mc.spi.MCBasedResourceProvider">
+                <entry>
+                    <key>javax.xml.ws.WebServiceContext</key>
+                    <value><inject bean="org.jboss.switchboard.WebServiceContextResourceProvider"/></value>
+                </entry>
+            </map>           
+        </property>
+    </bean>
+
+    <!--  processes resource-ref resources (EE.5.7 of Java EE6 spec) -->
+    <bean name="org.jboss.switchboard.ResourceRefResourceProvider" class="org.jboss.switchboard.mc.resource.provider.ResourceRefResourceProviderDelegator">
+        <property name="typedResourceRefResourceProviders">
+            <map keyClass="java.lang.String" valueClass="org.jboss.switchboard.mc.spi.MCBasedResourceProvider">
+                <entry>
+                    <key>java.net.URL</key>
+                    <value><bean name="org.jboss.switchboard.URLResourceProvider" class="org.jboss.switchboard.mc.resource.provider.URLResourceProvider"/></value>
+                </entry>
+            </map>           
+        </property>
+    </bean>
+
+    <!--  ResourceProvider for java:comp/UserTransaction (EE.5.10 of Java EE 6 spec) -->
+    <bean name="org.jboss.switchboard.UserTransactionRefResourceProvider" class="org.jboss.as.switchboard.resource.provider.UserTransactionRefResourceProvider"/>
+
+    <!--  ResourceProvider for java:comp/TransactionSynchronizationRegistry (EE.5.11 of Java EE 6 spec) -->
+    <bean name="org.jboss.switchboard.TransactionSyncRegistryRefResourceProvider" class="org.jboss.as.switchboard.resource.provider.TransactionSynchronizationRefResourceProvider"/>
+
+    <!-- Resource provider registry -->
+    <bean name="org.jboss.switchboard.ResourceProviderRegistry" class="org.jboss.switchboard.mc.resource.provider.ResourceProviderRegistry">
+        <property name="resourceProviders">
+            <list>
+                <inject bean="org.jboss.switchboard.EnvEntryResourceProvider"/>
+                <inject bean="org.jboss.switchboard.ResourceEnvRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.ResourceRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.MessageDestinationRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.WebServiceRefResourceProvider"/>
+                <!-- 
+                <inject bean="org.jboss.switchboard.EJBLocalRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.EJBRefResourceProvider"/>
+                <inject bean="org.jboss.switchboard.AnnotatedEJBRefResourceProvider"/>
+                -->
+                <!-- Disabled till container themselves stop binding into java:comp 
+                    <inject bean="org.jboss.switchboard.UserTransactionRefResourceProvider"/>
+                -->
+                <!-- Disabled till https://jira.jboss.org/browse/JBAS-8465 is fixed
+                <inject bean="org.jboss.switchboard.TransactionSyncRegistryRefResourceProvider"/>
+                -->
+            </list>
+        </property>
+
+    </bean>
+    
+    <!--  JNDI environment processor -->
+    <bean name="org.jboss.switchboard.JndiEnvironmentProcessor" class="org.jboss.switchboard.mc.JndiEnvironmentProcessor">
+        <constructor><parameter><inject bean="org.jboss.switchboard.ResourceProviderRegistry"/></parameter></constructor>
+    </bean>
+    
+    
+</deployment>
\ No newline at end of file

Copied: trunk/server/src/main/java/org/jboss/as/switchboard (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard)

Copied: trunk/server/src/main/java/org/jboss/as/switchboard/resource (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource)

Copied: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider)

Deleted: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java
===================================================================
--- branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java	2010-11-15 13:33:02 UTC (rev 109338)
+++ trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -1,31 +0,0 @@
-/**
- * 
- */
-package org.jboss.as.switchboard.resource.provider;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.switchboard.impl.resource.LinkRefResource;
-import org.jboss.switchboard.javaee.environment.ORBRefType;
-import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
-import org.jboss.switchboard.spi.Resource;
-
-/**
- * ORBRefResourceProvider
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class ORBRefResourceProvider implements MCBasedResourceProvider<ORBRefType>
-{
-
-   public Class<ORBRefType> getEnvironmentEntryType()
-   {
-      return ORBRefType.class;
-   }
-
-   public Resource provide(DeploymentUnit context, ORBRefType type)
-   {
-      return new LinkRefResource("java:/JBossCorbaORB");
-   }
-
-}

Copied: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java)
===================================================================
--- trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/ORBRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,31 @@
+/**
+ * 
+ */
+package org.jboss.as.switchboard.resource.provider;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.switchboard.impl.resource.LinkRefResource;
+import org.jboss.switchboard.javaee.environment.ORBRefType;
+import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
+import org.jboss.switchboard.spi.Resource;
+
+/**
+ * ORBRefResourceProvider
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class ORBRefResourceProvider implements MCBasedResourceProvider<ORBRefType>
+{
+
+   public Class<ORBRefType> getEnvironmentEntryType()
+   {
+      return ORBRefType.class;
+   }
+
+   public Resource provide(DeploymentUnit context, ORBRefType type)
+   {
+      return new LinkRefResource("java:/JBossCorbaORB");
+   }
+
+}

Deleted: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java
===================================================================
--- branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java	2010-11-15 13:33:02 UTC (rev 109338)
+++ trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -1,31 +0,0 @@
-/**
- * 
- */
-package org.jboss.as.switchboard.resource.provider;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.switchboard.impl.resource.LinkRefResource;
-import org.jboss.switchboard.javaee.environment.TransactionSynchronizationRegistryRefType;
-import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
-import org.jboss.switchboard.spi.Resource;
-
-/**
- * TransactionSynchronizationRefResourceProvider
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class TransactionSynchronizationRefResourceProvider implements MCBasedResourceProvider<TransactionSynchronizationRegistryRefType>
-{
-
-   public Class<TransactionSynchronizationRegistryRefType> getEnvironmentEntryType()
-   {
-      return TransactionSynchronizationRegistryRefType.class;
-   }
-
-   public Resource provide(DeploymentUnit context, TransactionSynchronizationRegistryRefType type)
-   {
-      return new LinkRefResource("java:TransactionSynchronizationRegistry");
-   }
-
-}

Copied: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java)
===================================================================
--- trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/TransactionSynchronizationRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,31 @@
+/**
+ * 
+ */
+package org.jboss.as.switchboard.resource.provider;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.switchboard.impl.resource.LinkRefResource;
+import org.jboss.switchboard.javaee.environment.TransactionSynchronizationRegistryRefType;
+import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
+import org.jboss.switchboard.spi.Resource;
+
+/**
+ * TransactionSynchronizationRefResourceProvider
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class TransactionSynchronizationRefResourceProvider implements MCBasedResourceProvider<TransactionSynchronizationRegistryRefType>
+{
+
+   public Class<TransactionSynchronizationRegistryRefType> getEnvironmentEntryType()
+   {
+      return TransactionSynchronizationRegistryRefType.class;
+   }
+
+   public Resource provide(DeploymentUnit context, TransactionSynchronizationRegistryRefType type)
+   {
+      return new LinkRefResource("java:TransactionSynchronizationRegistry");
+   }
+
+}

Deleted: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java
===================================================================
--- branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java	2010-11-15 13:33:02 UTC (rev 109338)
+++ trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -1,31 +0,0 @@
-/**
- * 
- */
-package org.jboss.as.switchboard.resource.provider;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.switchboard.impl.resource.LinkRefResource;
-import org.jboss.switchboard.javaee.environment.UserTransactionRefType;
-import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
-import org.jboss.switchboard.spi.Resource;
-
-/**
- * UserTransactionRefResourceProvider
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class UserTransactionRefResourceProvider implements MCBasedResourceProvider<UserTransactionRefType>
-{
-
-   public Class<UserTransactionRefType> getEnvironmentEntryType()
-   {
-      return UserTransactionRefType.class;
-   }
-
-   public Resource provide(DeploymentUnit context, UserTransactionRefType type)
-   {
-      return new LinkRefResource("UserTransaction");
-   }
-
-}

Copied: trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java)
===================================================================
--- trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jboss/as/switchboard/resource/provider/UserTransactionRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,31 @@
+/**
+ * 
+ */
+package org.jboss.as.switchboard.resource.provider;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.switchboard.impl.resource.LinkRefResource;
+import org.jboss.switchboard.javaee.environment.UserTransactionRefType;
+import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
+import org.jboss.switchboard.spi.Resource;
+
+/**
+ * UserTransactionRefResourceProvider
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class UserTransactionRefResourceProvider implements MCBasedResourceProvider<UserTransactionRefType>
+{
+
+   public Class<UserTransactionRefType> getEnvironmentEntryType()
+   {
+      return UserTransactionRefType.class;
+   }
+
+   public Resource provide(DeploymentUnit context, UserTransactionRefType type)
+   {
+      return new LinkRefResource("UserTransaction");
+   }
+
+}

Copied: trunk/server/src/main/java/org/jboss/deployment/Ejb2xComponentDeployer.java (from rev 109338, branches/switchboard-integration/server/src/main/java/org/jboss/deployment/Ejb2xComponentDeployer.java)
===================================================================
--- trunk/server/src/main/java/org/jboss/deployment/Ejb2xComponentDeployer.java	                        (rev 0)
+++ trunk/server/src/main/java/org/jboss/deployment/Ejb2xComponentDeployer.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,100 @@
+/**
+ * 
+ */
+package org.jboss.deployment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.deployers.spi.deployer.helpers.AbstractComponentDeployer;
+import org.jboss.deployers.spi.deployer.helpers.AbstractDeploymentVisitor;
+import org.jboss.deployers.spi.deployer.helpers.DeploymentVisitor;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+
+/**
+ * Creates and deploys EJB2x beans as components
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class Ejb2xComponentDeployer extends AbstractComponentDeployer<JBossMetaData, JBossEnterpriseBeanMetaData>
+{
+   private static final Logger log = Logger.getLogger(Ejb2xComponentDeployer.class);
+
+   private static final JBossDeploymentVisitor deploymentVisitor = new JBossDeploymentVisitor();
+
+   private static final String attachmentName = JBossMetaData.class.getName();
+   
+   public Ejb2xComponentDeployer()
+   {
+      setInput(JBossMetaData.class);
+      setOutput(deploymentVisitor.getComponentType());
+
+      setDeploymentVisitor(deploymentVisitor);
+   }
+
+   @Override
+   protected <U> void deploy(DeploymentUnit unit, DeploymentVisitor<U> visitor) throws DeploymentException
+   {
+      U deployment = unit.getAttachment(attachmentName, visitor.getVisitorType());
+      try
+      {
+         visitor.deploy(unit, deployment);
+      }
+      catch (Throwable t)
+      {
+         throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + unit.getName(), t);
+      }
+   }
+
+   @Override
+   protected <U> void undeploy(DeploymentUnit unit, DeploymentVisitor<U> visitor)
+   {
+      if (visitor == null)
+         return;
+
+      U deployment = unit.getAttachment(attachmentName, visitor.getVisitorType());
+      visitor.undeploy(unit, deployment);
+   }
+
+   private static class JBossDeploymentVisitor
+         extends
+            AbstractDeploymentVisitor<JBossEnterpriseBeanMetaData, JBossMetaData>
+   {
+      @Override
+      public Class<JBossEnterpriseBeanMetaData> getComponentType()
+      {
+         return JBossEnterpriseBeanMetaData.class;
+      }
+
+      @Override
+      protected List<? extends JBossEnterpriseBeanMetaData> getComponents(JBossMetaData deployment)
+      {
+         // Process only 2.x beans
+         if (deployment == null || !deployment.isEJB2x())
+            return null;
+         JBossEnterpriseBeansMetaData enterpriseBeans = deployment.getEnterpriseBeans();
+         if (enterpriseBeans == null)
+         {
+            return null;
+         }
+         return new ArrayList<JBossEnterpriseBeanMetaData>(enterpriseBeans);
+      }
+
+      @Override
+      protected String getComponentName(JBossEnterpriseBeanMetaData attachment)
+      {
+         return JBossEnterpriseBeanMetaData.class.getName() + "." + attachment.getEjbName();
+      }
+
+      public Class<JBossMetaData> getVisitorType()
+      {
+         return JBossMetaData.class;
+      }
+   }
+
+}

Modified: trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java
===================================================================
--- trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployer.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -39,6 +39,10 @@
 import javax.management.ObjectName;
 
 import org.jboss.beans.metadata.api.annotations.Inject;
+import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
+import org.jboss.beans.metadata.plugins.builder.BeanMetaDataBuilderFactory;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
 import org.jboss.dependency.plugins.AbstractDependencyItem;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.deployers.spi.DeploymentException;
@@ -48,8 +52,14 @@
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.structure.spi.main.MainDeployerInternals;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-import org.jboss.ejb3.ejbref.resolver.spi.EjbReference;
 import org.jboss.ejb3.ejbref.resolver.spi.EjbReferenceResolver;
+import org.jboss.injection.injector.metadata.EnvironmentEntryType;
+import org.jboss.injection.injector.metadata.InjectionTargetType;
+import org.jboss.injection.injector.metadata.JndiEnvironmentRefsGroup;
+import org.jboss.injection.manager.spi.InjectionManager;
+import org.jboss.injection.manager.spi.Injector;
+import org.jboss.injection.mc.injector.LazyEEInjector;
+import org.jboss.injection.mc.metadata.JndiEnvironmentImpl;
 import org.jboss.jpa.resolvers.PersistenceUnitDependencyResolver;
 import org.jboss.kernel.plugins.bootstrap.basic.KernelConstants;
 import org.jboss.managed.api.ManagedObject;
@@ -63,17 +73,14 @@
 import org.jboss.metadata.ear.jboss.JBossAppMetaData;
 import org.jboss.metadata.ear.spec.ModuleMetaData;
 import org.jboss.metadata.ear.spec.WebModuleMetaData;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
-import org.jboss.metadata.javaee.spec.PersistenceContextReferencesMetaData;
-import org.jboss.metadata.javaee.spec.PersistenceUnitReferenceMetaData;
-import org.jboss.metadata.javaee.spec.PersistenceUnitReferencesMetaData;
+import org.jboss.metadata.javaee.spec.Environment;
 import org.jboss.metadata.web.jboss.ClassLoadingMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.metadata.web.spec.WebMetaData;
 import org.jboss.metatype.api.values.SimpleValueSupport;
 import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
+import org.jboss.switchboard.spi.Barrier;
 import org.jboss.system.metadata.ServiceAttributeMetaData;
 import org.jboss.system.metadata.ServiceConstructorMetaData;
 import org.jboss.system.metadata.ServiceDependencyMetaData;
@@ -147,6 +154,8 @@
    
    /** EJB reference resolver */
    private EjbReferenceResolver ejbRefResolver;
+   
+   private JavaEEComponentInformer componentInformer;
 
    /**
     * Create a new AbstractWarDeployer.
@@ -154,6 +163,8 @@
    public AbstractWarDeployer()
    {
       super(JBossWebMetaData.class);
+      addInput(Barrier.class);
+      addInput(InjectionManager.class);
       setOutput(ServiceMetaData.class);
       setOutput(WarDeployment.class);
    }
@@ -282,7 +293,12 @@
       this.ejbRefResolver = resolver;
    }
 
-
+   @Inject
+   public void setJavaEEComponentInformer(JavaEEComponentInformer informer)
+   {
+      this.componentInformer = informer;
+   }
+   
    /** Get the session attribute number under which the caller Subject is stored
     * @jmx:managed-attribute
     */
@@ -729,63 +745,53 @@
                dependencies.add(sdmd);
             }
          }
-
-         // JBAS-6795 Add dependency on PersistenceUnit references
-         PersistenceUnitReferencesMetaData puRefs = metaData.getPersistenceUnitRefs();
-         if (puRefs != null)
-         {
-            for (PersistenceUnitReferenceMetaData puRef : metaData.getPersistenceUnitRefs())
-            {
-               // TODO: this is a duplication of the logic in PersistenceUnitHandler
-               String persistenceUnitName = puRef.getPersistenceUnitName();
-               String beanName = persistenceUnitDependencyResolver.resolvePersistenceUnitSupplier(unit, persistenceUnitName);
-               ServiceDependencyMetaData sdmd = new ServiceDependencyMetaData();
-               sdmd.setIDependOn(beanName);
-               dependencies.add(sdmd);
-            }
-         }
          
-         // JBAS-6795 Add dependency on PersistenceContext references
-         PersistenceContextReferencesMetaData pcRefs = metaData.getPersistenceContextRefs();
-         if (pcRefs != null)
+         // SwitchBoard
+         Barrier switchBoard = unit.getAttachment(Barrier.class);
+         if (switchBoard != null)
          {
-            for (PersistenceContextReferenceMetaData pcRef : metaData.getPersistenceContextRefs())
-            {
-               // TODO: this is a duplication of the logic in PersistenceContextHandler
-               String persistenceUnitName = pcRef.getPersistenceUnitName();
-               String beanName = persistenceUnitDependencyResolver.resolvePersistenceUnitSupplier(unit, persistenceUnitName);
-               ServiceDependencyMetaData sdmd = new ServiceDependencyMetaData();
-               sdmd.setIDependOn(beanName);
-               dependencies.add(sdmd);
-            }
+            // Setup switchboard dependency on the deployment
+            ServiceDependencyMetaData switchBoardDependency = new ServiceDependencyMetaData();
+            switchBoardDependency.setIDependOn(switchBoard.getId());
+            dependencies.add(switchBoardDependency);
+            log.debug("Added switchboard dependency: " + switchBoard.getId() + " for web module: " + name);
          }
-         
-         // JBAS-8406 Add dependency on @EJB(s). This is a bit of duplicacy, since the TomcatInjectionContainer
-         // through various handler would also do the same. But since the TomcatInjectionContainer comes too late
-         // in the picture and since we already have similar duplicacy for @PersistenceContext and @PersistenceUnit (see few lines
-         // above) and more importantly, since this works, let's just have it here. 
-         if (metaData.getJndiEnvironmentRefsGroup() != null)
+         // Injection Manager
+         InjectionManager injectionManager = unit.getAttachment(InjectionManager.class);
+         if (injectionManager != null)
          {
-            AnnotatedEJBReferencesMetaData annotatedEjbRefs = metaData.getJndiEnvironmentRefsGroup().getAnnotatedEjbReferences();
-            if (annotatedEjbRefs != null && !annotatedEjbRefs.isEmpty())
+            // set the InjectionManager on the deployment
+            deployment.setInjectionManager(injectionManager);
+            // Setup the Injector
+            Environment webEnvironment = metaData.getJndiEnvironmentRefsGroup();
+            if (webEnvironment != null)
             {
-               for (AnnotatedEJBReferenceMetaData annotatedEjbRef : annotatedEjbRefs)
+               // convert JBMETA metadata to jboss-injection specific metadata
+               JndiEnvironmentRefsGroup jndiEnvironment = new JndiEnvironmentImpl(webEnvironment, unit.getClassLoader());
+               // For optimization, we'll create an Injector only if there's atleast one InjectionTarget
+               if (this.hasInjectionTargets(jndiEnvironment))
                {
-                  // Note: @EJB(beanName="") is set as "link" in AnnotatedEJBReferenceMetadata.
-                  // Hence, we use the getLink() method to get hold of the beanName during resolution.
-                  String beanName = annotatedEjbRef.getLink();
-                  EjbReference ejbReference = new EjbReference(beanName, annotatedEjbRef.getBeanInterface().getName(), annotatedEjbRef.getMappedName());
-                  String jndiName = this.ejbRefResolver.resolveEjb(unit, ejbReference);
-                  if (jndiName != null)
-                  {
-                     ServiceDependencyMetaData sdmd = this.createJNDIDependency(jndiName);
-                     dependencies.add(sdmd);
-                  }
+                  // create the injector
+                  LazyEEInjector lazyEEInjector = new LazyEEInjector(jndiEnvironment);
+                  // add the injector the injection manager
+                  injectionManager.addInjector(lazyEEInjector);
+                  // Deploy the Injector as a MC bean (so that the fully populated naming context (obtained via the SwitchBoard
+                  // Barrier) gets injected.
+                  String injectorMCBeanName = this.getInjectorMCBeanName(unit);
+                  BeanMetaData injectorBMD = this.createInjectorBMD(injectorMCBeanName, lazyEEInjector, switchBoard);
+                  unit.addAttachment(BeanMetaData.class + ":" + injectorMCBeanName, injectorBMD);
+                  
+                  // Add the Injector dependency on the deployment (so that the DU doesn't
+                  // get started till the Injector is available)
+                  ServiceDependencyMetaData injectorDepdendency = new ServiceDependencyMetaData();
+                  injectorDepdendency.setIDependOn(injectorMCBeanName);
+                  dependencies.add(injectorDepdendency);
+                  log.debug("Added Injector dependency: " + injectorMCBeanName + " for web module: " + name);
                }
             }
          }
-         
 
+
          webModule.setDependencies(dependencies);
 
          // Here's where a bit of magic happens. By attaching the ServiceMetaData
@@ -905,4 +911,77 @@
          visitor.visit(this);
       }
    }
+   
+   /**
+    * Creates and returns {@link BeanMetaData} for the passed {@link LazyEEInjector injector} and sets up
+    * dependency on the passed {@link Barrier SwitchBoard barrier}.
+    * 
+    * @param injectorMCBeanName
+    * @param injector
+    * @param barrier
+    * @return
+    */
+   protected BeanMetaData createInjectorBMD(String injectorMCBeanName, LazyEEInjector injector, Barrier barrier)
+   {
+      BeanMetaDataBuilder builder = BeanMetaDataBuilderFactory.createBuilder(injectorMCBeanName, injector.getClass().getName());
+      builder.setConstructorValue(injector);
+
+      // add injection dependency on INSTALLED state of SwitchBoard Barrier
+      AbstractInjectionValueMetaData barrierInjection = new AbstractInjectionValueMetaData(barrier.getId());
+      barrierInjection.setDependentState(ControllerState.INSTALLED);
+      builder.addPropertyMetaData("barrier", barrierInjection);
+
+      // return the Injector BMD
+      return builder.getBeanMetaData();
+   }
+   
+
+   /**
+    * Returns the MC bean name for a {@link Injector injector} belonging to the 
+    * {@link InjectionManager InjectionManager} for the passed {@link DeploymentUnit deployment unit}
+    * 
+    * @param unit
+    * @return
+    */
+   protected String getInjectorMCBeanName(DeploymentUnit unit)
+   {
+      StringBuilder sb = new StringBuilder("jboss-injector:");
+      String appName = this.componentInformer.getApplicationName(unit);
+      if (appName != null)
+      {
+         sb.append("appName=");
+         sb.append(appName);
+         sb.append(",");
+      }
+      String moduleName = this.componentInformer.getModuleName(unit);
+      sb.append("module=");
+      sb.append(moduleName);
+
+      return sb.toString();
+   }
+   
+   /**
+    * Returns true if the passed {@link JndiEnvironmentRefsGroup} has atleast one {@link EnvironmentEntryType environment entry}
+    * with an {@link InjectionTargetType injection target}. Else, returns false
+    *  
+    * @param jndiEnv
+    * @return
+    */
+   private boolean hasInjectionTargets(JndiEnvironmentRefsGroup jndiEnv)
+   {
+      Collection<EnvironmentEntryType> envEntries = jndiEnv.getEntries();
+      if (envEntries == null || envEntries.isEmpty())
+      {
+         return false;
+      }
+      for (EnvironmentEntryType envEntry : envEntries)
+      {
+         Collection<InjectionTargetType> injectionTargets = envEntry.getInjectionTargets();
+         if (injectionTargets != null && !injectionTargets.isEmpty())
+         {
+            return true;
+         }
+      }
+      return false;   
+   }
 }

Modified: trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployment.java
===================================================================
--- trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployment.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/server/src/main/java/org/jboss/web/deployers/AbstractWarDeployment.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -42,6 +42,7 @@
 import org.jboss.deployers.structure.spi.main.MainDeployerInternals;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.ejb.EjbUtil50;
+import org.jboss.injection.manager.spi.InjectionManager;
 import org.jboss.jpa.resolvers.PersistenceUnitDependencyResolver;
 import org.jboss.kernel.Kernel;
 import org.jboss.logging.Logger;
@@ -143,6 +144,11 @@
    protected ISecurityManagement securityManagement;
 
    private PersistenceUnitDependencyResolver persistenceUnitDependencyResolver;
+   
+   /**
+    * Injection manager
+    */
+   private InjectionManager injectionManager;
 
    public AbstractWarDeployment()
    {
@@ -308,6 +314,16 @@
    {
       this.persistenceUnitDependencyResolver = resolver;
    }
+   
+   public void setInjectionManager(InjectionManager injectionManager)
+   {
+      this.injectionManager = injectionManager;
+   }
+   
+   public InjectionManager getInjectionManager()
+   {
+      return this.injectionManager;
+   }
 
    /**
     * Get the Policy Registration Name
@@ -804,7 +820,7 @@
     * element. If there was no security-domain element then the bindings are to
     * NullSecurityManager instance which simply allows all access.
     */
-   protected void linkSecurityDomain(String securityDomain, Context envCtx) throws NamingException
+   protected void linkSecurityDomain(String securityDomain, Context javaCompCtx) throws NamingException
    {
       if (securityDomain == null)
       {
@@ -817,11 +833,11 @@
          securityDomain = SecurityConstants.JAAS_CONTEXT_ROOT + "/" + securityDomain;
 
       log.debug("Linking security/securityMgr to JNDI name: " + securityDomain);
-      Util.bind(envCtx, "security/securityMgr", new LinkRef(securityDomain));
-      Util.bind(envCtx, "security/realmMapping", new LinkRef(securityDomain + "/realmMapping"));
-      Util.bind(envCtx, "security/authorizationMgr", new LinkRef(securityDomain + "/authorizationMgr"));
-      Util.bind(envCtx, "security/security-domain", new LinkRef(securityDomain));
-      Util.bind(envCtx, "security/subject", new LinkRef(securityDomain + "/subject"));
+      Util.bind(javaCompCtx, "env/security/securityMgr", new LinkRef(securityDomain));
+      Util.bind(javaCompCtx, "env/security/realmMapping", new LinkRef(securityDomain + "/realmMapping"));
+      Util.bind(javaCompCtx, "env/security/authorizationMgr", new LinkRef(securityDomain + "/authorizationMgr"));
+      Util.bind(javaCompCtx, "env/security/security-domain", new LinkRef(securityDomain));
+      Util.bind(javaCompCtx, "env/security/subject", new LinkRef(securityDomain + "/subject"));
    }
 
    /**

Modified: trunk/testsuite/build.xml
===================================================================
--- trunk/testsuite/build.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/build.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -343,6 +343,12 @@
       <fileset refid="org.jboss.jbossas:jboss-server-manager:jar"/>
       <fileset refid="org.jboss.jbossts:jbossjts:jar"/>
       <fileset refid="org.jboss.jbossts:jbossjts-integration:jar"/>
+        
+		<!-- Switchboard and jboss-injection -->
+        <fileset refid="org.jboss.injection:jboss-injection-injector:jar"/>        
+        <fileset refid="org.jboss.injection:jboss-injection-mc-impl:jar"/>
+        <fileset refid="org.jboss.injection:jboss-injection-manager:jar"/>
+		        
 
       <!-- Java EE APIs -->
       <path refid="jboss.javaee.api.classpath"/>
@@ -600,6 +606,7 @@
     <property name="thirdparty.pom.file" location="pom.xml"/>
     
     <property name="maven.repo.local" location="${user.home}/.m2/repository"/>
+
     <!-- 
       -  Initialize properties for each dependency in the thirdparty pom 
       -  The properties take the form "groupId:artifactId:packaging"

Modified: trunk/testsuite/imports/sections/jsf.xml
===================================================================
--- trunk/testsuite/imports/sections/jsf.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/imports/sections/jsf.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -61,6 +61,7 @@
 
       <webinf dir="${build.resources}/web/jsfinjection/WEB-INF">
         <include name="faces-config.xml"/>
+		<include name="jboss-service.xml"/>          
       </webinf>
     </war>
     

Modified: trunk/testsuite/imports/sections/web.xml
===================================================================
--- trunk/testsuite/imports/sections/web.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/imports/sections/web.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -692,6 +692,7 @@
          webxml="${build.resources}/web/simple-xmlonly/web.xml">
          <webinf dir="${build.resources}/web/simple-xmlonly">
             <include name="jboss-web.xml"/>
+			<include name="jboss-service.xml"/>
          </webinf>
          <classes dir="${build.classes}">
             <include name="org/jboss/test/web/servlets/ENCTester.class"/>
@@ -721,7 +722,10 @@
          <classes dir="${build.classes}">
             <include name="org/jboss/test/web/servlets/StandaloneENCAnnotationsServlet.class"/>
             <include name="org/jboss/test/web/servlets/ENCTester.class"/>
-         </classes>         
+         </classes>
+		<webinf dir="${build.resources}/web/simple-xmlonly">
+	 		<include name="jboss-service.xml"/>
+	  	</webinf>
       </war>
       <jar destfile="${build.lib}/simple-mock.beans">
          <zipfileset dir="${build.resources}/web/simple-xmlonly"

Modified: trunk/testsuite/src/main/org/jboss/test/jsf/managed/ENCAnnotationsManagedBean.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jsf/managed/ENCAnnotationsManagedBean.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/src/main/org/jboss/test/jsf/managed/ENCAnnotationsManagedBean.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -69,7 +69,7 @@
          mappedName="jbosstest/ejbs/local/ENCBean1")
    StatelessSessionLocalHome localHome;
 
-   @Resource(name="url/JBossHome", mappedName="http://www.jboss.org")
+   @Resource(name="url/JBossHome", mappedName="java:SomeWebSite")
    java.net.URL url;
 
    @Resource(name="Ints/i0", mappedName="0")

Modified: trunk/testsuite/src/main/org/jboss/test/jsf/managed/SimpleManagedBean.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jsf/managed/SimpleManagedBean.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/src/main/org/jboss/test/jsf/managed/SimpleManagedBean.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -47,7 +47,7 @@
    @EJB
    SimpleLocal simpleLocal;
    
-   @Resource(name = "url/Injection", mappedName = "http://jboss.org")
+   @Resource(name = "url/Injection", mappedName = "java:SomeWebSite")
    private java.net.URL url;
    
    /**

Modified: trunk/testsuite/src/main/org/jboss/test/web/servlets/ENCTester.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/web/servlets/ENCTester.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/src/main/org/jboss/test/web/servlets/ENCTester.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -117,7 +117,7 @@
    private void testEjbRefs(Context initCtx, Context myEnv) throws NamingException
    {
       //do lookup on bean specified without ejb-link
-      Object ejb = initCtx.lookup("java:comp/env/ejb/bean3");
+      Object ejb = initCtx.lookup("ejb/bean3");
       if ((ejb instanceof StatelessSessionHome) == false)
          throw new NamingException("ejb/bean3 is not a StatelessSessionHome");
       log.debug("ejb/bean3 = " + ejb);

Modified: trunk/testsuite/src/main/org/jboss/test/web/servlets/StandaloneENCAnnotationsServlet.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/web/servlets/StandaloneENCAnnotationsServlet.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/testsuite/src/main/org/jboss/test/web/servlets/StandaloneENCAnnotationsServlet.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -77,7 +77,7 @@
          mappedName="jbosstest/ejbs/local/ENCBean1")
    StatelessSessionLocalHome localHome;
 
-   @Resource(name="url/JBossHome", mappedName="http://www.jboss.org")
+   @Resource(name="url/JBossHome", mappedName="java:SomeWebSite")
    java.net.URL url;
 
    @Resource(name="Ints/i0", mappedName="0")

Copied: trunk/testsuite/src/resources/refs/resources/hornetq-jms.xml (from rev 109338, branches/switchboard-integration/testsuite/src/resources/refs/resources/hornetq-jms.xml)
===================================================================
--- trunk/testsuite/src/resources/refs/resources/hornetq-jms.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/refs/resources/hornetq-jms.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<configuration xmlns="urn:hornetq"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
+
+    <queue name="testQueue">
+        <entry name="queue/testQueue" />
+    </queue>
+
+    <topic name="testTopic">
+        <entry name="topic/testTopic"/>
+    </topic>
+
+</configuration>

Copied: trunk/testsuite/src/resources/web/html/jbosstest/WEB-INF/jboss-service.xml (from rev 109338, branches/switchboard-integration/testsuite/src/resources/web/html/jbosstest/WEB-INF/jboss-service.xml)
===================================================================
--- trunk/testsuite/src/resources/web/html/jbosstest/WEB-INF/jboss-service.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/web/html/jbosstest/WEB-INF/jboss-service.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mbean code="org.jboss.naming.JNDIBindingServiceMgr" name="jboss.apps:name=myapp">
+    <attribute name="BindingsConfig" serialDataType="jbxb">
+        <jndi:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
+            xs:schemaLocation="urn:jboss:jndi-binding-service resource:jndi-binding-service_1_0.xsd">
+            <!--  bind to java:SomeWebSite jndi name which is referenced in jboss-web.xml
+            via a resource-ref entry -->
+            <jndi:binding name="java:SomeWebSite">
+                <jndi:value type="java.net.URL">http://www.jboss.org</jndi:value>
+            </jndi:binding>
+
+        </jndi:bindings>
+    </attribute>
+</mbean>    

Copied: trunk/testsuite/src/resources/web/jsfinjection/WEB-INF/jboss-service.xml (from rev 109338, branches/switchboard-integration/testsuite/src/resources/web/jsfinjection/WEB-INF/jboss-service.xml)
===================================================================
--- trunk/testsuite/src/resources/web/jsfinjection/WEB-INF/jboss-service.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/web/jsfinjection/WEB-INF/jboss-service.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mbean code="org.jboss.naming.JNDIBindingServiceMgr" name="jboss.apps:name=myapp">
+    <attribute name="BindingsConfig" serialDataType="jbxb">
+        <jndi:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
+            xs:schemaLocation="urn:jboss:jndi-binding-service resource:jndi-binding-service_1_0.xsd">
+            <!--  bind to java:SomeWebSite jndi name which is referenced in jboss-web.xml
+            via a resource-ref entry -->
+            <jndi:binding name="java:SomeWebSite">
+                <jndi:value type="java.net.URL">http://www.jboss.org</jndi:value>
+            </jndi:binding>
+
+        </jndi:bindings>
+    </attribute>
+</mbean>    

Copied: trunk/testsuite/src/resources/web/simple-xmlonly/jboss-service.xml (from rev 109338, branches/switchboard-integration/testsuite/src/resources/web/simple-xmlonly/jboss-service.xml)
===================================================================
--- trunk/testsuite/src/resources/web/simple-xmlonly/jboss-service.xml	                        (rev 0)
+++ trunk/testsuite/src/resources/web/simple-xmlonly/jboss-service.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<mbean code="org.jboss.naming.JNDIBindingServiceMgr" name="jboss.apps:name=myapp">
+    <attribute name="BindingsConfig" serialDataType="jbxb">
+        <jndi:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+            xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
+            xs:schemaLocation="urn:jboss:jndi-binding-service resource:jndi-binding-service_1_0.xsd">
+            <!--  bind to java:SomeWebSite jndi name which is referenced in jboss-web.xml
+            via a resource-ref entry -->
+            <jndi:binding name="java:SomeWebSite">
+                <jndi:value type="java.net.URL">http://www.jboss.org</jndi:value>
+            </jndi:binding>
+
+        </jndi:bindings>
+    </attribute>
+</mbean>    

Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/TomcatInjectionContainer.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -38,7 +38,6 @@
 import java.util.Set;
 
 import javax.naming.Context;
-import javax.naming.InitialContext;
 import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 import javax.servlet.Filter;
@@ -55,6 +54,8 @@
 import org.jboss.ejb3.deployers.JBoss5DependencyPolicy;
 import org.jboss.ejb3.javaee.AbstractJavaEEComponent;
 import org.jboss.ejb3.javaee.SimpleJavaEEModule;
+import org.jboss.ejb3.vfs.impl.vfs3.VirtualFileWrapper;
+import org.jboss.ejb3.vfs.spi.VirtualFile;
 import org.jboss.injection.DependsHandler;
 import org.jboss.injection.EncInjector;
 import org.jboss.injection.ExtendedInjectionContainer;
@@ -62,19 +63,16 @@
 import org.jboss.injection.Injector;
 import org.jboss.injection.PersistenceContextHandler;
 import org.jboss.injection.PersistenceUnitHandler;
+import org.jboss.injection.manager.spi.InjectionManager;
 import org.jboss.jpa.resolvers.PersistenceUnitDependencyResolver;
 import org.jboss.logging.Logger;
 import org.jboss.metadata.javaee.spec.Environment;
 import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
 import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.ejb3.vfs.spi.VirtualFile;
-import org.jboss.ejb3.vfs.impl.vfs3.VirtualFileWrapper;
 import org.jboss.reloaded.naming.spi.JavaEEComponent;
 import org.jboss.web.WebApplication;
 import org.jboss.web.tomcat.service.injection.TomcatInjectionUtils;
 import org.jboss.web.tomcat.service.injection.WebEJBHandler;
-import org.jboss.web.tomcat.service.injection.WebResourceHandler;
-import org.jboss.web.tomcat.service.injection.WebServiceRefInjectionHandler;
 
 /**
  * The TomcatInjectionContainer.
@@ -145,6 +143,11 @@
    private List<Injector> defaultInjectors;
    // the naming component counter-part
    private JavaEEComponent component;
+   
+   /**
+    * Injection Manager
+    */
+   private InjectionManager injectionManager;
 
 
    static
@@ -201,7 +204,7 @@
    }
 
    public TomcatInjectionContainer(WebApplication appInfo, DeploymentUnit unit, org.apache.catalina.Context catalinaContext,
-         PersistenceUnitDependencyResolver resolver, Set<String> dynamicClassLoaders, JavaEEComponent component)
+         PersistenceUnitDependencyResolver resolver, Set<String> dynamicClassLoaders, JavaEEComponent component, InjectionManager injectionManager)
    {
       super(new SimpleJavaEEModule(appInfo.getName()));
 
@@ -219,7 +222,9 @@
       assert this.webDD != null : "webDD is null (no JBossWebMetaData attachment in VFSDeploymentUnit)";
 
       this.component = component;
+      this.injectionManager = injectionManager;
    }
+   
 
    public void setDefaultInjectors(List<Injector> injectors)
    {
@@ -382,18 +387,19 @@
          {
             allInjectors.addAll(defaultInjectors);
          }
-         if (allInjectors.size() == 0)
-         {
-            if (trace)
-               log.trace("-- no injectors found for: " + object);
-            return;
-         }
          if (trace)
             log.trace("-- doing injections for: " + object);
          for (Injector injector : allInjectors)
          {
             injector.inject(object);
          }
+         // TODO: Ultimately, once the injection is completely
+         // managed by InjectionManager, we should get rid of all other injectors
+         // used in this method (maybe except for "defaultInjectors") and instead
+         // just use the InjectionManager
+         // Use the InjectionManager
+         this.injectionManager.inject(object);
+
       }
 
    /**
@@ -481,7 +487,7 @@
 
       return injectors;
    }
-
+   
    /**
     * Check if the class is a dynamic bean.
     * 
@@ -580,15 +586,20 @@
       {
          log.debug("JPA injection disabled", e);
       }
-      handlers.add(new WebResourceHandler<Environment>());
-      try
-      {
-         handlers.add(new WebServiceRefInjectionHandler<Environment>());
-      }
-      catch (NoClassDefFoundError e)
-      {
-         log.debug("WS injection disabled", e);
-      }
+      // Disable @Resource handler, since it's now handled by switchboard/jboss-injection
+      // combination
+      //handlers.add(new WebResourceHandler<Environment>());
+      
+      // Disable @WebServiceRef (service-ref) handler, since it's now handled by switchboard and jboss-injection
+      // combination
+//      try
+//      {
+//         handlers.add(new WebServiceRefInjectionHandler<Environment>());
+//      }
+//      catch (NoClassDefFoundError e)
+//      {
+//         log.debug("WS injection disabled", e);
+//      }
 
       ClassLoader old = Thread.currentThread().getContextClassLoader();
       ClassLoader webLoader = getClassloader();

Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployer.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -29,6 +29,7 @@
 import org.jboss.mx.util.ObjectNameFactory;
 import org.jboss.reloaded.naming.deployers.javaee.JavaEEComponentInformer;
 import org.jboss.security.plugins.JaasSecurityManagerServiceMBean;
+import org.jboss.switchboard.spi.Barrier;
 import org.jboss.web.deployers.AbstractWarDeployer;
 import org.jboss.web.deployers.AbstractWarDeployment;
 
@@ -130,6 +131,7 @@
    {
       this.componentInformer = componentInformer;
       setInputs(componentInformer.getRequiredAttachments());
+      addInput(Barrier.class);
    }
 
    public String getName()

Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/deployers/TomcatDeployment.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -198,7 +198,7 @@
 
       TomcatInjectionContainer injectionContainer = 
          new TomcatInjectionContainer(webApp, depUnit, context, 
-               getPersistenceUnitDependencyResolver(), config.getDynamicClassloaders(), component);
+               getPersistenceUnitDependencyResolver(), config.getDynamicClassloaders(), component, this.getInjectionManager());
 
       if (kernel != null)
       {
@@ -414,8 +414,8 @@
                // TODO: The enc should be an input?
                currentThread.setContextClassLoader(webLoader.getClassLoader());
                metaData.setENCLoader(webLoader.getClassLoader());
-               Context envCtx = component.getContext();
-               // Add ORB/UserTransaction
+               Context javaCompCtx = component.getContext();
+//               // Add ORB/UserTransaction
                ORB orb = null;
                try
                {
@@ -424,7 +424,7 @@
                   // Bind the orb
                   if (orb != null)
                   {
-                     NonSerializableFactory.rebind(envCtx, "ORB", orb);
+                     NonSerializableFactory.rebind(javaCompCtx, "ORB", orb);
                      log.debug("Bound java:comp/ORB");
                   }
                }
@@ -434,18 +434,18 @@
                }
 
                // JTA links
-               envCtx.bind("TransactionSynchronizationRegistry", new LinkRef("java:TransactionSynchronizationRegistry"));
+               javaCompCtx.bind("TransactionSynchronizationRegistry", new LinkRef("java:TransactionSynchronizationRegistry"));
                log.debug("Linked java:comp/TransactionSynchronizationRegistry to JNDI name: java:TransactionSynchronizationRegistry");
-               envCtx.bind("UserTransaction", new LinkRef("UserTransaction"));
+               javaCompCtx.bind("UserTransaction", new LinkRef("UserTransaction"));
                log.debug("Linked java:comp/UserTransaction to JNDI name: UserTransaction");
-               envCtx = envCtx.createSubcontext("env");
+               //envCtx = envCtx.createSubcontext("env");
                injectionContainer.populateEnc(webLoader.getClassLoader());
 
                // TODO: this should be bindings in the metadata
                currentThread.setContextClassLoader(webLoader.getClassLoader());
                String securityDomain = metaData.getSecurityDomain();
                log.debug("linkSecurityDomain");
-               linkSecurityDomain(securityDomain, envCtx);
+               linkSecurityDomain(securityDomain, javaCompCtx);
 
             }
             catch (Throwable t)

Modified: trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/injection/WebResourceHandler.java
===================================================================
--- trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/injection/WebResourceHandler.java	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/tomcat/src/main/java/org/jboss/web/tomcat/service/injection/WebResourceHandler.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -33,7 +33,6 @@
 import javax.annotation.Resources;
 import javax.ejb.EJBContext;
 import javax.ejb.EJBException;
-import javax.ejb.SessionContext;
 import javax.ejb.TimerService;
 import javax.transaction.UserTransaction;
 import javax.xml.ws.WebServiceContext;
@@ -300,18 +299,18 @@
       for (MessageDestinationReferenceMetaData envRef : refs)
       {
          String encName = "env/" + envRef.getMessageDestinationRefName();
-         if (container.getEncInjectors().containsKey(encName))
-            continue;
-         String jndiName = envRef.getMappedName();
-         if (jndiName == null || jndiName.equals(""))
-         {
-            jndiName = envRef.getResolvedJndiName();
-            if (jndiName == null || jndiName.equals(""))
-               throw new RuntimeException("mapped-name is required for " + envRef.getMessageDestinationRefName()
-                     + " of deployment " + container.getIdentifier());
-         }
-         container.getEncInjectors().put(encName,
-               new LinkRefEncInjector(encName, jndiName, "<message-destination-ref>"));
+//         if (container.getEncInjectors().containsKey(encName))
+//            continue;
+//         String jndiName = envRef.getMappedName();
+//         if (jndiName == null || jndiName.equals(""))
+//         {
+//            jndiName = envRef.getResolvedJndiName();
+//            if (jndiName == null || jndiName.equals(""))
+//               throw new RuntimeException("mapped-name is required for " + envRef.getMessageDestinationRefName()
+//                     + " of deployment " + container.getIdentifier());
+//         }
+//         container.getEncInjectors().put(encName,
+//               new LinkRefEncInjector(encName, jndiName, "<message-destination-ref>"));
          InjectionUtil.injectionTarget(encName, envRef, container, container.getEncInjections());
       }
    }
@@ -322,12 +321,12 @@
          return;
       if (xml.getMessageDestinationReferences() != null)
          loadXmlMessageDestinationRefs(container, xml.getMessageDestinationReferences());
-      if (xml.getResourceEnvironmentReferences() != null)
-         loadXmlResourceEnvRefs(container, xml.getResourceEnvironmentReferences());
+//      if (xml.getResourceEnvironmentReferences() != null)
+//         loadXmlResourceEnvRefs(container, xml.getResourceEnvironmentReferences());
       if (xml.getResourceReferences() != null)
          loadXmlResourceRefs(container, xml.getResourceReferences());
-      if (xml.getEnvironmentEntries() != null)
-         loadEnvEntry(container, xml.getEnvironmentEntries());
+//      if (xml.getEnvironmentEntries() != null)
+//         loadEnvEntry(container, xml.getEnvironmentEntries());
    }
 
    public void handleClassAnnotations(Class<?> clazz, InjectionContainer container)

Modified: trunk/webservices/pom.xml
===================================================================
--- trunk/webservices/pom.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/webservices/pom.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -83,6 +83,14 @@
     </dependency>
     <!-- jboss provided dependencies -->
     <dependency>
+      <groupId>org.jboss.switchboard</groupId>
+      <artifactId>jboss-switchboard-spi</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.switchboard</groupId>
+      <artifactId>jboss-switchboard-javaee</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.jboss.spec.javax.xml.ws</groupId>
       <artifactId>jboss-jaxws-api_2.2_spec</artifactId>
       <scope>provided</scope>

Copied: trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/ServiceRefResourceProvider.java (from rev 109338, branches/switchboard-integration/webservices/src/main/java/org/jboss/webservices/integration/injection/ServiceRefResourceProvider.java)
===================================================================
--- trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/ServiceRefResourceProvider.java	                        (rev 0)
+++ trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/ServiceRefResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,425 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2010, 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.webservices.integration.injection;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.Referenceable;
+import javax.xml.namespace.QName;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.serviceref.VirtualFileAdaptor;
+import org.jboss.switchboard.javaee.environment.Addressing;
+import org.jboss.switchboard.javaee.environment.Handler;
+import org.jboss.switchboard.javaee.environment.HandlerChain;
+import org.jboss.switchboard.javaee.environment.PortComponent;
+import org.jboss.switchboard.javaee.environment.ServiceRefType;
+import org.jboss.switchboard.javaee.jboss.environment.JBossPortComponent;
+import org.jboss.switchboard.javaee.jboss.environment.JBossServiceRefType;
+import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
+import org.jboss.switchboard.spi.Resource;
+import org.jboss.wsf.common.ResourceLoaderAdapter;
+import org.jboss.wsf.spi.SPIProvider;
+import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.wsf.spi.deployment.UnifiedVirtualFile;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedCallPropertyMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainsMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedInitParamMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedPortComponentRefMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedStubPropertyMetaData;
+import org.jboss.wsf.spi.serviceref.ServiceRefHandler;
+import org.jboss.wsf.spi.serviceref.ServiceRefHandlerFactory;
+
+/**
+ * Service reference resource provider.
+ *
+ * Conventions used in this source code are:
+ * <ul>
+ *  <li>SBMD - switch board meta data</li>
+ *  <li>UMDM - jbossws unified meta data model</li>
+ * </ul>
+ *
+ * @author alessio.soldano at jboss.com
+ * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
+ */
+public final class ServiceRefResourceProvider implements MCBasedResourceProvider<ServiceRefType>
+{
+
+   private static final Logger log = Logger.getLogger(ServiceRefResourceProvider.class);
+
+   private ServiceRefHandler delegate;
+
+   /**
+    * Constructor.
+    */
+   public ServiceRefResourceProvider()
+   {
+      final SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
+      this.delegate = spiProvider.getSPI(ServiceRefHandlerFactory.class).getServiceRefHandler();
+   }
+
+   /**
+    * Provides service ref resource.
+    */
+   @Override
+   public Resource provide(final DeploymentUnit deploymentUnit, final ServiceRefType serviceRefSBMD)
+   {
+      final UnifiedVirtualFile vfsRoot = this.getUnifiedVirtualFile(deploymentUnit);
+      final UnifiedServiceRefMetaData serviceRefUMDM = this.getUnifiedServiceRefMetaData(vfsRoot, serviceRefSBMD);
+      final Referenceable jndiReferenceable = this.delegate.createReferenceable(serviceRefUMDM);
+
+      return new ServiceRefResource(jndiReferenceable);
+   }
+
+   /**
+    * Inform about type this resource handler can handle.
+    * 
+    * @return handled type
+    */
+   @Override
+   public Class<ServiceRefType> getEnvironmentEntryType()
+   {
+      return ServiceRefType.class;
+   }
+
+   /**
+    * Constructs vfs root from deployment unit.
+    * 
+    * @param deploymentUnit
+    * @return vfs root
+    */
+   private UnifiedVirtualFile getUnifiedVirtualFile(final DeploymentUnit deploymentUnit)
+   {
+      if (deploymentUnit instanceof VFSDeploymentUnit)
+      {
+         return new VirtualFileAdaptor(((VFSDeploymentUnit) deploymentUnit).getRoot());
+      }
+      else
+      {
+         return new ResourceLoaderAdapter(deploymentUnit.getClassLoader());
+      }
+   }
+
+   /**
+    * Translates service ref switchboard meta data to JBossWS unified service ref meta data.
+    * 
+    * @param vfsRoot virtual file system root
+    * @param serviceRefSBMD service reference switchboard meta data
+    * @return unified jbossws service reference meta data
+    */
+   private UnifiedServiceRefMetaData getUnifiedServiceRefMetaData(final UnifiedVirtualFile vfsRoot,
+         final ServiceRefType serviceRefSBMD)
+   {
+      final UnifiedServiceRefMetaData serviceRefUMDM = new UnifiedServiceRefMetaData(vfsRoot);
+      serviceRefUMDM.setServiceRefName(serviceRefSBMD.getName());
+      serviceRefUMDM.setServiceRefType(serviceRefSBMD.getType());
+      serviceRefUMDM.setServiceInterface(serviceRefSBMD.getServiceInterface());
+      serviceRefUMDM.setWsdlFile(serviceRefSBMD.getWsdlFile());
+      serviceRefUMDM.setMappingFile(serviceRefSBMD.getMappingFile());
+      serviceRefUMDM.setServiceQName(serviceRefSBMD.getQName());
+      serviceRefUMDM.setHandlerChain(serviceRefSBMD.getHandlerChain());
+
+      // propagate addressing properties
+      serviceRefUMDM.setAddressingEnabled(serviceRefSBMD.isAddressingEnabled());
+      serviceRefUMDM.setAddressingRequired(serviceRefSBMD.isAddressingRequired());
+      serviceRefUMDM.setAddressingResponses(serviceRefSBMD.getAddressingResponses());
+
+      // propagate MTOM properties
+      serviceRefUMDM.setMtomEnabled(serviceRefSBMD.isMtomEnabled());
+      serviceRefUMDM.setMtomThreshold(serviceRefSBMD.getMtomThreshold());
+
+      // propagate respect binding properties
+      serviceRefUMDM.setRespectBindingEnabled(serviceRefSBMD.isRespectBindingEnabled());
+
+      // propagate port compoments
+      final Collection<? extends PortComponent> portComponentsSBMD = serviceRefSBMD.getPortComponents();
+      if (portComponentsSBMD != null)
+      {
+         for (final PortComponent portComponentSBMD : portComponentsSBMD)
+         {
+            final UnifiedPortComponentRefMetaData portComponentUMDM = this.getUnifiedPortComponentRefMetaData(
+                  serviceRefUMDM, portComponentSBMD);
+            if (portComponentUMDM.getServiceEndpointInterface() != null || portComponentUMDM.getPortQName() != null)
+            {
+               serviceRefUMDM.addPortComponentRef(portComponentUMDM);
+            }
+            else
+            {
+               log.warn("Ignoring <port-component-ref> without <service-endpoint-interface> and <port-qname>: "
+                     + portComponentUMDM);
+            }
+         }
+      }
+
+      // propagate handlers
+      final Collection<Handler> handlersSBMD = serviceRefSBMD.getHandlers();
+      if (handlersSBMD != null)
+      {
+         for (final Handler handlerSBMD : handlersSBMD)
+         {
+            final UnifiedHandlerMetaData handlerUMDM = this.getUnifiedHandlerMetaData(handlerSBMD);
+            serviceRefUMDM.addHandler(handlerUMDM);
+         }
+      }
+
+      // propagate handler chains
+      final List<HandlerChain> handlerChainsSBMD = serviceRefSBMD.getHandlerChains();
+      if (handlerChainsSBMD != null)
+      {
+         final UnifiedHandlerChainsMetaData handlerChainsUMDM = this.getUnifiedHandlerChainsMetaData(handlerChainsSBMD);
+         serviceRefUMDM.setHandlerChains(handlerChainsUMDM);
+      }
+
+      // propagate jboss specific MD
+      if (serviceRefSBMD instanceof JBossServiceRefType)
+      {
+         this.processUnifiedJBossServiceRefMetaData(serviceRefUMDM, serviceRefSBMD);
+      }
+
+      return serviceRefUMDM;
+   }
+
+   /**
+    * Translates jboss service ref switchboard meta data to JBossWS unified service ref meta data.
+    * 
+    * @param serviceRefUMDM service reference unified meta data
+    * @param serviceRefSBMD service reference switchboard meta data
+    */
+   private void processUnifiedJBossServiceRefMetaData(final UnifiedServiceRefMetaData serviceRefUMDM,
+         final ServiceRefType serviceRefSBMD)
+   {
+      final JBossServiceRefType jbossServiceRefSBMD = (JBossServiceRefType) serviceRefSBMD;
+      serviceRefUMDM.setServiceImplClass(jbossServiceRefSBMD.getServiceClass());
+      serviceRefUMDM.setConfigName(jbossServiceRefSBMD.getConfigName());
+      serviceRefUMDM.setConfigFile(jbossServiceRefSBMD.getConfigFile());
+      serviceRefUMDM.setWsdlOverride(jbossServiceRefSBMD.getWsdlOverride());
+      serviceRefUMDM.setHandlerChain(jbossServiceRefSBMD.getHandlerChain());
+   }
+
+   /**
+    * Translates handler chains switchboard meta data to JBossWS unified handler chains meta data.
+    * 
+    * @param handlerChainsSBMD handler chains switchboard meta data
+    * @return handler chains JBossWS unified meta data
+    */
+   private UnifiedHandlerChainsMetaData getUnifiedHandlerChainsMetaData(final List<HandlerChain> handlerChainsSBMD)
+   {
+      final UnifiedHandlerChainsMetaData handlerChainsUMDM = new UnifiedHandlerChainsMetaData();
+
+      for (final HandlerChain handlerChainSBMD : handlerChainsSBMD)
+      {
+         final UnifiedHandlerChainMetaData handlerChainUMDM = new UnifiedHandlerChainMetaData();
+         handlerChainUMDM.setServiceNamePattern(handlerChainSBMD.getServiceNamePattern());
+         handlerChainUMDM.setPortNamePattern(handlerChainSBMD.getPortNamePattern());
+         handlerChainUMDM.setProtocolBindings(handlerChainSBMD.getProtocolBindings());
+
+         final List<Handler> handlersSBMD = handlerChainSBMD.getHandlers();
+         for (final Handler handlerSBMD : handlersSBMD)
+         {
+            final UnifiedHandlerMetaData handlerUMDM = getUnifiedHandlerMetaData(handlerSBMD);
+            handlerChainUMDM.addHandler(handlerUMDM);
+         }
+
+         handlerChainsUMDM.addHandlerChain(handlerChainUMDM);
+      }
+
+      return handlerChainsUMDM;
+   }
+
+   /**
+    * Translates handler switchboard meta data to JBossWS unified handler meta data.
+    * 
+    * @param handlerSBMD handler switchboard meta data
+    * @return handler JBossWS unified meta data
+    */
+   private UnifiedHandlerMetaData getUnifiedHandlerMetaData(final Handler handlerSBMD)
+   {
+      final UnifiedHandlerMetaData handlerUMDM = new UnifiedHandlerMetaData();
+      handlerUMDM.setHandlerName(handlerSBMD.getHandlerName());
+      handlerUMDM.setHandlerClass(handlerSBMD.getHandlerClass());
+
+      // translate handler init params
+      final Map<String, String> handlerInitParamsSBMD = handlerSBMD.getInitParams();
+      if (handlerInitParamsSBMD != null)
+      {
+         for (final String initParamName : handlerInitParamsSBMD.keySet())
+         {
+            final UnifiedInitParamMetaData handlerInitParamUMDM = new UnifiedInitParamMetaData();
+            handlerInitParamUMDM.setParamName(initParamName);
+            handlerInitParamUMDM.setParamValue(handlerInitParamsSBMD.get(initParamName));
+            handlerUMDM.addInitParam(handlerInitParamUMDM);
+         }
+      }
+
+      // translate handler soap headers
+      final Collection<QName> handlerSoapHeadersSBDM = handlerSBMD.getSoapHeaders();
+      if (handlerSoapHeadersSBDM != null)
+      {
+         for (final QName soapHeader : handlerSoapHeadersSBDM)
+         {
+            handlerUMDM.addSoapHeader(soapHeader);
+         }
+      }
+
+      // translate handler soap roles
+      final Collection<String> handlerSoapRolesSBMD = handlerSBMD.getSoapRoles();
+      if (handlerSoapRolesSBMD != null)
+      {
+         for (final String soapRole : handlerSoapRolesSBMD)
+         {
+            handlerUMDM.addSoapRole(soapRole);
+         }
+      }
+
+      // translate handler port names
+      final Collection<String> handlerPortNamesSBMD = handlerSBMD.getPortNames();
+      if (handlerPortNamesSBMD != null)
+      {
+         for (final String portName : handlerPortNamesSBMD)
+         {
+            handlerUMDM.addPortName(portName);
+         }
+      }
+
+      return handlerUMDM;
+   }
+
+   /**
+    * Translates port component ref switchboard meta data to JBossWS unified port component ref meta data.
+    * 
+    * @param serviceRefUMDM service ref unified meta data
+    * @param portComponentSBMD port component ref switchboard meta data
+    * @return port component ref unified meta data
+    */
+   private UnifiedPortComponentRefMetaData getUnifiedPortComponentRefMetaData(
+         final UnifiedServiceRefMetaData serviceRefUMDM, final PortComponent portComponentSBMD)
+   {
+      final UnifiedPortComponentRefMetaData portComponentUMDM = new UnifiedPortComponentRefMetaData(serviceRefUMDM);
+
+      // propagate service endpoint interface
+      portComponentUMDM.setServiceEndpointInterface(portComponentSBMD.getEndpointInterface());
+
+      // propagate MTOM properties
+      portComponentUMDM.setMtomEnabled(portComponentSBMD.isMtomEnabled());
+      portComponentUMDM.setMtomThreshold(portComponentSBMD.getMtomThreshold());
+
+      // propagate addressing properties
+      final Addressing addressingSBMD = portComponentSBMD.getAddressing();
+      if (addressingSBMD != null)
+      {
+         portComponentUMDM.setAddressingEnabled(addressingSBMD.isEnabled());
+         portComponentUMDM.setAddressingRequired(addressingSBMD.isRequired());
+         portComponentUMDM.setAddressingResponses(addressingSBMD.getResponses());
+      }
+
+      // propagate respect binding properties
+      portComponentUMDM.setRespectBindingEnabled(portComponentSBMD.isRespectBindingEnabled());
+
+      // propagate link
+      portComponentUMDM.setPortComponentLink(portComponentSBMD.getLink());
+
+      // propagate jboss specific MD
+      if (portComponentSBMD instanceof JBossPortComponent)
+      {
+         this.processUnifiedJBossPortComponentRefMetaData(portComponentUMDM, portComponentSBMD);
+      }
+
+      return portComponentUMDM;
+   }
+
+   /**
+    * Translates jboss port component ref switchboard meta data to JBossWS unified port component ref meta data.
+    * 
+    * @param portComponentUMDM port component unified meta data
+    * @param portComponentSBMD port component switchboard meta data
+    */
+   private void processUnifiedJBossPortComponentRefMetaData(final UnifiedPortComponentRefMetaData portComponentUMDM,
+         final PortComponent portComponentSBMD)
+   {
+      final JBossPortComponent jbossPortComponentSBMD = (JBossPortComponent) portComponentSBMD;
+
+      // propagate port QName
+      portComponentUMDM.setPortQName(jbossPortComponentSBMD.getPortQName());
+
+      // propagate configuration properties
+      portComponentUMDM.setConfigName(jbossPortComponentSBMD.getConfigName());
+      portComponentUMDM.setConfigFile(jbossPortComponentSBMD.getConfigFile());
+
+      // propagate stub properties
+      final Map<String, String> stubPropertiesSBMD = jbossPortComponentSBMD.getStubProperties();
+      if (stubPropertiesSBMD != null)
+      {
+         for (final String propertyName : stubPropertiesSBMD.keySet())
+         {
+            final UnifiedStubPropertyMetaData stubPropertyUMDM = new UnifiedStubPropertyMetaData();
+            stubPropertyUMDM.setPropName(propertyName);
+            stubPropertyUMDM.setPropValue(stubPropertiesSBMD.get(propertyName));
+            portComponentUMDM.addStubProperty(stubPropertyUMDM);
+         }
+      }
+
+      // propagate call properties
+      final Map<String, String> callPropertiesSBMD = jbossPortComponentSBMD.getCallProperties();
+      if (callPropertiesSBMD != null)
+      {
+         for (final String propertyName : callPropertiesSBMD.keySet())
+         {
+            final UnifiedCallPropertyMetaData callPropertyUMDM = new UnifiedCallPropertyMetaData();
+            callPropertyUMDM.setPropName(propertyName);
+            callPropertyUMDM.setPropValue(callPropertiesSBMD.get(propertyName));
+            portComponentUMDM.addCallProperty(callPropertyUMDM);
+         }
+      }
+   }
+
+   /**
+    * Switchboard service ref resource.
+    */
+   private static final class ServiceRefResource implements Resource
+   {
+      private final Referenceable target;
+
+      private ServiceRefResource(final Referenceable target)
+      {
+         this.target = target;
+      }
+
+      @Override
+      public Object getDependency()
+      {
+         return null;
+      }
+
+      @Override
+      public Object getTarget()
+      {
+         return this.target;
+      }
+   }
+}

Copied: trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/WebServiceContextResourceProvider.java (from rev 109338, branches/switchboard-integration/webservices/src/main/java/org/jboss/webservices/integration/injection/WebServiceContextResourceProvider.java)
===================================================================
--- trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/WebServiceContextResourceProvider.java	                        (rev 0)
+++ trunk/webservices/src/main/java/org/jboss/webservices/integration/injection/WebServiceContextResourceProvider.java	2010-11-15 15:58:01 UTC (rev 109340)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.webservices.integration.injection;
+
+import javax.xml.ws.WebServiceContext;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.switchboard.javaee.jboss.environment.JBossResourceEnvRefType;
+import org.jboss.switchboard.mc.spi.MCBasedResourceProvider;
+import org.jboss.switchboard.spi.Resource;
+import org.jboss.wsf.common.injection.ThreadLocalAwareWebServiceContext;
+
+/**
+ * WebServiceContext resource provider.
+ *
+ * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
+ */
+public final class WebServiceContextResourceProvider implements MCBasedResourceProvider<JBossResourceEnvRefType>
+{
+
+   @Override
+   public Resource provide(final DeploymentUnit unit, final JBossResourceEnvRefType resEnvRef)
+   {
+      return new WebServiceContextResource(ThreadLocalAwareWebServiceContext.getInstance());
+   }
+
+   @Override
+   public Class<JBossResourceEnvRefType> getEnvironmentEntryType()
+   {
+      return JBossResourceEnvRefType.class;
+   }
+
+   /**
+    * Switchboard web service context resource.
+    */
+   private static final class WebServiceContextResource implements Resource
+   {
+      private final WebServiceContext target;
+
+      private WebServiceContextResource(final WebServiceContext target)
+      {
+         this.target = target;
+      }
+
+      @Override
+      public Object getDependency()
+      {
+         return null;
+      }
+
+      @Override
+      public Object getTarget()
+      {
+         return this.target;
+      }
+   }
+}

Modified: trunk/webservices/src/resources/jbossws-jboss.deployer/META-INF/stack-agnostic-jboss-beans.xml
===================================================================
--- trunk/webservices/src/resources/jbossws-jboss.deployer/META-INF/stack-agnostic-jboss-beans.xml	2010-11-15 14:35:05 UTC (rev 109339)
+++ trunk/webservices/src/resources/jbossws-jboss.deployer/META-INF/stack-agnostic-jboss-beans.xml	2010-11-15 15:58:01 UTC (rev 109340)
@@ -2,6 +2,18 @@
 
 <deployment xmlns="urn:jboss:bean-deployer:2.0">
 
+  <!--  processes @WebServiceRef resources and their DD equivalents (EE.5.6 of Java EE6 spec) -->
+  <bean
+    name="org.jboss.switchboard.WebServiceRefResourceProvider"
+    class="org.jboss.webservices.integration.injection.ServiceRefResourceProvider"
+  />
+
+  <!--  processes @Resource annotated WebServiceContext beans (EE.5.6 of Java EE6 spec) -->
+  <bean
+    name="org.jboss.switchboard.WebServiceContextResourceProvider"
+    class="org.jboss.webservices.integration.injection.WebServiceContextResourceProvider"
+  />
+
   <!-- Wraps single instance of the kernel -->
   <bean name="WSIoCContainerProxy" class="org.jboss.webservices.integration.ioc.IoCContainerProxyImpl">
     <property name="kernel"><inject bean="jboss.kernel:service=Kernel"/></property>
@@ -51,11 +63,11 @@
   <bean name="WSDescriptorDeployer" class="org.jboss.webservices.integration.deployers.WSDescriptorDeployer">
     <incallback method="setProcessor"/>
   </bean>
-  
+
   <bean name="JMSDescriptorDeployer" class="org.jboss.webservices.integration.deployers.JMSDescriptorDeployer">
     <incallback method="setProcessor"/>
   </bean>
-  
+
   <bean name="WSEJBAdapterDeployer" class="org.jboss.webservices.integration.deployers.WSEJBAdapterDeployer"/>
 
   <bean name="WSTypeDeployer" class="org.jboss.webservices.integration.deployers.WSTypeDeployer"/>
@@ -72,7 +84,7 @@
     <incallback method="addDeployer"/>
     <uncallback method="removeDeployer"/>
   </bean>
-  
+
   <!-- The AS specific deployment aspects -->
   <bean name="WSContainerMetaDataDeploymentAspect" class="org.jboss.webservices.integration.metadata.ContainerMetaDataDeploymentAspect">
     <property name="provides">ContainerMetaData, VFSRoot</property>



More information about the jboss-cvs-commits mailing list