diff --git a/wrappers/java/genwrapper.py b/wrappers/java/genwrapper.py index 95d050dc1..9a4d28949 100644 --- a/wrappers/java/genwrapper.py +++ b/wrappers/java/genwrapper.py @@ -381,6 +381,7 @@ class JavaTranslator(object): methodDict['objects'] = [] methodDict['lists'] = [] methodDict['array'] = [] + methodDict['bytes'] = [] methodDict['returnedObjectGetter'] = '' for arg in _method.args: methodDict['params'] += ', ' @@ -411,7 +412,10 @@ class JavaTranslator(object): methodDict['params_impl'] += '(' + argCType + ') ' + argname elif type(arg.type) is AbsApi.BaseType: - if arg.type.name == 'string': + if arg.type.name == 'integer' and arg.type.size is not None and arg.type.isref: + methodDict['bytes'].append({'bytesargname': argname, 'bytesargtype' : self.translate_as_c_base_type(arg.type)}) + methodDict['params_impl'] += 'c_' + argname + elif arg.type.name == 'string': methodDict['strings'].append({'string': argname}) methodDict['params_impl'] += 'c_' + argname else: diff --git a/wrappers/java/jni.mustache b/wrappers/java/jni.mustache index 378b17e92..607f7af64 100644 --- a/wrappers/java/jni.mustache +++ b/wrappers/java/jni.mustache @@ -286,7 +286,9 @@ jobject {{jni_package}}CoreImpl_getMediastreamerFactory(JNIEnv *env, jobject thi {{return}} {{name}}({{params}}) { {{#notStatic}}{{classCName}} *cptr = ({{classCName}}*)ptr;{{/notStatic}}{{#strings}} const char* c_{{string}} = GetStringUTFChars(env, {{string}}); - {{/strings}}{{#objects}} + {{/strings}}{{#bytes}} + {{bytesargtype}} c_{{bytesargname}} = ({{bytesargtype}})env->GetByteArrayElements({{bytesargname}}, NULL); + {{/bytes}}{{#objects}} {{objectClassCName}}* c_{{object}} = NULL; if ({{object}}) c_{{object}} = ({{objectClassCName}}*)GetObjectNativePtr(env, {{object}}); {{/objects}}{{#lists}} @@ -340,7 +342,9 @@ jobject {{jni_package}}CoreImpl_getMediastreamerFactory(JNIEnv *env, jobject thi {{#hasReturn}}{{return}} jni_result = ({{return}}){{#returnObject}}get{{returnClassName}}(env, (Linphone{{returnClassName}} *){{/returnObject}}{{/hasReturn}}{{c_name}}({{#notStatic}}cptr{{/notStatic}}{{params_impl}}){{#returnObject}}){{/returnObject}}; {{/hasNormalReturn}}{{#strings}} ReleaseStringUTFChars(env, {{string}}, c_{{string}}); - {{/strings}}{{#hasReturn}}return jni_result;{{/hasReturn}}{{#hasListReturn}}return jni_list_result;{{/hasListReturn}} + {{/strings}}{{#bytes}} + env->ReleaseByteArrayElements({{bytesargname}}, (jbyte*)c_{{bytesargname}}, JNI_ABORT); + {{/bytes}}{{#hasReturn}}return jni_result;{{/hasReturn}}{{#hasListReturn}}return jni_list_result;{{/hasListReturn}} } {{/methods}} \ No newline at end of file