You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/08/10 19:06:01 UTC

svn commit: r984123 - in /geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src: main/java/org/apache/geronimo/naming/deployment/ test/resources/annotation/

Author: gawor
Date: Tue Aug 10 17:06:00 2010
New Revision: 984123

URL: http://svn.apache.org/viewvc?rev=984123&view=rev
Log:
GERONIMO-5518: Support injection of primitive types using @Resource annotation

Modified:
    geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java
    geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
    geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/resources/annotation/env-entry-expected.xml

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java?rev=984123&r1=984122&r2=984123&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java Tue Aug 10 17:06:00 2010
@@ -378,8 +378,8 @@ public abstract class AbstractNamingBuil
     }
 
     //duplicated in ResourceAnnotationHelper
-    private static Class<?> deprimitivize(Class<?> fieldType) {
-        return fieldType = fieldType.isPrimitive()? primitives.get(fieldType): fieldType;
+    public static Class<?> deprimitivize(Class<?> fieldType) {
+        return fieldType = fieldType.isPrimitive() ? primitives.get(fieldType): fieldType;
     }
 
     private static final Map<Class<?>, Class<?>> primitives = new HashMap<Class<?>, Class<?>>();

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java?rev=984123&r1=984122&r2=984123&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java Tue Aug 10 17:06:00 2010
@@ -19,10 +19,13 @@ package org.apache.geronimo.naming.deplo
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.annotation.Resource;
 import javax.xml.namespace.QName;
@@ -216,24 +219,26 @@ public class EnvironmentEntryBuilder ext
 
         public static final EnvEntryRefProcessor INSTANCE = new EnvEntryRefProcessor();
 
+        private static final Set<String> knownEnvironmentEntries = new HashSet<String>(Arrays.asList(
+                "boolean", "java.lang.Boolean",
+                "char", "java.lang.Character",
+                "byte", "java.lang.Byte",
+                "short", "java.lang.Short",
+                "int", "java.lang.Integer",
+                "long", "java.lang.Long",
+                "float", "java.lang.Float",
+                "double", "java.lang.Double",
+                "java.lang.String",
+                "java.lang.Class"
+        ));
+                
         private EnvEntryRefProcessor() {
         }
-
+        
         public boolean processResource(JndiConsumer annotatedApp, Resource annotation, Class cls, Method method, Field field) {
             String resourceName = getResourceName(annotation, method, field);
             Class resourceType = getResourceTypeClass(annotation, method, field);
-            if (resourceType.equals(String.class) ||
-                    resourceType.equals(Character.class) ||
-                    resourceType.equals(Integer.class) ||
-                    resourceType.equals(Boolean.class) ||
-                    resourceType.equals(Double.class) ||
-                    resourceType.equals(Byte.class) ||
-                    resourceType.equals(Short.class) ||
-                    resourceType.equals(Long.class) ||
-                    resourceType.equals(Float.class) ||
-                    resourceType.equals(Class.class) ||
-                    resourceType.isEnum()) {
-
+            if (knownEnvironmentEntries.contains(resourceType.getName()) || resourceType.isEnum()) {
                 log.debug("addResource(): <env-entry> found");
 
                 boolean exists = false;
@@ -267,7 +272,7 @@ public class EnvironmentEntryBuilder ext
 
                         if (!resourceType.equals(Object.class)) {
                             // env-entry-type
-                            envEntry.setEnvEntryType(resourceType.getCanonicalName());
+                            envEntry.setEnvEntryType(deprimitivize(resourceType).getCanonicalName());
                         }
                         if (method != null || field != null) {
                             // injectionTarget

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/resources/annotation/env-entry-expected.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/resources/annotation/env-entry-expected.xml?rev=984123&r1=984122&r2=984123&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/resources/annotation/env-entry-expected.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/resources/annotation/env-entry-expected.xml Tue Aug 10 17:06:00 2010
@@ -46,13 +46,13 @@
         </injection-target>
         <lookup-name>java:app/foo</lookup-name>
     </env-entry>
-    <!--<env-entry>-->
-        <!--<env-entry-name>Resource3</env-entry-name>-->
-        <!--<env-entry-type>java.lang.Boolean</env-entry-type>-->
-        <!--<mapped-name>mappedName3</mapped-name>-->
-        <!--<injection-target>-->
-            <!--<injection-target-class>org.apache.geronimo.naming.deployment.annotation.ResourceAnnotationExample</injection-target-class>-->
-            <!--<injection-target-name>annotatedField1</injection-target-name>-->
-        <!--</injection-target>-->
-    <!--</env-entry>-->
+    <env-entry>
+        <env-entry-name>Resource3</env-entry-name>
+        <env-entry-type>java.lang.Boolean</env-entry-type>
+        <mapped-name>mappedName3</mapped-name>
+        <injection-target>
+            <injection-target-class>org.apache.geronimo.naming.deployment.annotation.ResourceAnnotationExample</injection-target-class>
+            <injection-target-name>annotatedField1</injection-target-name>
+        </injection-target>
+    </env-entry>
 </web-app>