[jboss-cvs] JBossAS SVN: r74808 - projects/ejb3/trunk/core/src/main/java/org/jboss/injection.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 18 13:53:33 EDT 2008


Author: alex.loubyansky at jboss.com
Date: 2008-06-18 13:53:33 -0400 (Wed, 18 Jun 2008)
New Revision: 74808

Modified:
   projects/ejb3/trunk/core/src/main/java/org/jboss/injection/WebServiceRefHandler.java
Log:
EJBTHREE-1424

Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/injection/WebServiceRefHandler.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/injection/WebServiceRefHandler.java	2008-06-18 17:19:56 UTC (rev 74807)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/injection/WebServiceRefHandler.java	2008-06-18 17:53:33 UTC (rev 74808)
@@ -24,6 +24,7 @@
 // $Id: WebServiceRefHandler.java 61084 2007-03-05 14:50:45Z thomas.diesler at jboss.com $
 
 import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.HashMap;
@@ -60,6 +61,26 @@
                throw new IllegalStateException ("Duplicate <service-ref-name> in " + sref);
          
          srefMap.put(sref.getServiceRefName(), sref);
+
+         String encName = "env/" + sref.getServiceRefName();
+         AnnotatedElement annotatedElement = sref.getAnnotatedElement();
+         if(annotatedElement == null)
+         {
+            if(sref.getInjectionTargets() != null && sref.getInjectionTargets().size() > 0)
+            {
+               for(ResourceInjectionTargetMetaData trg : sref.getInjectionTargets())
+               {
+                  annotatedElement = InjectionUtil.findInjectionTarget(container.getClassloader(), trg);
+                  addInjector(container, encName, annotatedElement);   
+               }
+            }
+            else
+               log.warn("No injection target for service-ref: " + sref.getServiceRefName());
+         }
+         else
+         {
+            addInjector(container, encName, annotatedElement);   
+         }         
       }
    }
 
@@ -81,6 +102,18 @@
       }
    }
 
+   private void addInjector(InjectionContainer container, String encName, AnnotatedElement annotatedElement)
+   {
+      Injector jndiInjector;
+      if(annotatedElement instanceof Method)
+         jndiInjector = new JndiMethodInjector((Method)annotatedElement, encName, container.getEnc());
+      else if(annotatedElement instanceof Field)
+         jndiInjector = new JndiFieldInjector((Field)annotatedElement, encName, container.getEnc());
+      else
+         throw new IllegalStateException("Annotated element for '" + encName + "' is niether Method nor Field: " + annotatedElement);      
+      container.getInjectors().add(jndiInjector);
+   }
+
    private void bindRefOnType(Class<?> type, InjectionContainer container, WebServiceRef wsref)
    {
       String name = wsref.name();




More information about the jboss-cvs-commits mailing list