From 5a009ff9d53585556fe70792e1410bee72347e42 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 10 Oct 2017 13:05:31 +0200 Subject: [PATCH] Java wrapper native will return objects, cast it --- wrappers/java/genwrapper.py | 19 ++++++++++++++++++- wrappers/java/java_class.mustache | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/wrappers/java/genwrapper.py b/wrappers/java/genwrapper.py index e4cf66589..ae3e028c9 100644 --- a/wrappers/java/genwrapper.py +++ b/wrappers/java/genwrapper.py @@ -100,11 +100,15 @@ class JavaTranslator(object): elif type(_type) is AbsApi.ClassType: if native: - return 'long' + return 'Object' + elif jni: + return 'jobject' return _type.desc.name.to_camel_case() elif type(_type) is AbsApi.EnumType: if native: return 'int' + elif jni: + return 'jint' name = _type.desc.name.to_camel_case() if name in ENUMS_LIST: className = ENUMS_LIST[name] @@ -114,16 +118,28 @@ class JavaTranslator(object): return name elif type(_type) is AbsApi.BaseType: if _type.name == 'string': + if jni: + return 'jstring' return 'String' elif _type.name == 'integer': + if jni: + return 'jint' return 'int' elif _type.name == 'floatant': + if jni: + return 'jfloat' return 'float' elif _type.name == 'size': + if jni: + return 'jint' return 'int' elif _type.name == 'time': + if jni: + return 'jlong' return 'long' elif _type.name == 'status': + if jni: + return 'jint' if native: return 'int' return 'void' @@ -165,6 +181,7 @@ class JavaTranslator(object): methodDict['exception'] = self.throws_exception(_method.returnType) methodDict['enumCast'] = type(_method.returnType) is AbsApi.EnumType + methodDict['classCast'] = type(_method.returnType) is AbsApi.ClassType methodDict['params'] = '' methodDict['native_params'] = 'long nativePtr' methodDict['static_native_params'] = '' diff --git a/wrappers/java/java_class.mustache b/wrappers/java/java_class.mustache index 67061f96e..b386032b6 100644 --- a/wrappers/java/java_class.mustache +++ b/wrappers/java/java_class.mustache @@ -146,7 +146,7 @@ class {{classImplName}} implements {{className}} { return classArray; {{/convertOutputClassArrayToLongArray}} {{#classicMethod}} - {{#exception}}int exceptionResult = {{/exception}}{{return_keyword}}{{#enumCast}}{{return}}.fromInt({{/enumCast}}{{name}}(nativePtr{{native_params_impl}}){{#enumCast}}){{/enumCast}}; + {{#exception}}int exceptionResult = {{/exception}}{{return_keyword}}{{#enumCast}}{{return}}.fromInt({{/enumCast}}{{#classCast}}({{return}}){{/classCast}}{{name}}(nativePtr{{native_params_impl}}){{#enumCast}}){{/enumCast}}; {{#exception}}if (exceptionResult != 0) throw new CoreException("{{name}} returned value " + exceptionResult){{/exception}} {{/classicMethod}} }