From 2f03b0b5cf0b3609a6271cc90d93d06817c8f64c Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Fri, 17 May 2019 21:07:14 +0200 Subject: [PATCH] mime_decode_message() and mime_encode_message() --- src/gen_cpp_Message.ysl2 | 27 +++++++++++++++++++++++++++ src/gen_java_Message.ysl2 | 15 +++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/gen_cpp_Message.ysl2 b/src/gen_cpp_Message.ysl2 index 38b651e..9181943 100644 --- a/src/gen_cpp_Message.ysl2 +++ b/src/gen_cpp_Message.ysl2 @@ -17,8 +17,10 @@ tstylesheet { #include #include #include + #include #include "jniutils.hh" + #include "throw_pEp_exception.hh" #include "org_pEp_jniadapter_«$jname».h" using namespace std; @@ -63,6 +65,31 @@ tstylesheet { } } + JNIEXPORT jlong JNICALL Java_org_pEp_jniadapter_«$jname»__1«$jname»( + JNIEnv *env, jobject msg, jbyteArray mime_text) { + + char *_mime_text = to_string(env, mime_text); + size_t _size = (size_t) env->GetArrayLength(mime_text); + + ::«@name» *_msg = nullptr; + PEP_STATUS status = mime_decode_message(_mime_text, _size, &_msg); + if (status) + throw_pEp_Exception(env, status); + return (jlong) (int64_t) (intptr_t) _msg; + } + + JNIEXPORT jbyteArray JNICALL Java_org_pEp_jniadapter_Message__1decodeMIME(JNIEnv *env, jobject msg) + { + message *_obj = message_ptr(env, msg); + char *mime_text = nullptr; + PEP_STATUS status = ::mime_encode_message(_obj, false, &mime_text); + if (status) + throw_pEp_Exception(env, status); + jbyteArray result = from_string(env, mime_text); + free(mime_text); + return result; + } + || apply "*[name(.)!='enum']", 0, mode=entry { with "name", "@name"; diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 1298ef7..cce518f 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -29,6 +29,21 @@ tstylesheet { handle = init(); } + private native long _«$cname»( + byte[] mime_text + ) throws pEpException; + + public «$cname»(String mime_text) { + byte[] _mime_text = AbstractEngine.toUTF8(mime_text); + handle = _«$cname»(_mime_text); + } + + public native byte[] _decodeMIME() throws pEpException; + + public String decodeMIME() { + return AbstractEngine.toUTF16(_decodeMIME()); + } + private «$cname»(long h) { handle = h; }