File tree 1 file changed +29
-3
lines changed
1 file changed +29
-3
lines changed Original file line number Diff line number Diff line change @@ -214,7 +214,12 @@ cdef class JavaClass(object):
214
214
cdef jdouble * j_double
215
215
cdef object ret = None
216
216
cdef jsize array_size
217
+
217
218
cdef int i
219
+ cdef jobject obj
220
+ cdef char * c_str
221
+ cdef bytes py_str
222
+ cdef JavaObject ret_jobject
218
223
219
224
if j_object == NULL :
220
225
return None
@@ -288,9 +293,30 @@ cdef class JavaClass(object):
288
293
self .j_env, j_object, j_doubles, 0 )
289
294
290
295
elif r == ' L' :
291
- # TODO support list of strings etc...
292
- raise NotImplementedError (' Array of Java object not done yet' )
293
-
296
+ ret = []
297
+ if definition == ' Ljava/lang/String;' :
298
+ for i in range (array_size):
299
+ obj = self .j_env[0 ].GetObjectArrayElement(
300
+ self .j_env, j_object, i)
301
+ if obj == NULL :
302
+ ret.append(None )
303
+ continue
304
+ c_str = < char * > self .j_env[0 ].GetStringUTFChars(
305
+ self .j_env, obj, NULL )
306
+ py_str = < bytes> c_str
307
+ self .j_env[0 ].ReleaseStringUTFChars(
308
+ self .j_env, j_object, c_str)
309
+ ret.append(py_str)
310
+ else :
311
+ for i in range (array_size):
312
+ obj = self .j_env[0 ].GetObjectArrayElement(
313
+ self .j_env, j_object, i)
314
+ if obj == NULL :
315
+ ret.append(None )
316
+ continue
317
+ ret_jobject = JavaObject()
318
+ ret_jobject.obj = obj
319
+ ret.append(ret_jobject)
294
320
else :
295
321
raise JavaException(' Invalid return definition for array' )
296
322
You can’t perform that action at this time.
0 commit comments