diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 862fd9d..d87e8e5 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -12,10 +12,12 @@ tstylesheet { package org.pEp.jniadapter; import java.util.ArrayList; + import java.util.Vector; final public class «$cname» extends AbstractEngine { public «$cname»() throws pEpException { } - `` apply "namespace/interface/method"; + + `` apply "interface|method" } || } @@ -27,13 +29,13 @@ tstylesheet { package org.pEp.jniadapter; import java.util.ArrayList; + import java.util.Vector; import java.util.Date; import java.util.HashMap; public class «$cname» { `` apply "enum" `` apply "*[name(.)!='enum']", mode=entry - } || } @@ -76,15 +78,32 @@ tstylesheet { } template "*", mode=entry { - const "type", "name(.)"; - const "name", "name(*[position()=1])"; + const "type" call "toJava" with "type", "name(.)"; + const "itype" call "toIntermediate" with "type", "name(.)"; + const "name" call "toJava" with "type", "name(*[position()=1])"; - || - private native †$type _©$name(); - private native void _©$name(†$type value); + choose { + when "$itype != $type" + || + private native «$itype» _get«$name»(); + private native void _set«$name»(«$itype» value); + public «$type» get«$name»() { + return AbstractEngine.toUTF16(_get«$name»()); + } + public void set«$name»(«$type» value) { + _set«$name»(AbstractEngine.toUTF8(value)); + } - || + || + otherwise + || + public native «$itype» get«$name»(); + public native void set«$name»(«$itype» value); + + || + } } + template "*", mode=value | «name(.)» («.»)`if "position()!=last()" > , ` } diff --git a/src/org/pEp/jniadapter/AbstractEngine.java b/src/org/pEp/jniadapter/AbstractEngine.java index abd8cb2..cec9b46 100644 --- a/src/org/pEp/jniadapter/AbstractEngine.java +++ b/src/org/pEp/jniadapter/AbstractEngine.java @@ -1,6 +1,7 @@ package org.pEp.jniadapter; import java.util.ArrayList; +import java.util.Vector; import java.io.UnsupportedEncodingException; import java.text.Normalizer; abstract class AbstractEngine implements AutoCloseable { static { @@ -51,7 +52,16 @@ abstract class AbstractEngine implements AutoCloseable { static { return result; } - + + public static Vector> toUTF8(Vector> list) { + Vector> result = new Vector>(list.size()); + + for (int i=0; i> toUTF16(Vector> list) { + Vector> result = new Vector>(list.size()); + + for (int i=0; i Date when "$type='encformat'" > MimeMessage.EncFormat when "$type='bloblist'" > ArrayList - when "$type='stringpairlist'" > ArrayList> + when "$type='stringpairlist'" > Vector> when "$type='message'" > MimeMessage otherwise call "CamelCase" with "text", "$type"; @@ -24,7 +24,7 @@ function "toIntermediate" { choose { when "$type='stringlist'" > ArrayList - when "$type='stringpairlist'" > ArrayList> + when "$type='stringpairlist'" > Vector> when "$type='string'" > byte[] otherwise call "toJava" with "type", "$type";