[jbossws-commits] JBossWS SVN: r9884 - in common/trunk: src/main/java/org/jboss/wsf/common/javax and 1 other directory.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Tue Apr 28 01:47:58 EDT 2009


Author: richard.opalka at jboss.com
Date: 2009-04-28 01:47:58 -0400 (Tue, 28 Apr 2009)
New Revision: 9884

Modified:
   common/trunk/pom.xml
   common/trunk/src/main/java/org/jboss/wsf/common/javax/JavaxAnnotationHelper.java
Log:
[JBWS-2074][JBWS-2631] fixing helper

Modified: common/trunk/pom.xml
===================================================================
--- common/trunk/pom.xml	2009-04-28 05:42:12 UTC (rev 9883)
+++ common/trunk/pom.xml	2009-04-28 05:47:58 UTC (rev 9884)
@@ -26,7 +26,7 @@
   
   <!-- Properties -->
   <properties>
-    <jbossws.spi.version>1.1.1.GA</jbossws.spi.version>
+    <jbossws.spi.version>1.1.2-SNAPSHOT</jbossws.spi.version>
     <jboss.common.version>2.2.7.GA</jboss.common.version>
     <jboss.microcontainer.version>1.0.2</jboss.microcontainer.version>
   </properties>

Modified: common/trunk/src/main/java/org/jboss/wsf/common/javax/JavaxAnnotationHelper.java
===================================================================
--- common/trunk/src/main/java/org/jboss/wsf/common/javax/JavaxAnnotationHelper.java	2009-04-28 05:42:12 UTC (rev 9883)
+++ common/trunk/src/main/java/org/jboss/wsf/common/javax/JavaxAnnotationHelper.java	2009-04-28 05:47:58 UTC (rev 9884)
@@ -26,7 +26,7 @@
 import java.util.Collection;
 
 import javax.annotation.Resource;
-import javax.naming.InitialContext;
+import javax.naming.Context;
 import javax.xml.ws.WebServiceContext;
 
 import org.jboss.logging.Logger;
@@ -49,7 +49,6 @@
 {
 
    private static final Logger LOG = Logger.getLogger(JavaxAnnotationHelper.class);
-   private static final String JNDI_PREFIX = "java:comp/env/";
    private static final ClassProcessor<Method> POST_CONSTRUCT_METHOD_FINDER = new PostConstructMethodFinder();
    private static final ClassProcessor<Method> PRE_DESTROY_METHOD_FINDER = new PreDestroyMethodFinder();
    private static final ClassProcessor<Method> RESOURCE_METHOD_FINDER = new ResourceMethodFinder(WebServiceContext.class, false);
@@ -80,47 +79,48 @@
    {
       if (instance == null)
          throw new IllegalArgumentException("Object instance cannot be null");
+      
+      if (injections == null)
+         return;
 
       Class<?> instanceClass = instance.getClass();
 
-      InitialContext ctx = new InitialContext();
+      // inject descriptor driven annotations
+      final Context ctx = injections.getContext();
+      final String envPrefix = injections.getContextRoot();
 
-      // inject descriptor driven annotations
-      if (injections != null)
+      Collection<InjectionMetaData> injectionMDs = injections.getInjectionsMetaData(instanceClass);
+      for (InjectionMetaData injectionMD : injectionMDs)
       {
-         Collection<InjectionMetaData> injectionMDs = injections.getInjectionsMetaData(instanceClass);
-         for (InjectionMetaData injectionMD : injectionMDs)
+         Method method = getMethod(injectionMD, instanceClass);
+         if (method != null)
          {
-            Method method = getMethod(injectionMD, instanceClass);
-            if (method != null)
+            try
             {
+               inject(instance, method, injectionMD.getEnvEntryName(), ctx, envPrefix);
+            }
+            catch (Exception e)
+            {
+               LOG.warn("Cannot inject method (descriptor driven injection): " + injectionMD, e);
+            }
+         }
+         else
+         {
+            Field field = getField(injectionMD, instanceClass);
+            if (field != null)
+            {
                try
                {
-                  inject(instance, method, injectionMD.getEnvEntryName(), ctx);
+                  inject(instance, field, injectionMD.getEnvEntryName(), ctx, envPrefix);
                }
                catch (Exception e)
                {
-                  LOG.warn("Cannot inject method (descriptor driven injection): " + injectionMD, e);
+                  LOG.warn("Cannot inject field (descriptor driven injection): " + injectionMD, e);
                }
             }
             else
             {
-               Field field = getField(injectionMD, instanceClass);
-               if (field != null)
-               {
-                  try
-                  {
-                     inject(instance, field, injectionMD.getEnvEntryName(), ctx);
-                  }
-                  catch (Exception e)
-                  {
-                     LOG.warn("Cannot inject field (descriptor driven injection): " + injectionMD, e);
-                  }
-               }
-               else
-               {
-                  LOG.warn("Cannot find injection target for: " + injectionMD);
-               }
+               LOG.warn("Cannot find injection target for: " + injectionMD);
             }
          }
       }
@@ -131,7 +131,7 @@
       {
          try
          {
-            inject(instance, method, method.getAnnotation(Resource.class).name(), ctx);
+            inject(instance, method, method.getAnnotation(Resource.class).name(), ctx, envPrefix);
          }
          catch (Exception e)
          {
@@ -145,7 +145,7 @@
       {
          try
          {
-            inject(instance, field, field.getAnnotation(Resource.class).name(), ctx);
+            inject(instance, field, field.getAnnotation(Resource.class).name(), ctx, envPrefix);
          }
          catch (Exception e)
          {
@@ -250,18 +250,19 @@
    /**
     * Injects @Resource annotated method.
     *
+    * @param instance to invoke method on
     * @param method to invoke
-    * @param instance to invoke method on
     * @param resourceName resource name
     * @param cxt JNDI context
+    * @param envPrefix JNDI environment prefix
     * @throws Exception if any error occurs
     * @see org.jboss.wsf.common.javax.finders.ResourceMethodFinder
     */
-   private static void inject(final Object instance, final Method method, final String resourceName, final InitialContext ctx)
+   private static void inject(final Object instance, final Method method, final String resourceName, final Context ctx, final String envPrefix)
    throws Exception
    {
       final String beanName = convertToBeanName(method.getName()); 
-      final Object value = ctx.lookup(getName(resourceName, beanName));
+      final Object value = ctx.lookup(envPrefix + getName(resourceName, beanName));
 
       LOG.debug("Injecting method: " + method);
       invokeMethod(instance, method, new Object[] {value});
@@ -274,14 +275,15 @@
     * @param instance to modify field on
     * @param resourceName resource name
     * @param cxt JNDI context
+    * @param envPrefix JNDI environment prefix
     * @throws Exception if any error occurs
     * @see org.jboss.wsf.common.javax.finders.ResourceFieldFinder
     */
-   private static void inject(final Object instance, final Field field, final String resourceName, final InitialContext ctx)
+   private static void inject(final Object instance, final Field field, final String resourceName, final Context ctx, final String envPrefix)
    throws Exception
    {
       final String beanName = field.getName();
-      final Object value = ctx.lookup(getName(resourceName, beanName));
+      final Object value = ctx.lookup(envPrefix + getName(resourceName, beanName));
 
       LOG.debug("Injecting field: " + field);
       setField(instance, field, value);
@@ -307,7 +309,7 @@
     */
    private static String getName(final String resourceName, final String beanName)
    {
-      return JNDI_PREFIX + (resourceName.length() > 0 ? resourceName : beanName);
+      return resourceName.length() > 0 ? resourceName : beanName;
    }
 
    /**




More information about the jbossws-commits mailing list