From 5758fcd11e0b4d08db0ba81a79282ec6a950a2df Mon Sep 17 00:00:00 2001 From: Volker Birk Date: Wed, 3 Apr 2019 14:41:24 +0200 Subject: [PATCH] updating to new sync API --- src/Makefile | 4 +-- src/Makefile.conf | 4 +-- src/basic_api.cc | 53 ---------------------------------------- src/gen_cpp_Engine.ysl2 | 2 +- src/gen_java_Engine.ysl2 | 20 ++++++++++----- src/jniutils.cc | 13 +++++++++- src/jniutils.hh | 3 +++ src/pEp.yml2 | 18 ++++++++------ src/types_c.ysl2 | 1 + 9 files changed, 45 insertions(+), 73 deletions(-) diff --git a/src/Makefile b/src/Makefile index 5731a58..2b8202c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -67,7 +67,7 @@ all: $(JAR) $(SHARED) .PHONY: gensource gensource: $(JAVA_SOURCES) $(C_SOURCES) -$(JAR): $(JAVA_SOURCES) +$(JAR): gensource $(JP)/javac org/pEp/jniadapter/*.java $(JP)/jar cf $@ org/pEp/jniadapter/*.class @@ -91,7 +91,7 @@ $(LIBRARY): org_pEp_jniadapter_AbstractEngine.o org_pEp_jniadapter_Engine.o org_ $(SHARED): $(LIBRARY) $(CXX) *.o $(LDFLAGS) $(LDLIBS) -o $@ -org/pEp/jniadapter/pEpException.java: pEp.yml2 gen_java_exceptions.ysl2 +org/pEp/jniadapter/pEpException.java: pEp.yml2 gen_java_exceptions.ysl2 pEp.yml2 $(YML2_PROC) -y gen_java_exceptions.ysl2 $< -o $@ org/pEp/jniadapter/Message.java: pEp.yml2 gen_java_Message.ysl2 types_java.ysl2 diff --git a/src/Makefile.conf b/src/Makefile.conf index 08717e9..ad98dfc 100644 --- a/src/Makefile.conf +++ b/src/Makefile.conf @@ -44,10 +44,10 @@ YML2_OPTS=--encoding=utf8 ######### Engine ######### -ENGINE_LIB= +ENGINE_LIB=-L$(HOME)/lib #ENGINE_LIB=-L$(HOME)/local/lib -ENGINE_INC= +ENGINE_INC=-I$(HOME)/include #ENGINE_INC=-I$(HOME)/local/inc diff --git a/src/basic_api.cc b/src/basic_api.cc index c61de09..77b4e28 100644 --- a/src/basic_api.cc +++ b/src/basic_api.cc @@ -278,59 +278,6 @@ JNIEXPORT jboolean JNICALL Java_org_pEp_jniadapter_Engine_blacklist_1is_1listed( return (jboolean)_listed; } -JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_accept_1sync_1handshake( - JNIEnv *env, - jobject obj, - jobject ident - ) - -{ - pEp_identity *_ident = to_identity(env, ident); - - PEP_STATUS status = - ::deliverHandshakeResult(session(), _ident, SYNC_HANDSHAKE_ACCEPTED); - - if (status != PEP_STATUS_OK) { - throw_pEp_Exception(env, status); - return; - } -} - - -JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_reject_1sync_1handshake( - JNIEnv *env, - jobject obj, - jobject ident - ) -{ - pEp_identity *_ident = to_identity(env, ident); - - PEP_STATUS status = - ::deliverHandshakeResult(session(), _ident, SYNC_HANDSHAKE_REJECTED); - - if (status != PEP_STATUS_OK) { - throw_pEp_Exception(env, status); - return; - } -} - -JNIEXPORT void JNICALL Java_org_pEp_jniadapter_Engine_cancel_1sync_1handshake( - JNIEnv *env, - jobject obj, - jobject ident - ) -{ - pEp_identity *_ident = to_identity(env, ident); - - PEP_STATUS status = - ::deliverHandshakeResult(session(), _ident, SYNC_HANDSHAKE_CANCEL); - - if (status != PEP_STATUS_OK) { - throw_pEp_Exception(env, status); - return; - } -} - JNIEXPORT jbyteArray JNICALL Java_org_pEp_jniadapter_Engine_getCrashdumpLog( JNIEnv *env, jobject obj, diff --git a/src/gen_cpp_Engine.ysl2 b/src/gen_cpp_Engine.ysl2 index 2406445..c85691d 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/gen_cpp_Engine.ysl2 @@ -222,7 +222,7 @@ tstylesheet { choose { when "$type = 'message'" | message *_«$name» = (message *) callLongMethod(env, «$name», "getHandle"); - when "$type='EncFormat'" + when "$type='EncFormat' or $type='SyncHandshakeResult'" | √$type _«$name» = to_«$type»(env, «$name»); when "$type='bool'" | bool _«$name» = (bool) «$name»; diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 1840873..27f927c 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -70,6 +70,8 @@ tstylesheet { > String when "name(.) = 'identity'" > Identity + when "name(.) = 'identitylist'" + > IdentityList when "name(.) = 'bool'" > Boolean otherwise @@ -279,11 +281,17 @@ tstylesheet { | ¡$type _«$name» = AbstractEngine.toUTF8(«$name»); when "$type = 'identity'" || - _Identity _«$name» = null; - if («$name» != null) { - _«$name» = new _Identity(«$name»); - } - || + _Identity _«$name» = null; + if («$name» != null) { + _«$name» = new _Identity(«$name»); + } + || + when "$type = 'identitylist'" + || + Vector<_Identity> _«$name» = new Vector<_Identity>(); + for (Identity i : «$name») + _«$name».add(new _Identity(i)); + || } } @@ -306,7 +314,7 @@ tstylesheet { const "type", "name(*[2])"; const "name" call "lcase" with "text", "name(*[3])"; - if "$type = 'string' or $type = 'stringlist' or $type = 'identity'" + if "$type = 'string' or $type = 'stringlist' or $type = 'identity' or $type = 'identitylist'" > _ > «$name»`if "position()!=last()" > , ` } diff --git a/src/jniutils.cc b/src/jniutils.cc index 225b3b3..0af4a49 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -688,7 +688,18 @@ namespace pEp { env->DeleteLocalRef(clazz_enc_format); return (PEP_enc_format) env->GetIntField(obj, field_value); - } + } + + sync_handshake_result to_SyncHandshakeResult(JNIEnv *env, jobject obj) + { + static const char *classname = "org/pEp/jniadapter/Message$SyncHandshakeResult"; + jclass clazz_enc_format = findClass(env, classname); + jfieldID field_value = env->GetFieldID(clazz_enc_format, "value", "I"); + assert(field_value); + + env->DeleteLocalRef(clazz_enc_format); + return (sync_handshake_result) env->GetIntField(obj, field_value); + } }; }; diff --git a/src/jniutils.hh b/src/jniutils.hh index cb151f5..2fea184 100644 --- a/src/jniutils.hh +++ b/src/jniutils.hh @@ -8,6 +8,7 @@ #include #include #include +#include #if 0 // Enable if log needed #include @@ -90,6 +91,8 @@ namespace pEp { bloblist_t *to_bloblist(JNIEnv *env, jobject obj); PEP_enc_format to_EncFormat(JNIEnv *env, jobject obj); + + sync_handshake_result to_SyncHandshakeResult(JNIEnv *env, jobject obj); }; }; diff --git a/src/pEp.yml2 b/src/pEp.yml2 index c9e93c2..8864b8f 100644 --- a/src/pEp.yml2 +++ b/src/pEp.yml2 @@ -267,12 +267,17 @@ namespace pEp { returns string languagelist ); - method key_reset( - in string fpr, - in identity ident - ); + method key_reset( + in string fpr, + in identity ident + ); + + method deliverHandshakeResult( + in SyncHandshakeResult shr, + in identitylist identities + ); - basic string trustwords(identity ident); + basic string trustwords(identity ident); basic identity myself(identity ident); basic identity updateIdentity(identity ident); basic identity setOwnKey(identity ident, string fpr); @@ -285,9 +290,6 @@ namespace pEp { basic bool blacklist_is_listed(string fpr); basic void config_passive_mode(bool enable); basic void config_unencrypted_subject(bool enable); - basic void accept_sync_handshake(identity ident); - basic void reject_sync_handshake(identity ident); - basic void cancel_sync_handshake(identity ident); basic string getCrashdumpLog(int maxlines); }; diff --git a/src/types_c.ysl2 b/src/types_c.ysl2 index 8e68744..0621bd0 100644 --- a/src/types_c.ysl2 +++ b/src/types_c.ysl2 @@ -15,6 +15,7 @@ function "toC" { when "$type='DecryptFlags'" > PEP_decrypt_flags_t when "$type='Color'" > PEP_color when "$type='Rating'" > PEP_rating + when "$type='SyncHandshakeResult'" > sync_handshake_result otherwise value "$type"; }