| CODENOTIFIER | HelpYou are not signed inSign in |
Project: JRuby
Revision: 7636
Author: headius
Date: 03 Sep 2008 16:58:17
Changes:Make JavaClass.for_name return primitive classes for primitive type names.
Files:| ... | ...@@ -0,0 +1,14 @@ | |
| 1 | require File.dirname(__FILE__) + "/../spec_helper" | |
| 2 | ||
| 3 | describe "Java::JavaClass.for_name" do | |
| 4 | it "should return primitive classes for Java primitive type names" do | |
| 5 | Java::JavaClass.for_name("byte").should == Java::byte.java_class | |
| 6 | Java::JavaClass.for_name("boolean").should == Java::boolean.java_class | |
| 7 | Java::JavaClass.for_name("short").should == Java::short.java_class | |
| 8 | Java::JavaClass.for_name("char").should == Java::char.java_class | |
| 9 | Java::JavaClass.for_name("int").should == Java::int.java_class | |
| 10 | Java::JavaClass.for_name("long").should == Java::long.java_class | |
| 11 | Java::JavaClass.for_name("float").should == Java::float.java_class | |
| 12 | Java::JavaClass.for_name("double").should == Java::double.java_class | |
| 13 | end | |
| 14 | end | |
| 0 | 15 | \ No newline at end of file |
| ... | ...@@ -884,9 +884,30 @@ | |
| 884 | 884 | |
| 885 | 885 | return result; |
| 886 | 886 | } |
| 887 | ||
| 888 | private static Map<String, Class> PRIMITIVE_TO_CLASS = new HashMap<String,Class>(); | |
| 889 | ||
| 890 | static { | |
| 891 | PRIMITIVE_TO_CLASS.put("byte", byte.class); | |
| 892 | PRIMITIVE_TO_CLASS.put("boolean", boolean.class); | |
| 893 | PRIMITIVE_TO_CLASS.put("short", short.class); | |
| 894 | PRIMITIVE_TO_CLASS.put("char", char.class); | |
| 895 | PRIMITIVE_TO_CLASS.put("int", int.class); | |
| 896 | PRIMITIVE_TO_CLASS.put("long", long.class); | |
| 897 | PRIMITIVE_TO_CLASS.put("float", float.class); | |
| 898 | PRIMITIVE_TO_CLASS.put("double", double.class); | |
| 899 | } | |
| 887 | 900 | |
| 888 | 901 | public static synchronized JavaClass forNameVerbose(Ruby runtime, String className) { |
| 889 | Class<?> klass = runtime.getJavaSupport().loadJavaClassVerbose(className); | |
| 902 | Class <?> klass = null; | |
| 903 | if (className.indexOf(".") == -1 && Character.isLowerCase(className.charAt(0))) { | |
| 904 | // one word type name that starts lower-case...it may be a primitive type | |
| 905 | klass = PRIMITIVE_TO_CLASS.get(className); | |
| 906 | } | |
| 907 | ||
| 908 | if (klass == null) { | |
| 909 | klass = runtime.getJavaSupport().loadJavaClassVerbose(className); | |
| 910 | } | |
| 890 | 911 | return JavaClass.get(runtime, klass); |
| 891 | 912 | } |
| 892 | 913 |