File tree Expand file tree Collapse file tree 1 file changed +29
-3
lines changed
Expand file tree Collapse file tree 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):
214214 cdef jdouble * j_double
215215 cdef object ret = None
216216 cdef jsize array_size
217+
217218 cdef int i
219+ cdef jobject obj
220+ cdef char * c_str
221+ cdef bytes py_str
222+ cdef JavaObject ret_jobject
218223
219224 if j_object == NULL :
220225 return None
@@ -288,9 +293,30 @@ cdef class JavaClass(object):
288293 self .j_env, j_object, j_doubles, 0 )
289294
290295 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)
294320 else :
295321 raise JavaException(' Invalid return definition for array' )
296322
You can’t perform that action at this time.
0 commit comments