Browse Source

engine java

JNI-44
Volker Birk 10 years ago
parent
commit
3b6892bc75
  1. 76
      src/gen_java_Engine.ysl2
  2. 1
      src/gen_java_Message.ysl2
  3. 16
      src/org/pEp/jniadapter/AbstractEngine.java
  4. 4
      src/types_java.ysl2

76
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<byte[]> _«$name» = new Vector<byte[]>();
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<String> result.«$name» = new Vector<String>();
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»;
}
}

1
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;

16
src/org/pEp/jniadapter/AbstractEngine.java

@ -38,8 +38,8 @@ abstract class AbstractEngine implements AutoCloseable {
}
}
public static ArrayList<byte[]> toUTF8(ArrayList<String> list) {
ArrayList<byte[]> result = new ArrayList<byte[]>(list.size());
public static Vector<byte[]> toUTF8(Vector<String> list) {
Vector<byte[]> result = new Vector<byte[]>(list.size());
for (int i=0; i<list.size(); i++)
result.set(i, toUTF8(list.get(i)));
@ -56,8 +56,8 @@ abstract class AbstractEngine implements AutoCloseable {
return result;
}
public static Vector<Pair<byte[], byte[]>> toUTF8(Vector<Pair<String, String>> list) {
Vector<Pair<byte[], byte[]>> result = new Vector<Pair<byte[], byte[]>>(list.size());
public static ArrayList<Pair<byte[], byte[]>> toUTF8(ArrayList<Pair<String, String>> list) {
ArrayList<Pair<byte[], byte[]>> result = new ArrayList<Pair<byte[], byte[]>>(list.size());
for (int i=0; i<list.size(); i++)
result.set(i, toUTF8(list.get(i)));
@ -75,8 +75,8 @@ abstract class AbstractEngine implements AutoCloseable {
}
}
public static ArrayList<String> toUTF16(ArrayList<byte[]> list) {
ArrayList<String> result = new ArrayList<String>(list.size());
public static Vector<String> toUTF16(Vector<byte[]> list) {
Vector<String> result = new Vector<String>(list.size());
for (int i=0; i<list.size(); i++)
result.set(i, toUTF16(list.get(i)));
@ -93,8 +93,8 @@ abstract class AbstractEngine implements AutoCloseable {
return result;
}
public static Vector<Pair<String, String>> toUTF16(Vector<Pair<byte[], byte[]>> list) {
Vector<Pair<String, String>> result = new Vector<Pair<String, String>>(list.size());
public static ArrayList<Pair<String, String>> toUTF16(ArrayList<Pair<byte[], byte[]>> list) {
ArrayList<Pair<String, String>> result = new ArrayList<Pair<String, String>>(list.size());
for (int i=0; i<list.size(); i++)
result.set(i, toUTF16(list.get(i)));

4
src/types_java.ysl2

@ -12,7 +12,7 @@ function "toJava" {
when "$type='timestamp'" > Date
when "$type='EncFormat'" > Message.EncFormat
when "$type='bloblist'" > Vector<Blob>
when "$type='stringpairlist'" > Vector<Pair<String, String>>
when "$type='stringpairlist'" > ArrayList<Pair<String, String>>
when "$type='message'" > Message
otherwise call "CamelCase" with "text", "$type";
@ -24,7 +24,7 @@ function "toIntermediate" {
choose {
when "$type='stringlist'" > Vector<byte[]>
when "$type='stringpairlist'" > Vector<Pair<byte[], byte[]>>
when "$type='stringpairlist'" > ArrayList<Pair<byte[], byte[]>>
when "$type='string'" > byte[]
when "$type='identity'" > _Identity
when "$type='identitylist'" > Vector<_Identity>

Loading…
Cancel
Save