You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2007/04/10 21:29:03 UTC

svn commit: r527260 - /incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/cmp2/EjbSelect.java

Author: dain
Date: Tue Apr 10 12:29:03 2007
New Revision: 527260

URL: http://svn.apache.org/viewvc?view=rev&rev=527260
Log:
ejbSelect queries can return a primitive type that requires an explicit down cast

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/cmp2/EjbSelect.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/cmp2/EjbSelect.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/cmp2/EjbSelect.java?view=diff&rev=527260&r1=527259&r2=527260
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/cmp2/EjbSelect.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/cmp/cmp2/EjbSelect.java Tue Apr 10 12:29:03 2007
@@ -35,7 +35,25 @@
         }
         CmpContainer cmpContainer = (CmpContainer) container;
         Object result = cmpContainer.select(deploymentInfo, methodSignature, returnType, args);
-        return result;
+        if (result instanceof Number) {
+            Number number = (Number) result;
+            if ("char".equals(returnType) || Character.class.getName().equals(returnType)) {
+                result = new Character((char) number.intValue());
+            } else if ("byte".equals(returnType) || Byte.class.getName().equals(returnType)) {
+                result = number.byteValue();
+            } else if ("short".equals(returnType) || Short.class.getName().equals(returnType)) {
+                result = number.shortValue();
+            } else if ("int".equals(returnType) || Integer.class.getName().equals(returnType)) {
+                result = number.intValue();
+            } else if ("long".equals(returnType) || Long.class.getName().equals(returnType)) {
+                result = number.longValue();
+            } else if ("float".equals(returnType) || Float.class.getName().equals(returnType)) {
+                result = number.floatValue();
+            } else if ("double".equals(returnType) || Double.class.getName().equals(returnType)) {
+                result = number.doubleValue();
+            }
+        }
 
+        return result;
     }
 }