@@ -122,18 +122,25 @@ public class JavaUtil {
122
122
}
123
123
124
124
public static IRubyObject [] convertJavaArrayToRuby (final Ruby runtime , final Object [] objects ) {
125
- JavaConverter converter = getJavaConverter (objects .getClass ().getComponentType ());
126
-
127
- return convertJavaArrayToRuby (runtime , objects , converter );
128
- }
129
-
130
- public static IRubyObject [] convertJavaArrayToRuby (final Ruby runtime , final Object [] objects , JavaConverter converter ) {
131
125
if ( objects == null || objects .length == 0 ) return IRubyObject .NULL_ARRAY ;
132
126
127
+ if (objects instanceof String []) return convertStringArrayToRuby (runtime , (String []) objects , JAVA_STRING_CONVERTER );
128
+
133
129
IRubyObject [] rubyObjects = new IRubyObject [objects .length ];
134
130
135
131
for (int i = 0 ; i < objects .length ; i ++) {
136
- rubyObjects [i ] = converter .get (runtime , objects , i );
132
+ rubyObjects [i ] = convertJavaToUsableRubyObject (runtime , objects [i ]);
133
+ }
134
+ return rubyObjects ;
135
+ }
136
+
137
+ public static IRubyObject [] convertStringArrayToRuby (final Ruby runtime , final String [] strings , StringConverter converter ) {
138
+ if ( strings == null || strings .length == 0 ) return IRubyObject .NULL_ARRAY ;
139
+
140
+ IRubyObject [] rubyObjects = new IRubyObject [strings .length ];
141
+
142
+ for (int i = 0 ; i < strings .length ; i ++) {
143
+ rubyObjects [i ] = convertJavaToUsableRubyObjectWithConverter (runtime , strings [i ], converter );
137
144
}
138
145
return rubyObjects ;
139
146
}
@@ -857,23 +864,9 @@ public void set(Ruby runtime, Object array, int i, IRubyObject value) {
857
864
}
858
865
}
859
866
860
- public static class InternalStringConverter extends StringConverter {
861
- public InternalStringConverter () {
862
- super ();
863
- }
864
-
865
- @ Override
866
- public IRubyObject convert (Ruby runtime , Object object ) {
867
- if (object == null ) return runtime .getNil ();
868
- return RubyString .newInternalFromJavaExternal (runtime , (String ) object );
869
- }
870
- }
871
-
872
- public static final JavaConverter JAVA_STRING_CONVERTER = new StringConverter ();
873
-
874
- public static final JavaConverter JAVA_INTERNAL_STRING_CONVERTER = new InternalStringConverter ();
867
+ public static final StringConverter JAVA_STRING_CONVERTER = new StringConverter ();
875
868
876
- public static final JavaConverter JAVA_CHARSEQUENCE_CONVERTER = new JavaConverter (String .class ) {
869
+ public static final JavaConverter JAVA_CHARSEQUENCE_CONVERTER = new JavaConverter (CharSequence .class ) {
877
870
public IRubyObject convert (Ruby runtime , Object object ) {
878
871
if (object == null ) return runtime .getNil ();
879
872
return RubyString .newUnicodeString (runtime , (CharSequence )object );
0 commit comments