diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index d9f2038..0ea577c 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -16,8 +16,9 @@ tstylesheet { final public class «$cname» extends AbstractEngine { public «$cname»() throws pEpException { } - `` apply "method" + `` apply "method", mode=plain } + || } @@ -43,61 +44,60 @@ tstylesheet { } } - template "method" { + template "method", mode=plain { const "convert", "count(parm/stringlist|parm/stringpairlist|parm/string|parm/identity|parm/identitylist|parm/bloblist) > 0"; const "singlereturn", "count(parm/creates|parm/returns) = 1"; const "multireturn", "count(parm/creates|parm/returns) > 1"; - if "$convert" { - if "$multireturn" + if "$multireturn" { + if "$convert" || private class _«@name»_Return { `` apply "parm[creates|returns]", 1, mode=intermediate with "public", 1; } || + || - private native `call "returnInter"` _«@name»( - `` apply "parm[in]", 2, mode=intermediate - ) throws pEpException; + public class «@name»_Return { + `` apply "parm[creates|returns]", 1, mode=java with "public", 1; + } || } - if "$multireturn" + if "$convert" || - public class «@name»_Return { - `` apply "parm[creates|returns]", 1, mode=java with "public", 1; - } + private native `call "returnInter"` _«@name»( + `` apply "parm[in]", 2, mode=intermediate + ) throws pEpException; || + || public `if "not($convert)" > native ``call "returnJava"` «@name»( `` apply "parm[in]", 2, mode=java ) throws pEpException`if "not($convert)" > ;` - { - `` apply "parm", mode=convertIn; - `if "$singlereturn or $multireturn" call "returnInter", copy "' _result = '"`_«@name»(`apply "parm[in]", mode=call`); - `` if "$singlereturn" |> return _result; - `` if "$multireturn" apply ".", mode=multireturn with "convert", "$convert"; - } - || - } - template "method", mode=multireturn { - param "convert"; + if "$convert" { + | { + apply "parm", mode=convertIn; - choose { - when "$convert" - || + if "$singlereturn" |> return _«@name»(`apply "parm[in]", mode=call;`); + if "$multireturn" + || + _«@name»_Return _result = _«@name»(`apply "parm[in]", mode=call;`); «@name»_Return result = new «@name»_Return(); - `` apply "parm[creates|returns]", 0, mode=convertOut; - + `` apply "parm[creates|returns]", mode=convertOut; return result; - || - otherwise | return _result; + || + + || + } + + || } } @@ -140,15 +140,8 @@ tstylesheet { const "type", "name(*[2])"; const "name" call "lcase" with "text", "name(*[3])"; - if "$dir = 'in'" choose { - when "$type = 'string'" | ¡$type _«$name» = AbstractEngine.toUTF8(«$name»); - when "$type = 'stringlist'" - || - Vector _«$name» = new Vector(); - for (String s : «$name») { - _«$name».add(AbstractEngine.toUTF8(s)); - } - || + if "$dir = 'in'" { + if "$type = 'string' or $type = 'stringlist'" | ¡$type _«$name» = AbstractEngine.toUTF8(«$name»); } } @@ -158,14 +151,7 @@ tstylesheet { const "name" call "lcase" with "text", "name(*[3])"; if "$dir != 'in'" choose { - when "$type = 'string'" | †$type «$name» = AbstractEngine.toUTF16(_«$name»); - when "$type = 'stringlist'" - || - Vector result.«$name» = new Vector(); - for (byte[] a : _result._«$name») { - result.«$name».add(AbstractEngine.toUTF16(a)); - } - || + when "$type = 'string' or $type = 'stringlist'" | result.«$name» = AbstractEngine.toUTF16(_result.«$name»); otherwise | result.«$name» = _result.«$name»; } } diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 93be17f..1692ef1 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -11,6 +11,7 @@ tstylesheet { || package org.pEp.jniadapter; + import java.util.ArrayList; import java.util.Vector; import java.util.Date; import java.util.HashMap; diff --git a/src/org/pEp/jniadapter/AbstractEngine.java b/src/org/pEp/jniadapter/AbstractEngine.java index 93d4f38..36905f7 100644 --- a/src/org/pEp/jniadapter/AbstractEngine.java +++ b/src/org/pEp/jniadapter/AbstractEngine.java @@ -38,8 +38,8 @@ abstract class AbstractEngine implements AutoCloseable { } } - public static ArrayList toUTF8(ArrayList list) { - ArrayList result = new ArrayList(list.size()); + public static Vector toUTF8(Vector list) { + Vector result = new Vector(list.size()); for (int i=0; i> toUTF8(Vector> list) { - Vector> result = new Vector>(list.size()); + public static ArrayList> toUTF8(ArrayList> list) { + ArrayList> result = new ArrayList>(list.size()); for (int i=0; i toUTF16(ArrayList list) { - ArrayList result = new ArrayList(list.size()); + public static Vector toUTF16(Vector list) { + Vector result = new Vector(list.size()); for (int i=0; i> toUTF16(Vector> list) { - Vector> result = new Vector>(list.size()); + public static ArrayList> toUTF16(ArrayList> list) { + ArrayList> result = new ArrayList>(list.size()); for (int i=0; i Date when "$type='EncFormat'" > Message.EncFormat when "$type='bloblist'" > Vector - when "$type='stringpairlist'" > Vector> + when "$type='stringpairlist'" > ArrayList> when "$type='message'" > Message otherwise call "CamelCase" with "text", "$type"; @@ -24,7 +24,7 @@ function "toIntermediate" { choose { when "$type='stringlist'" > Vector - when "$type='stringpairlist'" > Vector> + when "$type='stringpairlist'" > ArrayList> when "$type='string'" > byte[] when "$type='identity'" > _Identity when "$type='identitylist'" > Vector<_Identity>