From e10209e8fcb642b03416220eff8821091ee16d9a Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 21 Apr 2020 17:55:04 +0200 Subject: [PATCH] JNI-94 Add get_machine_directory and get_user_directory wrapper and test --- src/basic_api.cc | 17 +++++++++ src/gen_java_Engine.ysl2 | 10 +++--- src/pEp.yml2 | 2 ++ .../foundation/pEp/jniadapter/test/Makefile | 3 ++ .../pEp/jniadapter/test/jni94/Makefile | 32 +++++++++++++++++ .../pEp/jniadapter/test/jni94/TestMain.java | 35 +++++++++++++++++++ 6 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 test/java/foundation/pEp/jniadapter/test/jni94/Makefile create mode 100644 test/java/foundation/pEp/jniadapter/test/jni94/TestMain.java diff --git a/src/basic_api.cc b/src/basic_api.cc index 86be576..160761f 100644 --- a/src/basic_api.cc +++ b/src/basic_api.cc @@ -331,5 +331,22 @@ JNIEXPORT jbyteArray JNICALL Java_foundation_pEp_jniadapter_Engine_getCrashdumpL return from_string(env, _logdata); } +JNIEXPORT jbyteArray JNICALL Java_foundation_pEp_jniadapter_Engine__1getUserDirectory( + JNIEnv *env, + jobject obj + ) +{ + return from_string(env, ::per_user_directory()); +} + +JNIEXPORT jbyteArray JNICALL Java_foundation_pEp_jniadapter_Engine__1getMachineDirectory( + JNIEnv *env, + jobject obj + ) +{ + return from_string(env, ::per_machine_directory()); +} + + } // extern "C" diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 51ed0ed..c1faee1 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -37,20 +37,20 @@ tstylesheet { || otherwise { || - private native «$itype» «@name»(`apply "parm/*", mode=basic_iparm`); + private native «$itype» _«@name»(`apply "parm/*", mode=basic_iparm`); public «$jtype» «@name»(`apply "parm/*", mode=basic_parm`) { || apply "parm/*", mode=basic_parm_set; choose { when "@type = 'void'" - |> «@name»(`apply "parm/*", mode=basic_parm_name`); + |> _«@name»(`apply "parm/*", mode=basic_parm_name`); when "@type = 'identity'" - |> return new Identity(«@name»(`apply "parm/*", mode=basic_parm_name`)); + |> return new Identity(_«@name»(`apply "parm/*", mode=basic_parm_name`)); when "@type = 'bool'" - |> return new Boolean(«@name»(`apply "parm/*", mode=basic_parm_name`)); + |> return new Boolean(_«@name»(`apply "parm/*", mode=basic_parm_name`)); otherwise - |> return AbstractEngine.toUTF16(«@name»(`apply "parm/*", mode=basic_parm_name`)); + |> return AbstractEngine.toUTF16(_«@name»(`apply "parm/*", mode=basic_parm_name`)); } || } diff --git a/src/pEp.yml2 b/src/pEp.yml2 index d1caa14..68e4b83 100644 --- a/src/pEp.yml2 +++ b/src/pEp.yml2 @@ -265,6 +265,8 @@ namespace pEp { basic void config_passive_mode(bool enable); basic void config_unencrypted_subject(bool enable); basic string getCrashdumpLog(int maxlines); + basic string getUserDirectory(); + basic string getMachineDirectory(); }; struct message { diff --git a/test/java/foundation/pEp/jniadapter/test/Makefile b/test/java/foundation/pEp/jniadapter/test/Makefile index e9735d9..7066698 100644 --- a/test/java/foundation/pEp/jniadapter/test/Makefile +++ b/test/java/foundation/pEp/jniadapter/test/Makefile @@ -8,6 +8,7 @@ run: compile $(MAKE) -C jni88 run $(MAKE) -C jni91 run $(MAKE) -C jni92 run + $(MAKE) -C jni94 run compile: $(MAKE) -C basic compile @@ -15,6 +16,7 @@ compile: $(MAKE) -C jni88 compile $(MAKE) -C jni91 compile $(MAKE) -C jni92 compile + $(MAKE) -C jni94 compile clean: $(MAKE) -C basic clean @@ -22,6 +24,7 @@ clean: $(MAKE) -C jni88 clean $(MAKE) -C jni91 clean $(MAKE) -C jni92 clean + $(MAKE) -C jni94 clean clean-pep-home: $(MAKE) -C basic clean-pep-home diff --git a/test/java/foundation/pEp/jniadapter/test/jni94/Makefile b/test/java/foundation/pEp/jniadapter/test/jni94/Makefile new file mode 100644 index 0000000..e628c5f --- /dev/null +++ b/test/java/foundation/pEp/jniadapter/test/jni94/Makefile @@ -0,0 +1,32 @@ +include ../../../../../../../Makefile.conf +include ../Makefile.conf + +TEST_UNIT_NAME=jni94 + +JAVA_CLASSES = \ + TestMain.class \ + ../utils/TestUtils.class + +.PHONY: compile run test clean + +all: compile + $(MAKE) run + +run: compile + cd $(JAVA_CWD);HOME=$(JAVA_PEP_HOME_DIR) $(JAVA) $(JAVA_PKG_BASENAME).$(TEST_UNIT_NAME).TestMain + +compile: $(JAVA_CLASSES) + +%.class: %.java + cd $(JAVA_CWD);javac -cp $(CLASSPATH) $(JAVA_PKG_BASEPATH)/$(TEST_UNIT_NAME)/$< + +clean: + rm -f $(JAVA_CLASSES) + rm -f *.class + rm -f *.log + rm -Rf .gnupg + rm -Rf .lldb + +clean-pep-home: + rm -rf $(PEP_HOME_DIR)/* + rm -rf $(PEP_HOME_DIR)/.pEp diff --git a/test/java/foundation/pEp/jniadapter/test/jni94/TestMain.java b/test/java/foundation/pEp/jniadapter/test/jni94/TestMain.java new file mode 100644 index 0000000..a29e7a9 --- /dev/null +++ b/test/java/foundation/pEp/jniadapter/test/jni94/TestMain.java @@ -0,0 +1,35 @@ +package foundation.pEp.jniadapter.test.jni94; +import foundation.pEp.jniadapter.*; +import foundation.pEp.jniadapter.test.utils.TestUtils; + +import java.lang.Thread; + + +/* +This test tries to use the feature described in in JNI-94 +https://pep.foundation/jira/browse/JNI-94 + +`engine.getMachineDirectory()` and `engine.getUserDirectory()` +*/ + + +class TestMain { + public static void main(String[] args) { + Engine engine; + try { + TestUtils.logH2("Creating new Engine"); + engine = new Engine(); + Sync.DefaultCallback callbacks = new Sync.DefaultCallback(); + engine.setMessageToSendCallback(callbacks); + TestUtils.logH2("Machine directory: "); + TestUtils.log(engine.getMachineDirectory()); + + TestUtils.logH2("User directory:" ); + TestUtils.log(engine.getUserDirectory()); + } + catch (pEpException ex) { + System.out.println("Cannot load"); + return; + } + } +}