From 1a08fa368238ecee208f1d7567ff61aa1f00a858 Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 25 Jun 2020 22:52:48 +0200 Subject: [PATCH 01/36] Added interface for Message, Identity, Blob --- src/foundation/pEp/jniadapter/Blob.java | 2 +- .../pEp/jniadapter/BlobInterface.java | 5 ++ src/foundation/pEp/jniadapter/Identity.java | 2 +- .../pEp/jniadapter/IdentityInterface.java | 5 ++ src/gen_java_Message.ysl2 | 79 ++++++++++++++++++- 5 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/foundation/pEp/jniadapter/BlobInterface.java create mode 100644 src/foundation/pEp/jniadapter/IdentityInterface.java diff --git a/src/foundation/pEp/jniadapter/Blob.java b/src/foundation/pEp/jniadapter/Blob.java index f246e0c..dffd60f 100644 --- a/src/foundation/pEp/jniadapter/Blob.java +++ b/src/foundation/pEp/jniadapter/Blob.java @@ -2,7 +2,7 @@ package foundation.pEp.jniadapter; import java.io.Serializable; -public class Blob implements Serializable { +public class Blob implements BlobInterface, Serializable { public byte[] data; public String mime_type; public String filename; diff --git a/src/foundation/pEp/jniadapter/BlobInterface.java b/src/foundation/pEp/jniadapter/BlobInterface.java new file mode 100644 index 0000000..d52e7c7 --- /dev/null +++ b/src/foundation/pEp/jniadapter/BlobInterface.java @@ -0,0 +1,5 @@ +package foundation.pEp.jniadapter; + +public interface BlobInterface { + +} diff --git a/src/foundation/pEp/jniadapter/Identity.java b/src/foundation/pEp/jniadapter/Identity.java index 756102c..3f72b90 100644 --- a/src/foundation/pEp/jniadapter/Identity.java +++ b/src/foundation/pEp/jniadapter/Identity.java @@ -2,7 +2,7 @@ package foundation.pEp.jniadapter; import java.io.Serializable; -public class Identity implements Serializable{ +public class Identity implements IdentityInterface, Serializable { public String address; public String fpr; public String user_id; diff --git a/src/foundation/pEp/jniadapter/IdentityInterface.java b/src/foundation/pEp/jniadapter/IdentityInterface.java new file mode 100644 index 0000000..93e0d29 --- /dev/null +++ b/src/foundation/pEp/jniadapter/IdentityInterface.java @@ -0,0 +1,5 @@ +package foundation.pEp.jniadapter; + +public interface IdentityInterface { + public Rating getRating(); +} diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index a16658a..19b0a94 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -18,7 +18,7 @@ tstylesheet { import java.util.HashMap; import java.io.Serializable; - public class «$cname» implements AutoCloseable, Serializable { + public class «$cname» implements MessageInterface, AutoCloseable, Serializable { private static final long serialVersionUID = 2119420428331150924L; private long handle; @@ -60,6 +60,20 @@ tstylesheet { `` apply "*[name(.)!='enum']", mode=entry } || + document("foundation/pEp/jniadapter/{$cname}Interface.java", "text") + || + package foundation.pEp.jniadapter; + + import foundation.pEp.jniadapter.Message.Direction; + import java.util.Date; + import java.util.Vector; + import java.util.ArrayList; + + public interface «$cname»Interface { + public String encodeMIME(); + `` apply "*[name(.)!='enum']", mode=interface + } + || } template "enum|exception" { @@ -244,6 +258,69 @@ tstylesheet { } } + template "*", mode=interface { + const "ctype", "name(.)"; + const "type" call "toJava" with "type", "name(.)"; + const "itype" call "toIntermediate" with "type", "name(.)"; + const "name" call "toJava" with "type", "name(*[position()=1])"; + + choose { + when "$ctype = 'identity'" + || + public «$type» get«$name»(); + public void set«$name»(«$type» value); + || + + when "$ctype = 'identitylist' or $ctype = 'bloblist' or $ctype = 'stringlist' or $ctype = 'stringpairlist'" + { + const "ename", "substring-after(substring($type,1,string-length($type)-1), '<')"; + const "iename" choose { + when "$ctype = 'stringlist'" > byte[] + when "$ctype = 'stringpairlist'" > Pair + otherwise > _«$ename» + } + const "convget" choose { + when "$ctype = 'stringlist'" > AbstractEngine.toUTF16(i) + when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF16(i.first), AbstractEngine.toUTF16(i.second)) + otherwise > new «$ename»(i) + } + const "convset" choose { + when "$ctype = 'stringlist'" > AbstractEngine.toUTF8(i) + when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF8(i.first), AbstractEngine.toUTF8(i.second)) + otherwise > new _«$ename»(i) + } + || + public «$type» get«$name»(); + public void set«$name»(«$type» value); + || + } + + when "$itype != $type" + || + public «$type» get«$name»(); + public void set«$name»(«$type» value); + || + + when "$itype != $type" + || + public «$type» get«$name»(); + public void set«$name»(«$type» value); + || + + when "../enum[@name=$ctype]" + || + public «$itype» get«$name»(); + public void set«$name»(«$itype» value); + || + + otherwise + || + public «$itype» get«$name»(); + public void set«$name»(«$itype» value); + || + } + } + template "*", mode=value { const "name" call "toJava" with "type", "name(.)"; | «$name» («.»)`if "position()!=last()" > , ` From d11409365a54a5b0410870f2b5d56eb6b6e20104 Mon Sep 17 00:00:00 2001 From: heck Date: Tue, 30 Jun 2020 20:12:14 +0200 Subject: [PATCH 02/36] AbstractEngineInterface containing all public methods. needed wrap all native methods (native methods cant be in interfaces) --- .../pEp/jniadapter/AbstractEngine.java | 44 +++++++++++++++---- .../jniadapter/AbstractEngineInterface.java | 31 +++++++++++++ ...oundation_pEp_jniadapter_AbstractEngine.cc | 14 +++--- 3 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 src/foundation/pEp/jniadapter/AbstractEngineInterface.java diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index f492ccb..496c118 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -8,7 +8,7 @@ import foundation.pEp.jniadapter.Sync.DefaultCallback; import java.io.UnsupportedEncodingException; import java.text.Normalizer; -abstract class AbstractEngine extends UniquelyIdentifiable implements AutoCloseable { +abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEngineInterface, AutoCloseable { static { System.loadLibrary("pEpJNI"); } @@ -34,18 +34,46 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AutoClosea } } - public native String getVersion(); - public native String getProtocolVersion(); + private native String _getVersion(); + + public String getVersion() { + return _getVersion(); + } + + private native String _getProtocolVersion(); + + public String getProtocolVersion() { + return _getProtocolVersion(); + } private long keyserverThread; private long keyserverQueue; - public native void startKeyserverLookup(); - public native void stopKeyserverLookup(); + private native void _startKeyserverLookup(); + + public void startKeyserverLookup() { + _startKeyserverLookup(); + } + + private native void _stopKeyserverLookup(); + + public void stopKeyserverLookup() { + _startKeyserverLookup(); + } + + private native void _startSync(); + + public void startSync() { + _startSync(); + } + + private native void _stopSync(); + + public void stopSync() { + _stopSync(); + } - public native void startSync(); - public native void stopSync(); - public native boolean isSyncRunning(); + private native boolean _isSyncRunning(); public static byte[] toUTF8(String str) { if (str == null) diff --git a/src/foundation/pEp/jniadapter/AbstractEngineInterface.java b/src/foundation/pEp/jniadapter/AbstractEngineInterface.java new file mode 100644 index 0000000..9b13206 --- /dev/null +++ b/src/foundation/pEp/jniadapter/AbstractEngineInterface.java @@ -0,0 +1,31 @@ +package foundation.pEp.jniadapter; + +public interface AbstractEngineInterface { + public String getVersion(); + + public String getProtocolVersion(); + + public void startKeyserverLookup(); + + public void stopKeyserverLookup(); + + public void startSync(); + + public void stopSync(); + + public boolean isSyncRunning(); + + public void setMessageToSendCallback(Sync.MessageToSendCallback messageToSendCallback); + + public void setNotifyHandshakeCallback(Sync.NotifyHandshakeCallback notifyHandshakeCallback); + + public void setNeedsFastPollCallback(Sync.NeedsFastPollCallback needsFastPollCallback); + + public int needsFastPollCallFromC(boolean fast_poll_needed); + + public int notifyHandshakeCallFromC(_Identity _myself, _Identity _partner, SyncHandshakeSignal _signal); + + public int messageToSendCallFromC(Message message); + + public Message incomingMessageFromPGPText(String pgpText, Message.EncFormat encFormat); +} diff --git a/src/foundation_pEp_jniadapter_AbstractEngine.cc b/src/foundation_pEp_jniadapter_AbstractEngine.cc index beb06ef..8511fb7 100644 --- a/src/foundation_pEp_jniadapter_AbstractEngine.cc +++ b/src/foundation_pEp_jniadapter_AbstractEngine.cc @@ -196,7 +196,7 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_release( Adapter::session(pEp::Adapter::release); } -JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_getVersion( +JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1getVersion( JNIEnv *env, jobject obj ) @@ -212,7 +212,7 @@ JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_getVersi return env->NewStringUTF(::get_engine_version()); } -JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_getProtocolVersion( +JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1getProtocolVersion( JNIEnv *env, jobject obj ) @@ -263,7 +263,7 @@ static void *keyserver_thread_routine(void *arg) return (void *) status; } -JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_startKeyserverLookup( +JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1startKeyserverLookup( JNIEnv *env, jobject obj ) @@ -307,7 +307,7 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_startKeyser pthread_create(thread, nullptr, keyserver_thread_routine, (void *) queue); } -JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_stopKeyserverLookup( +JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1stopKeyserverLookup( JNIEnv *env, jobject obj ) @@ -351,7 +351,7 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_stopKeyserv free(thread); } -JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_startSync( +JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1startSync( JNIEnv *env, jobject obj ) @@ -374,7 +374,7 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_startSync( } } -JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_stopSync( +JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1stopSync( JNIEnv *env, jobject obj ) @@ -390,7 +390,7 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_stopSync( Adapter::shutdown(); } -JNIEXPORT jboolean JNICALL Java_foundation_pEp_jniadapter_AbstractEngine_isSyncRunning( +JNIEXPORT jboolean JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1isSyncRunning( JNIEnv *env, jobject obj ) From 555cb1007068ead76ec96b8d09dbb0be781ea5e0 Mon Sep 17 00:00:00 2001 From: heck Date: Tue, 30 Jun 2020 20:54:50 +0200 Subject: [PATCH 03/36] move encoding/decoding UTF-8/UTF-16 functions to new "static" class Utils.java --- .../pEp/jniadapter/AbstractEngine.java | 122 +--------- src/foundation/pEp/jniadapter/Blob.java | 6 +- .../pEp/jniadapter/Engine.java.target | 28 --- src/foundation/pEp/jniadapter/Identity.java | 10 +- .../pEp/jniadapter/Message.java.target | 218 ------------------ src/foundation/pEp/jniadapter/Utils.java | 115 +++++++++ src/foundation/pEp/jniadapter/_Blob.java | 6 +- src/foundation/pEp/jniadapter/_Identity.java | 10 +- src/gen_java_Engine.ysl2 | 10 +- src/gen_java_Message.ysl2 | 28 +-- 10 files changed, 160 insertions(+), 393 deletions(-) delete mode 100644 src/foundation/pEp/jniadapter/Engine.java.target delete mode 100644 src/foundation/pEp/jniadapter/Message.java.target create mode 100644 src/foundation/pEp/jniadapter/Utils.java diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index 496c118..fa45755 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -29,7 +29,7 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn } final public void close() { - synchronized (AbstractEngine.class){ + synchronized (AbstractEngine.class) { release(); } } @@ -75,110 +75,10 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn private native boolean _isSyncRunning(); - public static byte[] toUTF8(String str) { - if (str == null) - return null; - - try { - String _str = Normalizer.normalize(str, Normalizer.Form.NFC); - byte _buf[] = _str.getBytes("UTF-8"); - byte _cpy[] = new byte[_buf.length]; - System.arraycopy(_buf,0,_cpy,0,_buf.length); - return _cpy; - } - catch (UnsupportedEncodingException e) { - assert false; - return new byte[0]; - } - } - - public static Vector toUTF8(Vector list) { - if (list == null) - return null; - - Vector result = new Vector(list.size()); - - for (int i=0; i toUTF8(Pair pair) { - if (pair == null) - return null; - - Pair result = new Pair(); - - result.first = toUTF8(pair.first); - result.second = toUTF8(pair.second); - - return result; - } - - public static ArrayList> toUTF8(ArrayList> list) { - if (list == null) - return null; - - ArrayList> result = new ArrayList>(list.size()); - - for (int i=0; i toUTF16(Vector list) { - if (list == null) - return null; - - Vector result = new Vector(list.size()); - - for (int i=0; i toUTF16(Pair pair) { - if (pair == null) - return null; - - Pair result = new Pair(); - - result.first = toUTF16(pair.first); - result.second = toUTF16(pair.second); - - return result; - } - - public static ArrayList> toUTF16(ArrayList> list) { - if (list == null) - return null; - - ArrayList> result = new ArrayList>(list.size()); - - for (int i=0; i> opts = new ArrayList<>(); Pair xpEp = new Pair<>(); xpEp.first = "X-pEp-Version"; - xpEp.second = this.getProtocolVersion();; + xpEp.second = this.getProtocolVersion(); opts.add(xpEp); msg.setOptFields(opts); - if(encFormat == Message.EncFormat.PEP) { + if (encFormat == Message.EncFormat.PEP) { // For EncFormat.PEP // The pgpText goes into the attachment index 1 msg.setShortmsg("p≡p"); @@ -257,14 +157,12 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn attachments.add(att0); attachments.add(att1); msg.setAttachments(attachments); - } - else if (encFormat == Message.EncFormat.PEPEncInlineEA) { + } else if (encFormat == Message.EncFormat.PEPEncInlineEA) { // For EncFormat.PEPEncInlineEA // The pgpText goes into the longMessage msg.setShortmsg(""); msg.setLongmsg(pgpText); - } - else { + } else { throw new pEpCannotEncode("Message.Encformat not supported: " + encFormat.toString()); } diff --git a/src/foundation/pEp/jniadapter/Blob.java b/src/foundation/pEp/jniadapter/Blob.java index dffd60f..9d2c7cc 100644 --- a/src/foundation/pEp/jniadapter/Blob.java +++ b/src/foundation/pEp/jniadapter/Blob.java @@ -22,15 +22,15 @@ public class Blob implements BlobInterface, Serializable { String ret = ""; ret += "mime_type: \"" + mime_type + "\"\n"; ret += "filename: \"" + filename + "\"\n"; - ret += "data plain: \"" + AbstractEngine.toUTF16(data) + "\"\n"; + ret += "data plain: \"" + Utils.toUTF16(data) + "\"\n"; ret += "data decoded: \"" + _b.dataToXER() + "\"\n"; return ret; } Blob(_Blob b) { data = b.data; - mime_type = AbstractEngine.toUTF16(b.mime_type); - filename = AbstractEngine.toUTF16(b.filename); + mime_type = Utils.toUTF16(b.mime_type); + filename = Utils.toUTF16(b.filename); } } diff --git a/src/foundation/pEp/jniadapter/Engine.java.target b/src/foundation/pEp/jniadapter/Engine.java.target deleted file mode 100644 index 7708586..0000000 --- a/src/foundation/pEp/jniadapter/Engine.java.target +++ /dev/null @@ -1,28 +0,0 @@ -package foundation.pEp.jniadapter; - -import java.util.ArrayList; -import java.util.Vector; - -final public class Engine extends AbstractEngine { - public Engine() throws pEpException { } - - public native Message encrypt_message( - Message src, - ArrayList extra, - Message.EncFormat enc_format - ) throws pEpException; - - public class DecryptResult { - public Message dst; - public Color color; - } - - public native DecryptResult decrypt_message( - Message src, - ArrayList keylist - ) throws pEpException; - - public native Color outgoing_message_color( - Message msg - ) throws pEpException; -} diff --git a/src/foundation/pEp/jniadapter/Identity.java b/src/foundation/pEp/jniadapter/Identity.java index 3f72b90..54ff7de 100644 --- a/src/foundation/pEp/jniadapter/Identity.java +++ b/src/foundation/pEp/jniadapter/Identity.java @@ -23,12 +23,12 @@ public class Identity implements IdentityInterface, Serializable { } public Identity(_Identity i) { - address = AbstractEngine.toUTF16(i.address); - fpr = AbstractEngine.toUTF16(i.fpr); - user_id = AbstractEngine.toUTF16(i.user_id); - username = AbstractEngine.toUTF16(i.username); + address = Utils.toUTF16(i.address); + fpr = Utils.toUTF16(i.fpr); + user_id = Utils.toUTF16(i.user_id); + username = Utils.toUTF16(i.username); comm_type = CommType.Management.tag.get(i.comm_type); - lang = AbstractEngine.toUTF16(i.lang); + lang = Utils.toUTF16(i.lang); me = i.me; flags = i.flags; } diff --git a/src/foundation/pEp/jniadapter/Message.java.target b/src/foundation/pEp/jniadapter/Message.java.target deleted file mode 100644 index 6cdc3e6..0000000 --- a/src/foundation/pEp/jniadapter/Message.java.target +++ /dev/null @@ -1,218 +0,0 @@ -package foundation.pEp.jniadapter; - -import java.util.ArrayList; -import java.util.Vector; -import java.util.Date; -import java.util.HashMap; - -public class Message implements AutoCloseable { - private final long handle; - - native long init(); - native void release(long handle); - - public Message() { - handle = init(); - } - - public final void close() { - release(handle); - } - - public enum TextFormat { - Plain (0), - Html (1), - Other (255) - ; - - static class Management { - public static final HashMap tag = - new HashMap(); - } - - public final int value; - - TextFormat(int value) { - this.value = value; - fill(value); - } - - private void fill(int value) { - Management.tag.put(value, this); - } - } - - public enum Direction { - Incoming (0), - Outgoing (1) - ; - - static class Management { - public static final HashMap tag = - new HashMap(); - } - - public final int value; - - Direction(int value) { - this.value = value; - fill(value); - } - - private void fill(int value) { - Management.tag.put(value, this); - } - } - - public enum EncFormat { - None (0), - Pieces (1), - SMIME (2), - PGPMIME (3), - PEP (4) - ; - - static class Management { - public static final HashMap tag = - new HashMap(); - } - - public final int value; - - EncFormat(int value) { - this.value = value; - fill(value); - } - - private void fill(int value) { - Management.tag.put(value, this); - } - } - - private native int _getDir(); - private native void _setDir(int value); - public Direction getDir() { - return Direction.tag.get(_getDir()); - } - public void setDir(Direction value) { - _setDir(value.value); - } - - private native byte[] _getId(); - private native void _setId(byte[] value); - public String getId() { - return AbstractEngine.toUTF16(_getId()); - } - public void setId(String value) { - _setId(AbstractEngine.toUTF8(value)); - } - - private native byte[] _getShortmsg(); - private native void _setShortmsg(byte[] value); - public String getShortmsg() { - return AbstractEngine.toUTF16(_getShortmsg()); - } - public void setShortmsg(String value) { - _setShortmsg(AbstractEngine.toUTF8(value)); - } - - private native byte[] _getLongmsg(); - private native void _setLongmsg(byte[] value); - public String getLongmsg() { - return AbstractEngine.toUTF16(_getLongmsg()); - } - public void setLongmsg(String value) { - _setLongmsg(AbstractEngine.toUTF8(value)); - } - - private native byte[] _getLongmsgFormatted(); - private native void _setLongmsgFormatted(byte[] value); - public String getLongmsgFormatted() { - return AbstractEngine.toUTF16(_getLongmsgFormatted()); - } - public void setLongmsgFormatted(String value) { - _setLongmsgFormatted(AbstractEngine.toUTF8(value)); - } - - public native ArrayList getAttachments(); - public native void setAttachments(ArrayList value); - - public native Date getSent(); - public native void setSent(Date value); - - public native Date getRecv(); - public native void setRecv(Date value); - - private native AbstractEngine._Identity _getFrom(); - private native void _setFrom(AbstractEngine._Identity value); - public Identity getFrom() { - return new _getFrom().getIdentity(); - } - public void setFrom(Identity value) { - _setFrom(new AbstractEngine._Identity(value)); - } - - public native ArrayList getTo(); - public native void setTo(ArrayList value); - - public native Identity getRecvBy(); - public native void setRecvBy(Identity value); - - public native ArrayList getCc(); - public native void setCc(ArrayList value); - - public native ArrayList getBcc(); - public native void setBcc(ArrayList value); - - public native ArrayList getReplyTo(); - public native void setReplyTo(ArrayList value); - - private native ArrayList _getInReplyTo(); - private native void _setInReplyTo(ArrayList value); - public ArrayList getInReplyTo() { - return AbstractEngine.toUTF16(_getInReplyTo()); - } - public void setInReplyTo(ArrayList value) { - _setInReplyTo(AbstractEngine.toUTF8(value)); - } - - private native ArrayList _getReferences(); - private native void _setReferences(ArrayList value); - public ArrayList getReferences() { - return AbstractEngine.toUTF16(_getReferences()); - } - public void setReferences(ArrayList value) { - _setReferences(AbstractEngine.toUTF8(value)); - } - - private native ArrayList _getKeywords(); - private native void _setKeywords(ArrayList value); - public ArrayList getKeywords() { - return AbstractEngine.toUTF16(_getKeywords()); - } - public void setKeywords(ArrayList value) { - _setKeywords(AbstractEngine.toUTF8(value)); - } - - private native byte[] _getComments(); - private native void _setComments(byte[] value); - public String getComments() { - return AbstractEngine.toUTF16(_getComments()); - } - public void setComments(String value) { - _setComments(AbstractEngine.toUTF8(value)); - } - - private native Vector> _getOptFields(); - private native void _setOptFields(Vector> value); - public Vector> getOptFields() { - return AbstractEngine.toUTF16(_getOptFields()); - } - public void setOptFields(Vector> value) { - _setOptFields(AbstractEngine.toUTF8(value)); - } - - public native Message.EncFormat getEncFormat(); - public native void setEncFormat(Message.EncFormat value); - -} diff --git a/src/foundation/pEp/jniadapter/Utils.java b/src/foundation/pEp/jniadapter/Utils.java new file mode 100644 index 0000000..709998f --- /dev/null +++ b/src/foundation/pEp/jniadapter/Utils.java @@ -0,0 +1,115 @@ +package foundation.pEp.jniadapter; + +import java.io.UnsupportedEncodingException; +import java.text.Normalizer; +import java.util.ArrayList; +import java.util.Vector; + +public class Utils { + private Utils() { } + + public static byte[] toUTF8(String str) { + if (str == null) + return null; + + try { + String _str = Normalizer.normalize(str, Normalizer.Form.NFC); + byte _buf[] = _str.getBytes("UTF-8"); + byte _cpy[] = new byte[_buf.length]; + System.arraycopy(_buf,0,_cpy,0,_buf.length); + return _cpy; + } + catch (UnsupportedEncodingException e) { + assert false; + return new byte[0]; + } + } + + public static Vector toUTF8(Vector list) { + if (list == null) + return null; + + Vector result = new Vector(list.size()); + + for (int i=0; i toUTF8(Pair pair) { + if (pair == null) + return null; + + Pair result = new Pair(); + + result.first = toUTF8(pair.first); + result.second = toUTF8(pair.second); + + return result; + } + + public static ArrayList> toUTF8(ArrayList> list) { + if (list == null) + return null; + + ArrayList> result = new ArrayList>(list.size()); + + for (int i=0; i toUTF16(Vector list) { + if (list == null) + return null; + + Vector result = new Vector(list.size()); + + for (int i=0; i toUTF16(Pair pair) { + if (pair == null) + return null; + + Pair result = new Pair(); + + result.first = toUTF16(pair.first); + result.second = toUTF16(pair.second); + + return result; + } + + public static ArrayList> toUTF16(ArrayList> list) { + if (list == null) + return null; + + ArrayList> result = new ArrayList>(list.size()); + + for (int i=0; i return new Boolean(_«@name»(`apply "parm/*", mode=basic_parm_name`)); otherwise - |> return AbstractEngine.toUTF16(_«@name»(`apply "parm/*", mode=basic_parm_name`)); + |> return Utils.toUTF16(_«@name»(`apply "parm/*", mode=basic_parm_name`)); } || } @@ -191,14 +191,14 @@ tstylesheet { // TODO factorize type conversion with multireturn and gen_java_message.java when "count(parm[returns][stringlist|string|sstring]) > 0" - |> return AbstractEngine.toUTF16(_«@name»(`apply "parm[in]", mode=call;`)); + |> return Utils.toUTF16(_«@name»(`apply "parm[in]", mode=call;`)); when "count(parm[returns]/stringpairlist) > 0" || ArrayList> glist = _«@name»(`apply "parm[in]", mode=call;`); if(glist != null){ ArrayList> list = new ArrayList>(); for (Pair i : glist) - list.add(new Pair(AbstractEngine.toUTF16(i.first), AbstractEngine.toUTF16(i.second))); + list.add(new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second))); return list; } return null; @@ -287,7 +287,7 @@ tstylesheet { if "$dir = 'in' or $dir = 'inout'" choose { when "$type = 'string' or $type = 'stringlist'" - | ¡$type _«$name» = AbstractEngine.toUTF8(«$name»); + | ¡$type _«$name» = Utils.toUTF8(«$name»); when "$type = 'identity'" || _Identity _«$name» = null; @@ -311,7 +311,7 @@ tstylesheet { if "$dir != 'in'" choose { when "$type = 'string' or $type = 'stringlist'" - | result.«$name» = AbstractEngine.toUTF16(_result.«$name»); + | result.«$name» = Utils.toUTF16(_result.«$name»); when "$type = 'identity'" | result.«$name» = Identity(«$name»); otherwise diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 19b0a94..655f075 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -34,14 +34,14 @@ tstylesheet { ) throws pEpException; public «$cname»(String mime_text) { - byte[] _mime_text = AbstractEngine.toUTF8(mime_text); + byte[] _mime_text = Utils.toUTF8(mime_text); handle = _«$cname»(_mime_text); } public native byte[] _encodeMIME() throws pEpException; public String encodeMIME() { - return AbstractEngine.toUTF16(_encodeMIME()); + return Utils.toUTF16(_encodeMIME()); } private «$cname»(long h) { @@ -157,13 +157,13 @@ tstylesheet { otherwise > _«$ename» } const "convget" choose { - when "$ctype = 'stringlist'" > AbstractEngine.toUTF16(i) - when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF16(i.first), AbstractEngine.toUTF16(i.second)) + when "$ctype = 'stringlist'" > Utils.toUTF16(i) + when "$ctype = 'stringpairlist'" > new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second)) otherwise > new «$ename»(i) } const "convset" choose { - when "$ctype = 'stringlist'" > AbstractEngine.toUTF8(i) - when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF8(i.first), AbstractEngine.toUTF8(i.second)) + when "$ctype = 'stringlist'" > Utils.toUTF8(i) + when "$ctype = 'stringpairlist'" > new Pair(Utils.toUTF8(i.first), Utils.toUTF8(i.second)) otherwise > new _«$ename»(i) } || @@ -200,13 +200,13 @@ tstylesheet { public «$type» get«$name»() { «$itype» res = _get«$name»(); if(res != null) - return AbstractEngine.toUTF16(res); + return Utils.toUTF16(res); else return null; } public void set«$name»(«$type» value) { if(value != null) - _set«$name»(AbstractEngine.toUTF8(value)); + _set«$name»(Utils.toUTF8(value)); else _set«$name»(new byte[0]); } @@ -220,13 +220,13 @@ tstylesheet { public «$type» get«$name»() { «$itype» res = _get«$name»(); if(res != null) - return AbstractEngine.toUTF16(res); + return Utils.toUTF16(res); else return null; } public void set«$name»(«$type» value) { if(value != null) - _set«$name»(AbstractEngine.toUTF8(value)); + _set«$name»(Utils.toUTF8(value)); else _set«$name»(null); } @@ -280,13 +280,13 @@ tstylesheet { otherwise > _«$ename» } const "convget" choose { - when "$ctype = 'stringlist'" > AbstractEngine.toUTF16(i) - when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF16(i.first), AbstractEngine.toUTF16(i.second)) + when "$ctype = 'stringlist'" > Utils.toUTF16(i) + when "$ctype = 'stringpairlist'" > new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second)) otherwise > new «$ename»(i) } const "convset" choose { - when "$ctype = 'stringlist'" > AbstractEngine.toUTF8(i) - when "$ctype = 'stringpairlist'" > new Pair(AbstractEngine.toUTF8(i.first), AbstractEngine.toUTF8(i.second)) + when "$ctype = 'stringlist'" > Utils.toUTF8(i) + when "$ctype = 'stringpairlist'" > new Pair(Utils.toUTF8(i.first), Utils.toUTF8(i.second)) otherwise > new _«$ename»(i) } || From 97a006385d2aa119fe124beb36043fe7f0120528 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 16:17:29 +0200 Subject: [PATCH 04/36] Move class decrypt_message_Return from inner class of Engine, to new class decrypt_message_Return (in pkg foundation.pEp.jniadapter) --- src/foundation/pEp/jniadapter/decrypt_message_Return.java | 7 +++++++ src/gen_java_Engine.ysl2 | 7 ------- .../foundation/pEp/jniadapter/test/basic/TestMain.java | 7 ++----- .../foundation/pEp/jniadapter/test/jni98/TestMain.java | 6 +++--- .../pEp/jniadapter/test/templateAliceBob/TestAlice.java | 4 ++-- .../pEp/jniadapter/test/templateAliceBob/TestBob.java | 4 ++-- 6 files changed, 16 insertions(+), 19 deletions(-) create mode 100644 src/foundation/pEp/jniadapter/decrypt_message_Return.java diff --git a/src/foundation/pEp/jniadapter/decrypt_message_Return.java b/src/foundation/pEp/jniadapter/decrypt_message_Return.java new file mode 100644 index 0000000..e59aae9 --- /dev/null +++ b/src/foundation/pEp/jniadapter/decrypt_message_Return.java @@ -0,0 +1,7 @@ +package foundation.pEp.jniadapter; + +public class decrypt_message_Return { + public Message dst; + public Rating rating; + public int flags; +} diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 838729c..1e74012 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -159,13 +159,6 @@ tstylesheet { } || - - || - public class «@name»_Return { - `` apply "parm[creates|returns|inout[../int]]", 1, mode=java with "public", 1; - } - - || } if "$convert" diff --git a/test/java/foundation/pEp/jniadapter/test/basic/TestMain.java b/test/java/foundation/pEp/jniadapter/test/basic/TestMain.java index d1f290c..12dc192 100644 --- a/test/java/foundation/pEp/jniadapter/test/basic/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/basic/TestMain.java @@ -1,9 +1,6 @@ package foundation.pEp.jniadapter.test.basic; -import foundation.pEp.jniadapter.Blob; -import foundation.pEp.jniadapter.Engine; -import foundation.pEp.jniadapter.Identity; -import foundation.pEp.jniadapter.Message; +import foundation.pEp.jniadapter.*; import foundation.pEp.pitytest.TestSuite; import foundation.pEp.pitytest.TestUnit; import foundation.pEp.jniadapter.test.utils.AdapterBaseTestContext; @@ -15,7 +12,7 @@ import static foundation.pEp.pitytest.TestLogger.log; class BasicTestContext extends AdapterBaseTestContext { Message enc; - Engine.decrypt_message_Return result; + decrypt_message_Return result; public BasicTestContext() { setTestContextName("BasicTestContext"); diff --git a/test/java/foundation/pEp/jniadapter/test/jni98/TestMain.java b/test/java/foundation/pEp/jniadapter/test/jni98/TestMain.java index a8327e1..aad0166 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni98/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/jni98/TestMain.java @@ -1,6 +1,6 @@ package foundation.pEp.jniadapter.test.jni98; -import foundation.pEp.jniadapter.Engine; +import foundation.pEp.jniadapter.*; import foundation.pEp.jniadapter.Message; import foundation.pEp.pitytest.TestUnit; import foundation.pEp.jniadapter.test.utils.AdapterBaseTestContext; @@ -34,7 +34,7 @@ class TestMain { log("\n" + msgToString(msg1, false)); // Lets get the pgpText of the msg1, and the EncFormat - String pgpText = Engine.toUTF16(msg1.getAttachments().elementAt(1).data); + String pgpText = Utils.toUTF16(msg1.getAttachments().elementAt(1).data); Message.EncFormat ef = msg1.getEncFormat(); //TODO: setting encformat to 4 (PEP) but getting back 3 (PGPMIME) @@ -44,7 +44,7 @@ class TestMain { log("\n" + msgToString(msg2, false)); logH2("Verify msg2"); - Engine.decrypt_message_Return result = null; + decrypt_message_Return result = null; result = ctx.engine.decrypt_message(msg2, ctx.vStr, 0); log("\n" + msgToString(result.dst, false)); }).run(); diff --git a/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestAlice.java b/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestAlice.java index 1cb6358..f872423 100644 --- a/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestAlice.java +++ b/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestAlice.java @@ -2,7 +2,7 @@ package foundation.pEp.jniadapter.test.templateAliceBob; import static foundation.pEp.pitytest.TestLogger.*; -import foundation.pEp.jniadapter.Engine; +import foundation.pEp.jniadapter.*; import foundation.pEp.jniadapter.Message; import foundation.pEp.jniadapter.test.utils.transport.fsmqmanager.FsMQMessage; import foundation.pEp.pitytest.*; @@ -59,7 +59,7 @@ class TestAlice { Message msgRx = Utils.deserializepEpMessage(ctx, msgRxSerialized, Message.EncFormat.PEPEncInlineEA); log("ENCRYPTED IN: \n" + AdapterTestUtils.msgToString(msgRx, false)); - Engine.decrypt_message_Return result = ctx.engine.decrypt_message(msgRx, null, 0); + decrypt_message_Return result = ctx.engine.decrypt_message(msgRx, null, 0); log("DECRYPTED msg: \n" + AdapterTestUtils.msgToString(result.dst, false)); log("DECRYPTED rating:" + result.rating.toString()); log("DECRYPTED flags:" + result.flags); diff --git a/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestBob.java b/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestBob.java index c8b7afc..d5e477e 100644 --- a/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestBob.java +++ b/test/java/foundation/pEp/jniadapter/test/templateAliceBob/TestBob.java @@ -2,7 +2,7 @@ package foundation.pEp.jniadapter.test.templateAliceBob; import static foundation.pEp.pitytest.TestLogger.*; -import foundation.pEp.jniadapter.Engine; +import foundation.pEp.jniadapter.*; import foundation.pEp.jniadapter.Message; import foundation.pEp.jniadapter.test.utils.transport.fsmqmanager.FsMQMessage; import foundation.pEp.pitytest.*; @@ -39,7 +39,7 @@ class TestBob { Message msgRx = Utils.deserializepEpMessage(ctx, msgRxSerialized, Message.EncFormat.PEPEncInlineEA); log("ENCRYPTED IN: \n" + AdapterTestUtils.msgToString(msgRx, false)); - Engine.decrypt_message_Return result = ctx.engine.decrypt_message(msgRx, null, 0); + decrypt_message_Return result = ctx.engine.decrypt_message(msgRx, null, 0); log("DECRYPTED msg: \n" + AdapterTestUtils.msgToString(result.dst, false)); log("DECRYPTED rating:" + result.rating.toString()); log("DECRYPTED flags:" + result.flags); From f70a3abb7d1adcbb9c3bee4b52a00c56163c9626 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 16:29:45 +0200 Subject: [PATCH 05/36] generated EngineInterface started (need to merge in default now, there stuff has changed that causes problems now) --- src/gen_java_Engine.ysl2 | 46 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 1e74012..8d9ce6d 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -22,6 +22,19 @@ tstylesheet { `` apply "basic" } + || + document("foundation/pEp/jniadapter/{$cname}Interface.java", "text") + || + package foundation.pEp.jniadapter; + + import java.util.ArrayList; + import java.util.Vector; + + public interface «$cname»Interface { + `` apply "method", mode=java_interface + `` apply "basic", mode=java_interface + } + || } @@ -59,7 +72,25 @@ tstylesheet { } } } - + + template "basic" mode=java_interface { + const "itype" call "toIntermediate" with "type", "@type"; + const "jtype" call "toJava" with "type", "@type"; + + choose { + when "name(parm/*[1])='bytearray'" + || + public native «$itype» «@name»(`apply "parm/*", mode=basic_iparm`); + + || + otherwise { + || + public «$jtype» «@name»(`apply "parm/*", mode=basic_parm`); + || + } + } + } + template "*", mode=basic_parm_name choose { when "position() mod 2" { if "position() = 1 and name(.)='int'" @@ -237,6 +268,19 @@ tstylesheet { || } + template "method", mode=java_interface { + const "convert", "count(parm/stringlist|parm/stringpairlist|parm/string|parm/identity|parm/identitylist) > 0"; + const "singlereturn", "count(parm/creates|parm/returns|parm/inout[../int]) = 1"; + const "multireturn", "count(parm/creates|parm/returns|parm/inout[../int]) > 1"; + + || + public `if "not($convert)" > native ``call "returnJava"` «@name»( + `` apply "parm[in|inout]", 2, mode=java + ) throws pEpException; + + || + } + template "parm", mode=java { param "public", 0; const "dir", "name(*[1])"; From f3ed199b6978e1a61e2569d1efa6c497bb54e1cd Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 18:52:06 +0200 Subject: [PATCH 06/36] eliminate public native methods (wrap all in native methods in "normal" java method) // CodeGen - convert needs to go --- src/gen_cpp_Engine.ysl2 | 2 +- src/gen_java_Engine.ysl2 | 93 +++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 55 deletions(-) diff --git a/src/gen_cpp_Engine.ysl2 b/src/gen_cpp_Engine.ysl2 index 9f50823..c93b0cd 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/gen_cpp_Engine.ysl2 @@ -298,7 +298,7 @@ tstylesheet { } function "mangle" { - const "convert", "count(parm/stringlist|parm/string|parm/identity|parm/identitylist) > 0"; + const "convert", "1"; choose { when "$convert" diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index c909014..486d66a 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -23,6 +23,7 @@ tstylesheet { } || +/* document("foundation/pEp/jniadapter/{$cname}Interface.java", "text") || package foundation.pEp.jniadapter; @@ -34,72 +35,54 @@ tstylesheet { `` apply "method", mode=java_interface `` apply "basic", mode=java_interface } - || +*/ } template "basic" { const "itype" call "toIntermediate" with "type", "@type"; const "jtype" call "toJava" with "type", "@type"; - choose { - when "name(parm/*[1])='bytearray|identitylist'" - || - public native «$itype» «@name»(`apply "parm/*", mode=basic_iparm`); - - || - 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`) { + 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`); + when "@type = 'identity'" + |> return new Identity(_«@name»(`apply "parm/*", mode=basic_parm_name`)); + when "@type = 'bool'" + |> return new Boolean(_«@name»(`apply "parm/*", mode=basic_parm_name`)); + when "@type = 'identitylist'" { || - apply "parm/*", mode=basic_parm_set; - choose { - when "@type = 'void'" - |> _«@name»(`apply "parm/*", mode=basic_parm_name`); - when "@type = 'identity'" - |> return new Identity(_«@name»(`apply "parm/*", mode=basic_parm_name`)); - when "@type = 'bool'" - |> return new Boolean(_«@name»(`apply "parm/*", mode=basic_parm_name`)); - when "@type = 'identitylist'" { - || - Vector<_Identity> glist = _«@name»(`apply "parm/*", mode=basic_parm_name`); - Vector ret = new Vector(); - if(glist != null) { - for (_Identity i : glist) { - ret.add(new Identity(i)); - } + Vector<_Identity> glist = _«@name»(`apply "parm/*", mode=basic_parm_name`); + Vector ret = new Vector(); + if(glist != null) { + for (_Identity i : glist) { + ret.add(new Identity(i)); } - return ret; - || - } otherwise - |> return Utils.toUTF16(_«@name»(`apply "parm/*", mode=basic_parm_name`)); - } - || - } - + } + return ret; || - } + } otherwise + |> return Utils.toUTF16(_«@name»(`apply "parm/*", mode=basic_parm_name`)); + } + || } + + || } template "basic" mode=java_interface { const "itype" call "toIntermediate" with "type", "@type"; const "jtype" call "toJava" with "type", "@type"; - choose { - when "name(parm/*[1])='bytearray'" - || - public native «$itype» «@name»(`apply "parm/*", mode=basic_iparm`); - - || - otherwise { - || - public «$jtype» «@name»(`apply "parm/*", mode=basic_parm`); - || - } - } + || + public «$jtype» «@name»(`apply "parm/*", mode=basic_parm`); + || } template "*", mode=basic_parm_name choose { @@ -193,7 +176,7 @@ tstylesheet { } template "method", mode=plain { - const "convert", "count(parm/stringlist|parm/stringpairlist|parm/string|parm/identity|parm/identitylist) > 0"; + const "convert", "1"; const "singlereturn", "count(parm/creates|parm/returns|parm/inout[../int]) = 1"; const "multireturn", "count(parm/creates|parm/returns|parm/inout[../int]) > 1"; @@ -236,8 +219,9 @@ tstylesheet { ArrayList> glist = _«@name»(`apply "parm[in]", mode=call;`); if(glist != null){ ArrayList> list = new ArrayList>(); - for (Pair i : glist) + for (Pair i : glist) { list.add(new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second))); + } return list; } return null; @@ -250,8 +234,9 @@ tstylesheet { Vector<_Identity> glist = _«@name»(`apply "parm[in]", mode=call;`); if(glist != null){ Vector list = new Vector(); - for (_Identity i : glist) + for (_Identity i : glist) { list.add(new Identity(i)); + } return list; } return null; @@ -271,9 +256,8 @@ tstylesheet { if "not($singlereturn) and not($multireturn)" || _«@name»(`apply "parm[in]", mode=call;`); - return; || - + || } || @@ -350,8 +334,9 @@ tstylesheet { when "$type = 'identitylist'" || Vector<_Identity> _«$name» = new Vector<_Identity>(); - for (Identity i : «$name») + for (Identity i : «$name») { _«$name».add(new _Identity(i)); + } || } } From 99e7f7ef909be3031a2042128e5ed60bc13328f5 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 19:02:08 +0200 Subject: [PATCH 07/36] CodeGen - convert gone --- src/gen_cpp_Engine.ysl2 | 9 +-- src/gen_java_Engine.ysl2 | 116 ++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 72 deletions(-) diff --git a/src/gen_cpp_Engine.ysl2 b/src/gen_cpp_Engine.ysl2 index c93b0cd..7bfb086 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/gen_cpp_Engine.ysl2 @@ -298,14 +298,7 @@ tstylesheet { } function "mangle" { - const "convert", "1"; - - choose { - when "$convert" - > «concat('Java_foundation_pEp_jniadapter_', ../@name, '__1', str:replace(@name, '_', '_1'))» - otherwise - > «concat('Java_foundation_pEp_jniadapter_', ../@name, '_', str:replace(@name, '_', '_1'))» - } + > «concat('Java_foundation_pEp_jniadapter_', ../@name, '__1', str:replace(@name, '_', '_1'))» } template "parm", mode=sig { diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 486d66a..876a089 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -176,12 +176,10 @@ tstylesheet { } template "method", mode=plain { - const "convert", "1"; const "singlereturn", "count(parm/creates|parm/returns|parm/inout[../int]) = 1"; const "multireturn", "count(parm/creates|parm/returns|parm/inout[../int]) > 1"; if "$multireturn" { - if "$convert" || private class _«@name»_Return { `` apply "parm[creates|returns|inout[../int]]", 1, mode=intermediate with "public", 1; @@ -190,90 +188,80 @@ tstylesheet { || } - if "$convert" || private native `call "returnInter"` _«@name»( `` apply "parm[in|inout]", 2, mode=intermediate ) throws pEpException; - || - - || - public `if "not($convert)" > native ``call "returnJava"` «@name»( + public `call "returnJava"` «@name»( `` apply "parm[in|inout]", 2, mode=java - ) throws pEpException`if "not($convert)" > ;` + ) throws pEpException + { || - if "$convert" { - | { - apply "parm", mode=convertIn; - - if "$singlereturn" choose { - - // TODO factorize type conversion with multireturn and gen_java_message.java - - when "count(parm[returns][stringlist|string|sstring]) > 0" - |> return Utils.toUTF16(_«@name»(`apply "parm[in]", mode=call;`)); - when "count(parm[returns]/stringpairlist) > 0" - || - ArrayList> glist = _«@name»(`apply "parm[in]", mode=call;`); - if(glist != null){ - ArrayList> list = new ArrayList>(); - for (Pair i : glist) { - list.add(new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second))); - } - return list; - } - return null; - || - - when "count(parm[returns]/identity) > 0" - |> return new Identity(_«@name»(`apply "parm[in]", mode=call;`)); - when "count(parm[returns]/identitylist) > 0" - || - Vector<_Identity> glist = _«@name»(`apply "parm[in]", mode=call;`); - if(glist != null){ - Vector list = new Vector(); - for (_Identity i : glist) { - list.add(new Identity(i)); - } - return list; - } - return null; - || - otherwise - |> return _«@name»(`apply "parm[in]", mode=call;`); - } + apply "parm", mode=convertIn; - if "$multireturn" - || - _«@name»_Return _result = _«@name»(`apply "parm[in|inout]", mode=call;`); - «@name»_Return result = new «@name»_Return(); - `` apply "parm[creates|returns|inout[../int]]", mode=convertOut; - return result; - || + if "$singlereturn" choose { - if "not($singlereturn) and not($multireturn)" - || - _«@name»(`apply "parm[in]", mode=call;`); - || + // TODO factorize type conversion with multireturn and gen_java_message.java - || - } - || + when "count(parm[returns][stringlist|string|sstring]) > 0" + |> return Utils.toUTF16(_«@name»(`apply "parm[in]", mode=call;`)); + when "count(parm[returns]/stringpairlist) > 0" + || + ArrayList> glist = _«@name»(`apply "parm[in]", mode=call;`); + if(glist != null){ + ArrayList> list = new ArrayList>(); + for (Pair i : glist) { + list.add(new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second))); + } + return list; + } + return null; + || + + when "count(parm[returns]/identity) > 0" + |> return new Identity(_«@name»(`apply "parm[in]", mode=call;`)); + when "count(parm[returns]/identitylist) > 0" + || + Vector<_Identity> glist = _«@name»(`apply "parm[in]", mode=call;`); + if(glist != null){ + Vector list = new Vector(); + for (_Identity i : glist) { + list.add(new Identity(i)); + } + return list; + } + return null; + || + otherwise + |> return _«@name»(`apply "parm[in]", mode=call;`); } + + if "$multireturn" + || + _«@name»_Return _result = _«@name»(`apply "parm[in|inout]", mode=call;`); + «@name»_Return result = new «@name»_Return(); + `` apply "parm[creates|returns|inout[../int]]", mode=convertOut; + return result; || + if "not($singlereturn) and not($multireturn)" + || + _«@name»(`apply "parm[in]", mode=call;`); + || + + || + } || } template "method", mode=java_interface { - const "convert", "count(parm/stringlist|parm/stringpairlist|parm/string|parm/identity|parm/identitylist) > 0"; const "singlereturn", "count(parm/creates|parm/returns|parm/inout[../int]) = 1"; const "multireturn", "count(parm/creates|parm/returns|parm/inout[../int]) > 1"; || - public `if "not($convert)" > native ``call "returnJava"` «@name»( + public `call "returnJava"` «@name»( `` apply "parm[in|inout]", 2, mode=java ) throws pEpException; From a9883f9632d301b25dd39f63b29e0f32e77f32ef Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 19:14:27 +0200 Subject: [PATCH 08/36] finally add EngineInterface --- src/gen_java_Engine.ysl2 | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 876a089..5b2b29f 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -15,7 +15,7 @@ tstylesheet { import java.util.ArrayList; import java.util.Vector; - final public class «$cname» extends AbstractEngine { + final public class «$cname» extends AbstractEngine implements EngineInterface { public «$cname»() throws pEpException { } `` apply "method", mode=plain @@ -23,7 +23,6 @@ tstylesheet { } || -/* document("foundation/pEp/jniadapter/{$cname}Interface.java", "text") || package foundation.pEp.jniadapter; @@ -31,12 +30,11 @@ tstylesheet { import java.util.ArrayList; import java.util.Vector; - public interface «$cname»Interface { + public interface «$cname»Interface extends AbstractEngineInterface { `` apply "method", mode=java_interface `` apply "basic", mode=java_interface } || -*/ } template "basic" { @@ -109,7 +107,7 @@ tstylesheet { when "name(.) = 'bool'" > Boolean when "name(.) = 'bytearray'" - > byte[] + > byte[] otherwise > «name(.)» } From b2b6e678b3c031bb3e63013559a5e326403c182b Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 19:35:03 +0200 Subject: [PATCH 09/36] UniquelyIdentifiable improvements --- src/foundation/pEp/jniadapter/UniquelyIdentifiable.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/foundation/pEp/jniadapter/UniquelyIdentifiable.java b/src/foundation/pEp/jniadapter/UniquelyIdentifiable.java index d599e9c..39d8004 100644 --- a/src/foundation/pEp/jniadapter/UniquelyIdentifiable.java +++ b/src/foundation/pEp/jniadapter/UniquelyIdentifiable.java @@ -1,11 +1,12 @@ package foundation.pEp.jniadapter; import java.util.concurrent.atomic.AtomicLong; -abstract class UniquelyIdentifiable { - static final AtomicLong NEXT_ID = new AtomicLong(1); - final long id = NEXT_ID.getAndIncrement(); +// Abstract here so you can only inherit from, but not instantiate +abstract public class UniquelyIdentifiable { + private static final AtomicLong NEXT_ID = new AtomicLong(1); + private final long id = NEXT_ID.getAndIncrement(); - public long getId() { + protected long getId() { return id; } } From bf9cf19c337548344ca053140da004317cbea152 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 19:45:55 +0200 Subject: [PATCH 10/36] needsFastPollCallFromC etc.. dont need to public, they only get called from the C++ side of the adapter --- src/foundation/pEp/jniadapter/AbstractEngine.java | 13 ++++++------- .../pEp/jniadapter/AbstractEngineInterface.java | 6 ------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index fa45755..9b14e52 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -22,6 +22,9 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn private native void init(); private native void release(); + private long keyserverThread; + private long keyserverQueue; + public AbstractEngine() throws pEpException { synchronized (AbstractEngine.class) { init(); @@ -46,9 +49,6 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn return _getProtocolVersion(); } - private long keyserverThread; - private long keyserverQueue; - private native void _startKeyserverLookup(); public void startKeyserverLookup() { @@ -79,7 +79,6 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn return _isSyncRunning(); } - public void setMessageToSendCallback(Sync.MessageToSendCallback messageToSendCallback) { this.messageToSendCallback = messageToSendCallback; } @@ -92,7 +91,7 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn this.needsFastPollCallback = needsFastPollCallback; } - public int needsFastPollCallFromC(boolean fast_poll_needed) { + private int needsFastPollCallFromC(boolean fast_poll_needed) { if (needsFastPollCallback != null) { needsFastPollCallback.needsFastPollCallFromC(fast_poll_needed); } else { @@ -101,7 +100,7 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn return 0; } - public int notifyHandshakeCallFromC(_Identity _myself, _Identity _partner, SyncHandshakeSignal _signal) { + private int notifyHandshakeCallFromC(_Identity _myself, _Identity _partner, SyncHandshakeSignal _signal) { Identity myself = new Identity(_myself); Identity partner = new Identity(_partner); System.out.println("pEpSync" + "notifyHandshakeCallFromC: " + notifyHandshakeCallback); @@ -113,7 +112,7 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn return 0; } - public int messageToSendCallFromC(Message message) { + private int messageToSendCallFromC(Message message) { System.out.println("pEpSync" + "messageToSendCallFromC: " + messageToSendCallback); if (messageToSendCallback != null) { messageToSendCallback.messageToSend(message); diff --git a/src/foundation/pEp/jniadapter/AbstractEngineInterface.java b/src/foundation/pEp/jniadapter/AbstractEngineInterface.java index 9b13206..7ad20f0 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngineInterface.java +++ b/src/foundation/pEp/jniadapter/AbstractEngineInterface.java @@ -21,11 +21,5 @@ public interface AbstractEngineInterface { public void setNeedsFastPollCallback(Sync.NeedsFastPollCallback needsFastPollCallback); - public int needsFastPollCallFromC(boolean fast_poll_needed); - - public int notifyHandshakeCallFromC(_Identity _myself, _Identity _partner, SyncHandshakeSignal _signal); - - public int messageToSendCallFromC(Message message); - public Message incomingMessageFromPGPText(String pgpText, Message.EncFormat encFormat); } From 75704fa9f506ef6d4b907d58d41fb8553055b5ca Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 20:40:40 +0200 Subject: [PATCH 11/36] CodeGen improvements - generate comments --- src/gen_java_Engine.ysl2 | 124 ++++++++++++++++++++------------------- 1 file changed, 64 insertions(+), 60 deletions(-) diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 5b2b29f..30256e6 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -17,8 +17,7 @@ tstylesheet { final public class «$cname» extends AbstractEngine implements EngineInterface { public «$cname»() throws pEpException { } - - `` apply "method", mode=plain + `` apply "method" `` apply "basic" } @@ -42,8 +41,8 @@ tstylesheet { const "jtype" call "toJava" with "type", "@type"; || - private native «$itype» _«@name»(`apply "parm/*", mode=basic_iparm`); + // CodeGen "basic" public «$jtype» «@name»(`apply "parm/*", mode=basic_parm`) { || apply "parm/*", mode=basic_parm_set; @@ -71,13 +70,12 @@ tstylesheet { || } + private native «$itype» _«@name»(`apply "parm/*", mode=basic_iparm`); || } template "basic" mode=java_interface { - const "itype" call "toIntermediate" with "type", "@type"; const "jtype" call "toJava" with "type", "@type"; - || public «$jtype» «@name»(`apply "parm/*", mode=basic_parm`); || @@ -173,12 +171,18 @@ tstylesheet { } } - template "method", mode=plain { + template "method" { const "singlereturn", "count(parm/creates|parm/returns|parm/inout[../int]) = 1"; const "multireturn", "count(parm/creates|parm/returns|parm/inout[../int]) > 1"; + || + + //CodeGen "method" + || + if "$multireturn" { || + //CodeGen "mutlireturn" - class for return type private class _«@name»_Return { `` apply "parm[creates|returns|inout[../int]]", 1, mode=intermediate with "public", 1; } @@ -187,81 +191,81 @@ tstylesheet { } || - private native `call "returnInter"` _«@name»( - `` apply "parm[in|inout]", 2, mode=intermediate - ) throws pEpException; - public `call "returnJava"` «@name»( `` apply "parm[in|inout]", 2, mode=java - ) throws pEpException + ) throws pEpException { || apply "parm", mode=convertIn; - if "$singlereturn" choose { - - // TODO factorize type conversion with multireturn and gen_java_message.java - - when "count(parm[returns][stringlist|string|sstring]) > 0" - |> return Utils.toUTF16(_«@name»(`apply "parm[in]", mode=call;`)); - when "count(parm[returns]/stringpairlist) > 0" - || - ArrayList> glist = _«@name»(`apply "parm[in]", mode=call;`); - if(glist != null){ - ArrayList> list = new ArrayList>(); - for (Pair i : glist) { - list.add(new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second))); + if "$singlereturn" { + choose { + when "count(parm[returns][stringlist|string|sstring]) > 0" + |> return Utils.toUTF16(_«@name»(`apply "parm[in]", mode=call;`)); + + when "count(parm[returns]/stringpairlist) > 0" + || + ArrayList> glist = _«@name»(`apply "parm[in]", mode=call;`); + if(glist != null){ + ArrayList> list = new ArrayList>(); + for (Pair i : glist) { + list.add(new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second))); + } + return list; } - return list; - } - return null; - || - - when "count(parm[returns]/identity) > 0" - |> return new Identity(_«@name»(`apply "parm[in]", mode=call;`)); - when "count(parm[returns]/identitylist) > 0" - || - Vector<_Identity> glist = _«@name»(`apply "parm[in]", mode=call;`); - if(glist != null){ - Vector list = new Vector(); - for (_Identity i : glist) { - list.add(new Identity(i)); + return null; + || + + when "count(parm[returns]/identity) > 0" + |> return new Identity(_«@name»(`apply "parm[in]", mode=call;`)); + + when "count(parm[returns]/identitylist) > 0" + || + Vector<_Identity> glist = _«@name»(`apply "parm[in]", mode=call;`); + if(glist != null){ + Vector list = new Vector(); + for (_Identity i : glist) { + list.add(new Identity(i)); + } + return list; } - return list; - } - return null; - || - otherwise - |> return _«@name»(`apply "parm[in]", mode=call;`); - } + return null; + || - if "$multireturn" - || - _«@name»_Return _result = _«@name»(`apply "parm[in|inout]", mode=call;`); - «@name»_Return result = new «@name»_Return(); - `` apply "parm[creates|returns|inout[../int]]", mode=convertOut; - return result; - || + otherwise + |> return _«@name»(`apply "parm[in]", mode=call;`); + } + } - if "not($singlereturn) and not($multireturn)" - || - _«@name»(`apply "parm[in]", mode=call;`); - || + if "$multireturn" { + || + _«@name»_Return _result = _«@name»(`apply "parm[in|inout]", mode=call;`); + «@name»_Return result = new «@name»_Return(); + `` apply "parm[creates|returns|inout[../int]]", mode=convertOut; + return result; + || + } + if "not($singlereturn) and not($multireturn)" { + || + _«@name»(`apply "parm[in]", mode=call;`); + || + } || } + + private native `call "returnInter"` _«@name»( + `` apply "parm[in|inout]", 2, mode=intermediate + ) throws pEpException; || } template "method", mode=java_interface { - const "singlereturn", "count(parm/creates|parm/returns|parm/inout[../int]) = 1"; - const "multireturn", "count(parm/creates|parm/returns|parm/inout[../int]) > 1"; - || public `call "returnJava"` «@name»( `` apply "parm[in|inout]", 2, mode=java - ) throws pEpException; + ) throws pEpException; || } From 50abf8f82706bfa79cfc67af2bb3b2441ce318ea Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 20:49:46 +0200 Subject: [PATCH 12/36] Formatting only --- .../pEp/jniadapter/AbstractEngine.java | 20 +++++++++++-------- src/foundation/pEp/jniadapter/Blob.java | 15 ++++++++------ src/foundation/pEp/jniadapter/Identity.java | 13 ++++++------ src/foundation/pEp/jniadapter/Sync.java | 7 +++---- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index 9b14e52..e3af136 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -37,48 +37,52 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn } } - private native String _getVersion(); - public String getVersion() { return _getVersion(); } - private native String _getProtocolVersion(); + private native String _getVersion(); + public String getProtocolVersion() { return _getProtocolVersion(); } - private native void _startKeyserverLookup(); + private native String _getProtocolVersion(); + public void startKeyserverLookup() { _startKeyserverLookup(); } - private native void _stopKeyserverLookup(); + private native void _startKeyserverLookup(); public void stopKeyserverLookup() { _startKeyserverLookup(); } - private native void _startSync(); + private native void _stopKeyserverLookup(); + public void startSync() { _startSync(); } - private native void _stopSync(); + private native void _startSync(); public void stopSync() { _stopSync(); } - private native boolean _isSyncRunning(); + private native void _stopSync(); public boolean isSyncRunning() { return _isSyncRunning(); } + private native boolean _isSyncRunning(); + + // Callbacks public void setMessageToSendCallback(Sync.MessageToSendCallback messageToSendCallback) { this.messageToSendCallback = messageToSendCallback; } diff --git a/src/foundation/pEp/jniadapter/Blob.java b/src/foundation/pEp/jniadapter/Blob.java index 9d2c7cc..073ac42 100644 --- a/src/foundation/pEp/jniadapter/Blob.java +++ b/src/foundation/pEp/jniadapter/Blob.java @@ -11,10 +11,18 @@ public class Blob implements BlobInterface, Serializable { mime_type = "application/octet-stream"; } - /** Human readable string representation of Blob. + Blob(_Blob b) { + data = b.data; + mime_type = Utils.toUTF16(b.mime_type); + filename = Utils.toUTF16(b.filename); + } + + /** + * Human readable string representation of Blob. * The data field is ASN.1 XER decoded for mime_types: * "application/pEp.sync" * "application/pEp.keyreset" + * * @return String Blob as String */ public String toString() { @@ -27,10 +35,5 @@ public class Blob implements BlobInterface, Serializable { return ret; } - Blob(_Blob b) { - data = b.data; - mime_type = Utils.toUTF16(b.mime_type); - filename = Utils.toUTF16(b.filename); - } } diff --git a/src/foundation/pEp/jniadapter/Identity.java b/src/foundation/pEp/jniadapter/Identity.java index 54ff7de..34e7dde 100644 --- a/src/foundation/pEp/jniadapter/Identity.java +++ b/src/foundation/pEp/jniadapter/Identity.java @@ -33,17 +33,16 @@ public class Identity implements IdentityInterface, Serializable { flags = i.flags; } - @Override - public String toString() { - return address + "::" + username + "\n" + - user_id + "::" + fpr; + public Rating getRating() { + return Rating.getByInt(_getRating(comm_type.value)); } - // Native private native int _getRating(int commType); - public Rating getRating() { - return Rating.getByInt(_getRating(comm_type.value)); + @Override + public String toString() { + return address + "::" + username + "\n" + + user_id + "::" + fpr; } } diff --git a/src/foundation/pEp/jniadapter/Sync.java b/src/foundation/pEp/jniadapter/Sync.java index 685ba0d..7889340 100644 --- a/src/foundation/pEp/jniadapter/Sync.java +++ b/src/foundation/pEp/jniadapter/Sync.java @@ -6,7 +6,7 @@ import foundation.pEp.jniadapter.pEpException; public interface Sync { - + interface NeedsFastPollCallback { void needsFastPollCallFromC(Boolean fast_poll_needed); } @@ -20,8 +20,7 @@ public interface Sync { } - public class DefaultCallback - implements Sync.MessageToSendCallback, Sync.NotifyHandshakeCallback, Sync.NeedsFastPollCallback { + public class DefaultCallback implements Sync.MessageToSendCallback, Sync.NotifyHandshakeCallback, Sync.NeedsFastPollCallback { @Override public void needsFastPollCallFromC(Boolean fast_poll_needed) { System.out.println("Need fast Poll"); @@ -31,7 +30,7 @@ public interface Sync { public void messageToSend(Message message) { System.out.println("messageToSend Defualt Callback"); } - + @Override public void notifyHandshake(Identity myself, Identity partner, SyncHandshakeSignal signal) { System.out.println("notifyHandshake Default Callback"); From 931cf1a1c355ccc60ec73833ff688221d7486b5f Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 20:58:29 +0200 Subject: [PATCH 13/36] CodeGen ysl2 formatting only (i like brackets) --- src/gen_java_Message.ysl2 | 154 +++++++++++++++++++------------------- 1 file changed, 78 insertions(+), 76 deletions(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 655f075..21b9dd0 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -38,7 +38,7 @@ tstylesheet { handle = _«$cname»(_mime_text); } - public native byte[] _encodeMIME() throws pEpException; + private native byte[] _encodeMIME() throws pEpException; public String encodeMIME() { return Utils.toUTF16(_encodeMIME()); @@ -126,30 +126,28 @@ tstylesheet { const "name" call "toJava" with "type", "name(*[position()=1])"; choose { - when "$ctype = 'identity'" - || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); - public «$type» get«$name»() { - «$itype» res = _get«$name»(); - if(res != null){ - return new «$type»(_get«$name»()); - }else{ - return null; + when "$ctype = 'identity'" { + || + private native «$itype» _get«$name»(); + private native void _set«$name»(«$itype» value); + public «$type» get«$name»() { + «$itype» res = _get«$name»(); + if(res != null){ + return new «$type»(_get«$name»()); + }else{ + return null; + } + } + public void set«$name»(«$type» value) { + if(value != null) + _set«$name»(new «$itype»(value)); + else + _set«$name»(null); } - } - public void set«$name»(«$type» value) { - if(value != null) - _set«$name»(new «$itype»(value)); - else - _set«$name»(null); - } - - || - - when "$ctype = 'identitylist' or $ctype = 'bloblist' or $ctype = 'stringlist' or $ctype = 'stringpairlist'" - { + || + } + when "$ctype = 'identitylist' or $ctype = 'bloblist' or $ctype = 'stringlist' or $ctype = 'stringpairlist'" { const "ename", "substring-after(substring($type,1,string-length($type)-1), '<')"; const "iename" choose { when "$ctype = 'stringlist'" > byte[] @@ -193,68 +191,72 @@ tstylesheet { || } - when "$itype != $type" - || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); - public «$type» get«$name»() { - «$itype» res = _get«$name»(); - if(res != null) - return Utils.toUTF16(res); - else - return null; - } - public void set«$name»(«$type» value) { - if(value != null) - _set«$name»(Utils.toUTF8(value)); - else - _set«$name»(new byte[0]); + when "$itype != $type" { + || + private native «$itype» _get«$name»(); + private native void _set«$name»(«$itype» value); + public «$type» get«$name»() { + «$itype» res = _get«$name»(); + if(res != null) + return Utils.toUTF16(res); + else + return null; + } + public void set«$name»(«$type» value) { + if(value != null) + _set«$name»(Utils.toUTF8(value)); + else + _set«$name»(new byte[0]); + } + + || } - || + when "$itype != $type" { + || + private native «$itype» _get«$name»(); + private native void _set«$name»(«$itype» value); + public «$type» get«$name»() { + «$itype» res = _get«$name»(); + if(res != null) + return Utils.toUTF16(res); + else + return null; + } + public void set«$name»(«$type» value) { + if(value != null) + _set«$name»(Utils.toUTF8(value)); + else + _set«$name»(null); + } - when "$itype != $type" - || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); - public «$type» get«$name»() { - «$itype» res = _get«$name»(); - if(res != null) - return Utils.toUTF16(res); - else - return null; - } - public void set«$name»(«$type» value) { - if(value != null) - _set«$name»(Utils.toUTF8(value)); - else - _set«$name»(null); + || } - || + when "../enum[@name=$ctype]" { + || + private native int _get«$name»(); + public «$itype» get«$name»() { + return «$itype».getByInt(_get«$name»()); + } + private native void _set«$name»(int value); + public void set«$name»(«$itype» value) { + if(value != null) + _set«$name»(value.value); + else + _set«$name»(0); + } - when "../enum[@name=$ctype]" - || - private native int _get«$name»(); - public «$itype» get«$name»() { - return «$itype».getByInt(_get«$name»()); - } - private native void _set«$name»(int value); - public void set«$name»(«$itype» value) { - if(value != null) - _set«$name»(value.value); - else - _set«$name»(0); + || } - || - - otherwise - || - public native «$itype» get«$name»(); - public native void set«$name»(«$itype» value); + otherwise { + || + public native «$itype» get«$name»(); + public native void set«$name»(«$itype» value); - || + || + } } } From 38873a399d247c7c913ee549eb0f6f9b652ed455 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 21:34:57 +0200 Subject: [PATCH 14/36] CodeGen class Message - formatting only --- src/gen_java_Message.ysl2 | 78 +++++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 28 deletions(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 21b9dd0..08c450c 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -80,6 +80,7 @@ tstylesheet { const "jname" call "toJava" with "type", "@name"; document("foundation/pEp/jniadapter/{$jname}.java", "text") || + // CodeGen template enum|exception package foundation.pEp.jniadapter; import java.util.HashMap; @@ -91,6 +92,7 @@ tstylesheet { template "enum|exception", mode=inner { const "jname" call "CamelCase" with "text", "@name"; || + // CodeGen template enum|exception, mode=inner public enum «$jname» { `` apply "*", mode=value ; @@ -116,6 +118,7 @@ tstylesheet { return null; } } + || } @@ -125,28 +128,35 @@ tstylesheet { const "itype" call "toIntermediate" with "type", "name(.)"; const "name" call "toJava" with "type", "name(*[position()=1])"; + || + // CodeGen template * mode=entry + || choose { when "$ctype = 'identity'" { || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); public «$type» get«$name»() { «$itype» res = _get«$name»(); - if(res != null){ + if (res != null) { return new «$type»(_get«$name»()); - }else{ + } else { return null; } } + private native «$itype» _get«$name»(); + public void set«$name»(«$type» value) { - if(value != null) + if (value != null) { _set«$name»(new «$itype»(value)); - else + } else { _set«$name»(null); + } } + private native void _set«$name»(«$itype» value); + || } + when "$ctype = 'identitylist' or $ctype = 'bloblist' or $ctype = 'stringlist' or $ctype = 'stringpairlist'" { const "ename", "substring-after(substring($type,1,string-length($type)-1), '<')"; const "iename" choose { @@ -165,87 +175,99 @@ tstylesheet { otherwise > new _«$ename»(i) } || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); public «$type» get«$name»() { «$itype» glist = _get«$name»(); - if(glist != null){ + if (glist != null) { «$type» list = new «$type»(); - for («$iename» i : glist) + for («$iename» i : glist) { list.add(«$convget»); + } return list; } return null; } + private native «$itype» _get«$name»(); + public void set«$name»(«$type» value) { - if(value != null){ + if (value != null) { «$itype» list = new «$itype»(); - for («$ename» i : value) + for («$ename» i : value) { list.add(«$convset»); + } _set«$name»(list); - }else{ + } else { _set«$name»(null); } } - + private native void _set«$name»(«$itype» value); + + || } when "$itype != $type" { || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); public «$type» get«$name»() { «$itype» res = _get«$name»(); - if(res != null) + if (res != null) { return Utils.toUTF16(res); - else + } else { return null; + } } + private native «$itype» _get«$name»(); + public void set«$name»(«$type» value) { - if(value != null) + if (value != null) { _set«$name»(Utils.toUTF8(value)); - else + } else { _set«$name»(new byte[0]); + } } + private native void _set«$name»(«$itype» value); + || } when "$itype != $type" { || - private native «$itype» _get«$name»(); - private native void _set«$name»(«$itype» value); public «$type» get«$name»() { «$itype» res = _get«$name»(); - if(res != null) + if (res != null) { return Utils.toUTF16(res); - else + } else { return null; + } } + private native «$itype» _get«$name»(); + public void set«$name»(«$type» value) { - if(value != null) + if (value != null) { _set«$name»(Utils.toUTF8(value)); - else + } else { _set«$name»(null); + } } + private native void _set«$name»(«$itype» value); + || } when "../enum[@name=$ctype]" { || - private native int _get«$name»(); public «$itype» get«$name»() { return «$itype».getByInt(_get«$name»()); } - private native void _set«$name»(int value); + private native int _get«$name»(); public void set«$name»(«$itype» value) { if(value != null) _set«$name»(value.value); else _set«$name»(0); } + private native void _set«$name»(int value); || } From 83eef3bebd439f1e050ce6467ed8c80eb31b44ac Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 21:42:36 +0200 Subject: [PATCH 15/36] CodeGen Message yslt - Remove Dead Code --- src/gen_java_Message.ysl2 | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 08c450c..7f22ae0 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -230,31 +230,6 @@ tstylesheet { || } - when "$itype != $type" { - || - public «$type» get«$name»() { - «$itype» res = _get«$name»(); - if (res != null) { - return Utils.toUTF16(res); - } else { - return null; - } - } - private native «$itype» _get«$name»(); - - public void set«$name»(«$type» value) { - if (value != null) { - _set«$name»(Utils.toUTF8(value)); - } else { - _set«$name»(null); - } - } - private native void _set«$name»(«$itype» value); - - - || - } - when "../enum[@name=$ctype]" { || public «$itype» get«$name»() { From 7cc5ca7c3276cb401abb565614e528316119b8b8 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 22:04:57 +0200 Subject: [PATCH 16/36] Message class eliminate public native methods, More comments generated --- src/gen_java_Message.ysl2 | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 7f22ae0..6aeaa2a 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -134,6 +134,7 @@ tstylesheet { choose { when "$ctype = 'identity'" { || + // Property type: Identity. [java: «$type», intermediate: «$itype», ctype: «$ctype»] public «$type» get«$name»() { «$itype» res = _get«$name»(); if (res != null) { @@ -175,6 +176,7 @@ tstylesheet { otherwise > new _«$ename»(i) } || + // Property type: list type. [java: «$type», intermediate: «$itype», ctype: «$ctype»] public «$type» get«$name»() { «$itype» glist = _get«$name»(); if (glist != null) { @@ -207,6 +209,7 @@ tstylesheet { when "$itype != $type" { || + // Property type: differs from intermediate. [java: «$type», intermediate: «$itype», ctype: «$ctype»] public «$type» get«$name»() { «$itype» res = _get«$name»(); if (res != null) { @@ -232,11 +235,12 @@ tstylesheet { when "../enum[@name=$ctype]" { || - public «$itype» get«$name»() { - return «$itype».getByInt(_get«$name»()); + // Property type: enum type. [java: «$type», intermediate: «$itype», ctype: «$ctype»] + public «$type» get«$name»() { + return «$type».getByInt(_get«$name»()); } private native int _get«$name»(); - public void set«$name»(«$itype» value) { + public void set«$name»(«$type» value) { if(value != null) _set«$name»(value.value); else @@ -249,8 +253,17 @@ tstylesheet { otherwise { || - public native «$itype» get«$name»(); - public native void set«$name»(«$itype» value); + // Property type: no intermediate type [java: «$type», intermediate: «$itype», ctype: «$ctype»] + public «$type» get«$name»() { + return get«$name»(); + } + private native «$type» _get«$name»(); + + public void set«$name»(«$type» value) { + _set«$name»(value); + } + private native void _set«$name»(«$type» value); + || } From a3c787371de082c85316a46c4985c1cea28d689d Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 22:10:02 +0200 Subject: [PATCH 17/36] The CodeGen for MessageInterface is actually 50 lines less... --- src/gen_java_Message.ysl2 | 60 ++++----------------------------------- 1 file changed, 5 insertions(+), 55 deletions(-) diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index 6aeaa2a..e03f147 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -71,6 +71,7 @@ tstylesheet { public interface «$cname»Interface { public String encodeMIME(); + `` apply "*[name(.)!='enum']", mode=interface } || @@ -271,66 +272,15 @@ tstylesheet { } template "*", mode=interface { - const "ctype", "name(.)"; const "type" call "toJava" with "type", "name(.)"; - const "itype" call "toIntermediate" with "type", "name(.)"; const "name" call "toJava" with "type", "name(*[position()=1])"; - choose { - when "$ctype = 'identity'" - || - public «$type» get«$name»(); - public void set«$name»(«$type» value); - || - - when "$ctype = 'identitylist' or $ctype = 'bloblist' or $ctype = 'stringlist' or $ctype = 'stringpairlist'" - { - const "ename", "substring-after(substring($type,1,string-length($type)-1), '<')"; - const "iename" choose { - when "$ctype = 'stringlist'" > byte[] - when "$ctype = 'stringpairlist'" > Pair - otherwise > _«$ename» - } - const "convget" choose { - when "$ctype = 'stringlist'" > Utils.toUTF16(i) - when "$ctype = 'stringpairlist'" > new Pair(Utils.toUTF16(i.first), Utils.toUTF16(i.second)) - otherwise > new «$ename»(i) - } - const "convset" choose { - when "$ctype = 'stringlist'" > Utils.toUTF8(i) - when "$ctype = 'stringpairlist'" > new Pair(Utils.toUTF8(i.first), Utils.toUTF8(i.second)) - otherwise > new _«$ename»(i) - } - || - public «$type» get«$name»(); - public void set«$name»(«$type» value); - || - } - - when "$itype != $type" - || - public «$type» get«$name»(); - public void set«$name»(«$type» value); - || - - when "$itype != $type" - || - public «$type» get«$name»(); - public void set«$name»(«$type» value); - || + || + public «$type» get«$name»(); - when "../enum[@name=$ctype]" - || - public «$itype» get«$name»(); - public void set«$name»(«$itype» value); - || + public void set«$name»(«$type» value); - otherwise - || - public «$itype» get«$name»(); - public void set«$name»(«$itype» value); - || - } + || } template "*", mode=value { From 486d00fab443c91cb337c711dc75e62731546f75 Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 1 Jul 2020 22:44:26 +0200 Subject: [PATCH 18/36] Clean out and rebuild .hgignore --- .hgignore | 54 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/.hgignore b/.hgignore index d83d981..6a80d6a 100644 --- a/.hgignore +++ b/.hgignore @@ -9,37 +9,48 @@ syntax: glob *.a *.dylib *.so -*.orig -*~ -.DS_Store -*.db *.log +.DS_Store + +# ignore config files +local.conf +local.conf # ignore generated files +status_list.yml2 +foundation_pEp_jniadapter__Blob.h +foundation_pEp_jniadapter_AbstractEngine.h +foundation_pEp_jniadapter_Engine.* +foundation_pEp_jniadapter_Identity.h +foundation_pEp_jniadapter_Message.cc +foundation_pEp_jniadapter_Message.h +throw_pEp_exception.cc +throw_pEp_exception.hh -org_pEp_*.h -org_pEp_*.cc -pEp_*.h -pEp_*.cc -org/pEp/jniadapter/pEp*.java -foundation_pEp_*.h -foundation_pEp_*.cc -foundation/pEp/jniadapter/pEp*.java - -pEp/jniadapter/pEp*.java -throw_pEp_exception.* +CipherSuite.java Color.java +DecryptFlags.java Engine.java +EngineInterface.java +IdentityFlags.java Message.java -DecryptFlags.java +MessageInterface.java +pEp*.java Rating.java Status.java SyncHandshakeResult.java -IdentityFlags.java SyncHandshakeSignal.java -CipherSuite.java -status_list.yml2 +# ignore pep-homes +test/resources/per-user-dirs/alice/.pEp +test/resources/per-user-dirs/bob/.pEp +test/resources/per-user-dirs/carol/.pEp + +# FsMsgQueue data +test/resources/fsmsgqueue-test/Alice +test/resources/fsmsgqueue-test/Bob +test/resources/fsmsgqueue-test/Carol + ndk*/ # ignore vim workspace @@ -77,15 +88,12 @@ android/gradlew.bat androidTests/gradle/wrapper/gradle-wrapper.properties androidTests/gradlew androidTests/gradlew.bat -src/org.tar.gz -src/local.conf +org.tar.gz *.iml syntax: regexp android/external/[^.]* -local.conf -src/local.conf # Default ignored files .idea/ From e5f3aa6b8a00e9ab2eda520124c72d22fdd0cb1f Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 2 Jul 2020 19:21:59 +0200 Subject: [PATCH 19/36] Generate marker files for make Move exceptions into own subpkg foundation.pEp.jniadapter.exceptions --- .hgignore | 4 +- .../pEp/jniadapter/AbstractEngine.java | 3 +- src/foundation/pEp/jniadapter/Sync.java | 4 -- src/foundation/pEp/jniadapter/_Blob.java | 2 + src/gen_cpp_Engine.ysl2 | 5 +- src/gen_cpp_Message.ysl2 | 5 +- src/gen_java_Engine.ysl2 | 8 ++- src/gen_java_Message.ysl2 | 35 +++++++++-- src/gen_java_exceptions.ysl2 | 35 ----------- src/gen_throw_pEp_exception.ysl2 | 59 ++++++++++--------- .../pEp/jniadapter/test/jni88/TestMain.java | 2 + .../pEp/jniadapter/test/jni91/TestMain.java | 1 + .../pEp/jniadapter/test/jni92/TestMain.java | 1 + 13 files changed, 82 insertions(+), 82 deletions(-) delete mode 100644 src/gen_java_exceptions.ysl2 diff --git a/.hgignore b/.hgignore index 6a80d6a..551e718 100644 --- a/.hgignore +++ b/.hgignore @@ -24,8 +24,8 @@ foundation_pEp_jniadapter_Engine.* foundation_pEp_jniadapter_Identity.h foundation_pEp_jniadapter_Message.cc foundation_pEp_jniadapter_Message.h -throw_pEp_exception.cc -throw_pEp_exception.hh +#throw_pEp_exception.cc +#throw_pEp_exception.hh CipherSuite.java Color.java diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index e3af136..b4befa8 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -4,9 +4,8 @@ import java.util.ArrayList; import java.util.Vector; import foundation.pEp.jniadapter.Sync.DefaultCallback; +import foundation.pEp.jniadapter.exceptions.*; -import java.io.UnsupportedEncodingException; -import java.text.Normalizer; abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEngineInterface, AutoCloseable { static { diff --git a/src/foundation/pEp/jniadapter/Sync.java b/src/foundation/pEp/jniadapter/Sync.java index 7889340..55f2e2c 100644 --- a/src/foundation/pEp/jniadapter/Sync.java +++ b/src/foundation/pEp/jniadapter/Sync.java @@ -1,9 +1,5 @@ package foundation.pEp.jniadapter; -import foundation.pEp.jniadapter.Identity; -import foundation.pEp.jniadapter.Message; -import foundation.pEp.jniadapter.pEpException; - public interface Sync { diff --git a/src/foundation/pEp/jniadapter/_Blob.java b/src/foundation/pEp/jniadapter/_Blob.java index 0cbc732..4922abd 100644 --- a/src/foundation/pEp/jniadapter/_Blob.java +++ b/src/foundation/pEp/jniadapter/_Blob.java @@ -1,5 +1,7 @@ package foundation.pEp.jniadapter; +import foundation.pEp.jniadapter.exceptions.*; + public class _Blob { public byte[] data; public byte[] mime_type; diff --git a/src/gen_cpp_Engine.ysl2 b/src/gen_cpp_Engine.ysl2 index 7bfb086..ab337bc 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/gen_cpp_Engine.ysl2 @@ -5,7 +5,10 @@ tstylesheet { include ./types_c.ysl2 include ./types_java.ysl2 - template "/namespace[@name='pEp']" apply "interface", 0; + template "/namespace[@name='pEp']" { + apply "interface", 0; + document("gen_cpp_Engine.marker", "text") > "" + } template "interface" document("foundation_pEp_jniadapter_{@name}.cc", "text") || diff --git a/src/gen_cpp_Message.ysl2 b/src/gen_cpp_Message.ysl2 index a5f4496..963c681 100644 --- a/src/gen_cpp_Message.ysl2 +++ b/src/gen_cpp_Message.ysl2 @@ -5,7 +5,10 @@ tstylesheet { include ./textutils.ysl2 include ./types_c.ysl2 - template "/namespace[@name='pEp']" apply "struct", 0; + template "/namespace[@name='pEp']" { + apply "struct", 0; + document("gen_cpp_Message.marker", "text") > "" + } template "struct" { const "jname" call "CamelCase" with "text", "@name"; diff --git a/src/gen_java_Engine.ysl2 b/src/gen_java_Engine.ysl2 index 30256e6..db69b7c 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/gen_java_Engine.ysl2 @@ -4,7 +4,10 @@ tstylesheet { include ./textutils.ysl2 include ./types_java.ysl2 - template "/namespace[@name='pEp']" apply "interface", 0; + template "/namespace[@name='pEp']" { + apply "interface", 0; + document("gen_java_Engine.marker", "text") > "" + } template "interface" { const "cname" call "toJava" with "type", "@name"; @@ -12,6 +15,7 @@ tstylesheet { || package foundation.pEp.jniadapter; + import foundation.pEp.jniadapter.exceptions.*; import java.util.ArrayList; import java.util.Vector; @@ -265,7 +269,7 @@ tstylesheet { || public `call "returnJava"` «@name»( `` apply "parm[in|inout]", 2, mode=java - ) throws pEpException; + ); || } diff --git a/src/gen_java_Message.ysl2 b/src/gen_java_Message.ysl2 index e03f147..2610d2f 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/gen_java_Message.ysl2 @@ -4,7 +4,10 @@ tstylesheet { include ./textutils.ysl2 include ./types_java.ysl2 - template "/namespace[@name='pEp']" apply "struct|enum|exception", 0; + template "/namespace[@name='pEp']" { + apply "struct|enum|exception", 0; + document("gen_java_Message.marker", "text") > "" + } template "struct" { const "cname" call "toJava" with "type", "@name"; @@ -12,6 +15,7 @@ tstylesheet { || package foundation.pEp.jniadapter; + import foundation.pEp.jniadapter.exceptions.*; import java.util.ArrayList; import java.util.Vector; import java.util.Date; @@ -77,23 +81,24 @@ tstylesheet { || } - template "enum|exception" { + template "enum" { const "jname" call "toJava" with "type", "@name"; document("foundation/pEp/jniadapter/{$jname}.java", "text") || - // CodeGen template enum|exception + // CodeGen template enum package foundation.pEp.jniadapter; import java.util.HashMap; - + `` apply ".", 0, mode=inner || + } - template "enum|exception", mode=inner { + template "enum", mode=inner { const "jname" call "CamelCase" with "text", "@name"; || - // CodeGen template enum|exception, mode=inner + // CodeGen template enum, mode=inner public enum «$jname» { `` apply "*", mode=value ; @@ -123,6 +128,24 @@ tstylesheet { || } + function "exception" { + param "name"; + + document "foundation/pEp/jniadapter/exceptions/{$name}.java", "text" { + | package foundation.pEp.jniadapter.exceptions; + | + | public class «$name» extends pEpException { + | public «$name»(String message) { + | super(message); + | } + | } + } + } + + template "exception" for "*[text()!=0]" call "exception" + with "name" call "CamelCase" with "text", "name(.)"; + + template "*", mode=entry { const "ctype", "name(.)"; const "type" call "toJava" with "type", "name(.)"; diff --git a/src/gen_java_exceptions.ysl2 b/src/gen_java_exceptions.ysl2 deleted file mode 100644 index ecdca21..0000000 --- a/src/gen_java_exceptions.ysl2 +++ /dev/null @@ -1,35 +0,0 @@ -include yslt.yml2 - -tstylesheet { - include ./textutils.ysl2 - - template "/" { - | package foundation.pEp.jniadapter; - | - | public class pEpException extends RuntimeException { - | public pEpException(String message) { - | super(message); - | } - | } - - apply "namespace/exception[@name='Status']", 0; - } - - function "exception" { - param "name"; - - document "foundation/pEp/jniadapter/{$name}.java", "text" { - | package foundation.pEp.jniadapter; - | - | public class «$name» extends pEpException { - | public «$name»(String message) { - | super(message); - | } - | } - } - } - - template "exception" for "*[text()!=0]" call "exception" - with "name" call "CamelCase" with "text", "name(.)"; -} - diff --git a/src/gen_throw_pEp_exception.ysl2 b/src/gen_throw_pEp_exception.ysl2 index 3c9d3ad..01602ac 100644 --- a/src/gen_throw_pEp_exception.ysl2 +++ b/src/gen_throw_pEp_exception.ysl2 @@ -18,42 +18,43 @@ tstylesheet { }; || - + document("gen_throw_pEp_exception.marker", "text") > "" } template "namespace" - || - #include - #include - #include "throw_pEp_exception.hh" + document("throw_pEp_exception.cc", "text") + || + #include + #include + #include "throw_pEp_exception.hh" - namespace pEp { - namespace JNIAdapter { - jint throw_pEp_Exception(JNIEnv *env, PEP_STATUS status) - { - jclass ex; - const char *ex_name; - - switch (status) { - `` apply "exception/*[text()!=0]", 4, mode=case - default: - assert(0); - ex_name = "Exception"; - } - - ex = env->FindClass(ex_name); - assert(ex); - - if (ex == NULL) { - ex = env->FindClass("java/lang/NoClassDefFoundError"); + namespace pEp { + namespace JNIAdapter { + jint throw_pEp_Exception(JNIEnv *env, PEP_STATUS status) + { + jclass ex; + const char *ex_name; + + switch (status) { + `` apply "exception/*[text()!=0]", 4, mode=case + default: + assert(0); + ex_name = "Exception"; + } + + ex = env->FindClass(ex_name); assert(ex); + + if (ex == NULL) { + ex = env->FindClass("java/lang/NoClassDefFoundError"); + assert(ex); + } + + return env->ThrowNew(ex, ex_name); } - - return env->ThrowNew(ex, ex_name); - } + }; }; - }; - || + || template "*", mode=case { | case `call "UCASE" with "text", "name(.)"`: diff --git a/test/java/foundation/pEp/jniadapter/test/jni88/TestMain.java b/test/java/foundation/pEp/jniadapter/test/jni88/TestMain.java index bc53fb5..68a15a6 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni88/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/jni88/TestMain.java @@ -1,5 +1,7 @@ package foundation.pEp.jniadapter.test.jni88; import foundation.pEp.jniadapter.*; +import foundation.pEp.jniadapter.exceptions.*; + import java.util.Vector; import java.lang.Thread; diff --git a/test/java/foundation/pEp/jniadapter/test/jni91/TestMain.java b/test/java/foundation/pEp/jniadapter/test/jni91/TestMain.java index 0f01ccf..be7f75d 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni91/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/jni91/TestMain.java @@ -1,5 +1,6 @@ package foundation.pEp.jniadapter.test.jni91; import foundation.pEp.jniadapter.*; +import foundation.pEp.jniadapter.exceptions.*; import java.lang.Thread; diff --git a/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java b/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java index 5a9d3c7..1ed476a 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java @@ -1,4 +1,5 @@ package foundation.pEp.jniadapter.test.jni92; +import foundation.pEp.jniadapter.exceptions.*; import foundation.pEp.jniadapter.test.utils.*; import foundation.pEp.pitytest.*; import foundation.pEp.jniadapter.*; From 60a260720f8fdbca1b65522d9f7ab463321e29ae Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 2 Jul 2020 20:33:06 +0200 Subject: [PATCH 20/36] Update tests - Engine.getId() has been made private/protected --- test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java b/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java index 1ed476a..62654f9 100644 --- a/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java +++ b/test/java/foundation/pEp/jniadapter/test/jni92/TestMain.java @@ -39,7 +39,7 @@ class TestMain { Engine e; TestLogger.logH2("Creating new Engine"); e = new Engine(); - TestLogger.log("Engine created with java object ID: " + e.getId()); +// TestLogger.log("Engine created with java object ID: " + e.getId()); return e; } @@ -53,7 +53,7 @@ class TestMain { public static void engineConsumer(Vector ev, Consumer ec) { ev.forEach(e -> { - TestLogger.logH2("engineConsumer: on engine java object ID: " + e.getId()); +// TestLogger.logH2("engineConsumer: on engine java object ID: " + e.getId()); ec.accept(e); }); } From 047baa52b70a52bd9d85dffb54b8a11e6758f57e Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 2 Jul 2020 22:49:33 +0200 Subject: [PATCH 21/36] Total overhaul/redesign of project filesystem structure / Makefile - Separate build folder (so far for all class files) - Separate dist folder (so folks dont have to dig for the build results) - Improved incremental build - Implicit rules and automatic dependency using gcc/clang features (.d files) - YML2 CodeGen incremental build support using marker files - Tests are using dist folder --- Makefile.conf | 18 +- src/Makefile | 236 ++++++++++-------- .../pEp/jniadapter/test/Makefile.conf | 6 +- 3 files changed, 151 insertions(+), 109 deletions(-) diff --git a/Makefile.conf b/Makefile.conf index 15c9dde..9cfb440 100644 --- a/Makefile.conf +++ b/Makefile.conf @@ -23,6 +23,17 @@ ifeq ($(PLATFORM),linux) JAVA_HOME=$(subst /bin,,$(dir $(realpath /usr/bin/javac))) endif +ifndef JAVA_HOME + $(error JAVA_HOME is not set!) +endif + +JAVA_BIN_DIR=$(JAVA_HOME)/bin + +# Old versions of a Java distribution have a `javah` binary, new versions do not. This checks whether or not `javah` can be found in the Java distribution found in the directory `$JAVA_HOME`. +DUMMY:=$(shell which $(JAVA_HOME)/bin/javah) +ifeq ($(.SHELLSTATUS),0) + OLD_JAVA=true +endif ######### Overrides from the config file(s) ######### ifneq ("$(wildcard $(HERE)local.conf)","") @@ -32,13 +43,6 @@ else $(info Optional build config not found: $(HERE)local.conf) endif -ifneq ("$(wildcard $(HERE)src/local.conf)","") - $(info including: $(HERE)src/local.conf) - -include $(HERE)src/local.conf -else - $(info Optional build config not found: $(HERE)src/local.conf) -endif - ### Apply config ENGINE_LIB=-L$(ENGINE_LIB_PATH) ENGINE_INC=-I$(ENGINE_INC_PATH) diff --git a/src/Makefile b/src/Makefile index 29ba667..8ef7459 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,127 +18,163 @@ $(info CXXFLAGS: $(CXXFLAGS)) $(info LDFLAGS: $(LDFLAGS)) $(info LDLIBS: $(LDLIBS)) -ifndef JAVA_HOME - $(error JAVA_HOME is not set!) -endif - -JP=$(JAVA_HOME)/bin - -# Old versions of a Java distribution have a `javah` binary, new versions do not. This checks whether or not `javah` can be found in the Java distribution found in the directory `$JAVA_HOME`. -NOT_USED:=$(shell which $(JAVA_HOME)/bin/javah) -ifeq ($(.SHELLSTATUS),0) - OLD_JAVA=placeholder -endif - -LIBRARY=libpEpJNI.a -JAR=pEp.jar - +# Names of the java and c++ libs to be built +LIB_JAVA=pEp.jar +LIB_CXX_STATIC=libpEpJNI.a ifeq ($(PLATFORM),linux) - SHARED=libpEpJNI.so + LIB_CXX_DYN=libpEpJNI.so else ifeq ($(PLATFORM),darwin) - SHARED=libpEpJNI.dylib + LIB_CXX_DYN=libpEpJNI.dylib else $(error I dont know how to build for $(PLATFORM).) endif -JAVA_SOURCES=foundation/pEp/jniadapter/AbstractEngine.java \ - foundation/pEp/jniadapter/Blob.java \ - foundation/pEp/jniadapter/CommType.java \ - foundation/pEp/jniadapter/Identity.java \ - foundation/pEp/jniadapter/Pair.java \ - foundation/pEp/jniadapter/Sync.java \ - foundation/pEp/jniadapter/_Blob.java \ - foundation/pEp/jniadapter/_Identity.java \ - foundation/pEp/jniadapter/pEpException.java \ - foundation/pEp/jniadapter/Message.java \ - foundation/pEp/jniadapter/Engine.java \ - -C_SOURCES=foundation_pEp_jniadapter_Engine.cc \ - foundation_pEp_jniadapter_Engine.h \ - foundation_pEp_jniadapter_Message.cc \ - foundation_pEp_jniadapter_Message.h \ - throw_pEp_exception.cc \ - throw_pEp_exception.hh \ - foundation_pEp_jniadapter_AbstractEngine.h \ - foundation_pEp_jniadapter__Blob.cc \ - foundation_pEp_jniadapter__Blob.h +# Dirs +# relative to "src/" +JAVA_PKG_ROOT=foundation/pEp/jniadapter/ +JAVA_BUILD_ROOT=../build/java/ +# Separate dir for derived objects DOES NOT WORK YET :/ (has to be .) +OBJ_DIR=. +DIST_DIR=../dist/ PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1) +# Every ysl2 file that need to be "compiled" separately, needs to generate a "marker" file +# The marker serves as the make target. +# If the marker file is older than its corresponding ysl2 file, or not exsiting the ysl2 file will be "compiled" +# Naming: +# For a ysl2 file called "gen_example_stuff.ysl2", a marker file called "gen_example_stuff.marker" is expected. +YML2_MARKERS= \ + gen_java_Engine.marker \ + gen_java_Message.marker \ + gen_cpp_Engine.marker \ + gen_cpp_Message.marker \ + gen_throw_pEp_exception.marker + +# All code genration will be done upon change of these files +YML2_INCLUDES= \ + textutils.ysl2 \ + types_c.ysl2 \ + types_java.ysl2 + +# for "make clean" only +GENERATED_JAVA=\ + $(JAVA_PKG_ROOT)/Engine.java \ + $(JAVA_PKG_ROOT)/Message.java \ + $(JAVA_PKG_ROOT)/CipherSuite.java \ + $(JAVA_PKG_ROOT)/Color.java \ + $(JAVA_PKG_ROOT)/DecryptFlags.java \ + $(JAVA_PKG_ROOT)/EngineInterface.java \ + $(JAVA_PKG_ROOT)/IdentityFlags.java \ + $(JAVA_PKG_ROOT)/MessageInterface.java \ + $(JAVA_PKG_ROOT)/Rating.java \ + $(JAVA_PKG_ROOT)/SyncHandshakeResult.java \ + $(JAVA_PKG_ROOT)/SyncHandshakeSignal.java + +# Used to determine files to compile which are being generated +GENERATED_CC=\ + foundation_pEp_jniadapter_Engine.cc \ + foundation_pEp_jniadapter_Message.cc \ + throw_pEp_exception.cc + +# for "make clean" only +GENERATED_HH=\ + throw_pEp_exception.hh + +# Generated JNI headers (javac -h) +JNI_GENERATED_HH=\ + foundation_pEp_jniadapter_AbstractEngine.h \ + foundation_pEp_jniadapter__Blob.h \ + foundation_pEp_jniadapter_Engine.h \ + foundation_pEp_jniadapter_Identity.h \ + foundation_pEp_jniadapter_Message.h + +# Derive Java sources that will cause generated headers (for incremental build) +helper=$(subst _,/,$(JNI_GENERATED_HH)) +JNI_GENERATING_JAVA=$(subst .h,.java,$(helper)) +$(info JNI_GENERATING_JAVA: $(JNI_GENERATING_JAVA)) + +# Auto dependencies using gcc/clang +CXXFLAGS+= -MMD -MP + +SOURCES=$(wildcard *.cc) +SOURCES+=$(GENERATED_CC) +OBJECTS=$(SOURCES:.cc=.o) +DEPENDS=$(OBJECTS:.o=.d) + +.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen gen-status-codes clean out-dirs clean-out-dirs + +all: lib-java lib-cxx -.PHONY: all -all: $(JAR) $(SHARED) +# Build only java lib +lib-java: $(LIB_JAVA) -$(JAR): status_list.yml2 $(JAVA_SOURCES) $(C_SOURCES) - $(JP)/javac foundation/pEp/jniadapter/*.java - $(JP)/jar cf $@ foundation/pEp/jniadapter/*.class +# Build only c++ static/shared lib +lib-cxx: $(LIB_CXX_DYN) $(LIB_CXX_STATIC) -BLUBB=foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.h foundation_pEp_jniadapter_Message.h foundation_pEp_jniadapter__Blob.h -$(BLUBB): foundation_pEp_jniadapter_%.h: foundation/pEp/jniadapter/%.java +# ---------------- Link ----------------- +$(LIB_JAVA): compile-java + $(JAVA_BIN_DIR)/jar cf $(DIST_DIR)/$@ -C $(JAVA_BUILD_ROOT) foundation + +$(LIB_CXX_DYN): compile-cxx + $(CXX) $(OBJ_DIR)/*.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ + +$(LIB_CXX_STATIC): compile-cxx + $(AR) -r $(DIST_DIR)/$@ $(OBJ_DIR)/*.o + + +# -------------- Compile ----------------- +compile-java: out-dirs codegen + $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java + $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java + + +# Compile C++ using implicit rules +-include $(DEPENDS) +compile-cxx: out-dirs gen-jni-headers $(OBJECTS) + + +# --------- Generate JNI headers ---------- +gen-jni-headers: codegen $(JNI_GENERATED_HH) + +$(JNI_GENERATED_HH): $(JNI_GENERATING_JAVA) ifdef OLD_JAVA - $(JP)/javah $(subst /,.,$(subst .java,,$<)) + $(JAVA_BIN_DIR)/javah $(subst /,.,$(subst .java,,$<)) else - $(JP)/javac -h . $< + $(JAVA_BIN_DIR)/javac -h . $(JAVA_PKG_ROOT)/*.java endif + mv $(JAVA_PKG_ROOT)/*.class $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/ -foundation_pEp_jniadapter_AbstractEngine.o: %.o: %.cc %.h throw_pEp_exception.hh jniutils.hh - $(CXX) $(CXXFLAGS) -c $< -o $@ -foundation_pEp_jniadapter_Engine.o foundation_pEp_jniadapter_Message.o foundation_pEp_jniadapter__Blob.o : %.o: %.cc %.h - $(CXX) $(CXXFLAGS) -c $< -o $@ +# ------------- YML2 CodeGen -------------- +codegen: gen-status-codes $(YML2_MARKERS) -$(LIBRARY): foundation_pEp_jniadapter_AbstractEngine.o foundation_pEp_jniadapter_Engine.o foundation_pEp_jniadapter_Message.o throw_pEp_exception.o jniutils.o basic_api.o foundation_pEp_jniadapter__Blob.o - ar -r $@ *.o +# CodeGen +$(YML2_MARKERS): %.marker : %.ysl2 pEp.yml2 $(YML2_INCLUDES) + $(YML2_PROC) -y $< pEp.yml2 -$(SHARED): $(LIBRARY) - $(CXX) *.o $(LDFLAGS) $(LDLIBS) -o $@ +gen-status-codes: status_list.yml2 status_list.yml2: pEp.yml2 bash ../utils/extract_pEp_status_codes_from_engine.sh "$(PEP_HEADER)" $@ -foundation/pEp/jniadapter/pEpException.java: pEp.yml2 gen_java_exceptions.ysl2 pEp.yml2 - $(YML2_PROC) -y gen_java_exceptions.ysl2 $< -o $@ - -foundation/pEp/jniadapter/Message.java: pEp.yml2 gen_java_Message.ysl2 types_java.ysl2 - $(YML2_PROC) -y gen_java_Message.ysl2 $< - -foundation/pEp/jniadapter/Engine.java: pEp.yml2 gen_java_Engine.ysl2 types_java.ysl2 - $(YML2_PROC) -y gen_java_Engine.ysl2 $< - -foundation_pEp_jniadapter_Message.cc: pEp.yml2 gen_cpp_Message.ysl2 types_c.ysl2 - $(YML2_PROC) -y gen_cpp_Message.ysl2 $< - -foundation_pEp_jniadapter_Engine.cc: pEp.yml2 gen_cpp_Engine.ysl2 types_c.ysl2 - $(YML2_PROC) -y gen_cpp_Engine.ysl2 $< - -throw_pEp_exception.cc throw_pEp_exception.hh: pEp.yml2 gen_throw_pEp_exception.ysl2 textutils.ysl2 - $(YML2_PROC) -y gen_throw_pEp_exception.ysl2 $< -o throw_pEp_exception.cc - -throw_pEp_exception.o: throw_pEp_exception.cc throw_pEp_exception.hh - -basic_api.o: basic_api.cc jniutils.hh throw_pEp_exception.hh - -.PHONY: clean -clean: - rm -f $(JAR) $(LIBRARY) $(SHARED) - rm -f *.so - rm -f *.dylib - rm -f *.o - rm -f *.class - rm -f *.xml *.xsl - rm -f foundation_pEp_jniadapter_*.h - rm -f foundation/pEp/jniadapter/*.class - rm -f foundation/pEp/jniadapter/pEp*.java - rm -f foundation/pEp/jniadapter/Engine.java - rm -f foundation/pEp/jniadapter/Message.java - rm -f foundation/pEp/jniadapter/Color.java - rm -f foundation/pEp/jniadapter/DecryptFlags.java - rm -f foundation/pEp/jniadapter/IdentityFlags.java - rm -f foundation/pEp/jniadapter/Rating.java - rm -f foundation/pEp/jniadapter/Status.java - rm -f foundation/pEp/jniadapter/SyncHandshakeResult.java - rm -f foundation/pEp/jniadapter/SyncHandshakeSignal.java - rm -f foundation/pEp/jniadapter/CipherSuite.java - rm -f throw_pEp_exception.* - rm -f foundation_pEp_jniadapter_Message.cc foundation_pEp_jniadapter_Engine.cc + +# ------------- Housekeeping --------------- +out-dirs: + mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT) + mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/exceptions + mkdir -p $(OBJ_DIR) + mkdir -p $(DIST_DIR) + +clean-out-dirs: + rm -rf ../build + rm -rf ../dist + +clean: clean-out-dirs + rm -f $(GENERATED_JAVA) + rm -f $(GENERATED_CC) + rm -f $(GENERATED_HH) + rm -f $(JNI_GENERATED_HH) + rm -f $(YML2_MARKERS) rm -f status_list.yml2 + diff --git a/test/java/foundation/pEp/jniadapter/test/Makefile.conf b/test/java/foundation/pEp/jniadapter/test/Makefile.conf index 0ee4a7b..71ee752 100644 --- a/test/java/foundation/pEp/jniadapter/test/Makefile.conf +++ b/test/java/foundation/pEp/jniadapter/test/Makefile.conf @@ -1,6 +1,7 @@ JAVA_PKG_BASENAME=foundation.pEp.jniadapter.test JAVA_PKG_BASEPATH=foundation/pEp/jniadapter/test REPOROOT=../.. +DIST_DIR=$(REPOROOT)/dist JAVA_CWD=../../../../../ JAVA_RESOURCES_DIR=../resources @@ -14,9 +15,10 @@ PEP_HOME_DIR_BOB=$(JAVA_CWD)$(JAVA_PEP_HOME_DIR_BOB) PEP_HOME_DIR_CAROL=$(JAVA_CWD)$(JAVA_PEP_HOME_DIR_CAROL) PEP_HOME_DIR=$(PEP_HOME_DIR_ALICE) -CLASSPATH=.:$(REPOROOT)/src +CLASSPATH=.:$(DIST_DIR)/pEp.jar +LD_LIB_PATH=.:$(DIST_DIR) -JAVA=java -enableassertions -Xcheck:jni -cp $(CLASSPATH) -Djava.library.path=$(CLASSPATH) +JAVA=java -enableassertions -Xcheck:jni -cp $(CLASSPATH) -Djava.library.path=$(LD_LIB_PATH) PITYTEST_DIR=../../../pitytest From 0f33979a7211e0b0f3b733a4ad7ffe224a561de4 Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 2 Jul 2020 23:12:59 +0200 Subject: [PATCH 22/36] Build info and lib-name --- src/Makefile | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/Makefile b/src/Makefile index 8ef7459..c23556b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -5,6 +5,24 @@ include ../Makefile.conf +# Names of the java and c++ libs to be built +LIB_JAVA=pEp.jar +LIB_CXX_NAME=libpEpJNI +LIB_CXX_STATIC=$(addsuffix .a,$(LIB_CXX_NAME)) + +ifeq ($(PLATFORM),linux) + LIB_CXX_DYN=$(addsuffix .so,$(LIB_CXX_NAME)) +else ifeq ($(PLATFORM),darwin) + LIB_CXX_DYN=$(addsuffix .dylib,$(LIB_CXX_NAME)) +else + $(error I dont know how to build for $(PLATFORM).) +endif + +$(info ------------------ DIST FILES ---------------------) +$(info LIB_JAVA: $(LIB_JAVA)) +$(info LIB_CXX_STATIC: $(LIB_CXX_STATIC)) +$(info LIB_CXX_DYN: $(LIB_CXX_DYN)) +$(info ------------------ BUILD INFO ---------------------) $(info PLATFORM: $(PLATFORM)) $(info DEBUG: $(DEBUG)) $(info CXX: $(CXX)) @@ -17,17 +35,7 @@ $(info YML2_PATH: $(YML2_PATH)) $(info CXXFLAGS: $(CXXFLAGS)) $(info LDFLAGS: $(LDFLAGS)) $(info LDLIBS: $(LDLIBS)) - -# Names of the java and c++ libs to be built -LIB_JAVA=pEp.jar -LIB_CXX_STATIC=libpEpJNI.a -ifeq ($(PLATFORM),linux) - LIB_CXX_DYN=libpEpJNI.so -else ifeq ($(PLATFORM),darwin) - LIB_CXX_DYN=libpEpJNI.dylib -else - $(error I dont know how to build for $(PLATFORM).) -endif +$(info ---------------------------------------------------) # Dirs # relative to "src/" @@ -92,7 +100,6 @@ JNI_GENERATED_HH=\ # Derive Java sources that will cause generated headers (for incremental build) helper=$(subst _,/,$(JNI_GENERATED_HH)) JNI_GENERATING_JAVA=$(subst .h,.java,$(helper)) -$(info JNI_GENERATING_JAVA: $(JNI_GENERATING_JAVA)) # Auto dependencies using gcc/clang CXXFLAGS+= -MMD -MP @@ -102,7 +109,7 @@ SOURCES+=$(GENERATED_CC) OBJECTS=$(SOURCES:.cc=.o) DEPENDS=$(OBJECTS:.o=.d) -.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen gen-status-codes clean out-dirs clean-out-dirs +.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen gen-status-codes clean create-dirs remove-dirs all: lib-java lib-cxx @@ -124,14 +131,13 @@ $(LIB_CXX_STATIC): compile-cxx # -------------- Compile ----------------- -compile-java: out-dirs codegen +compile-java: create-dirs codegen $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java # Compile C++ using implicit rules -include $(DEPENDS) -compile-cxx: out-dirs gen-jni-headers $(OBJECTS) # --------- Generate JNI headers ---------- @@ -149,28 +155,26 @@ endif # ------------- YML2 CodeGen -------------- codegen: gen-status-codes $(YML2_MARKERS) -# CodeGen $(YML2_MARKERS): %.marker : %.ysl2 pEp.yml2 $(YML2_INCLUDES) $(YML2_PROC) -y $< pEp.yml2 gen-status-codes: status_list.yml2 - status_list.yml2: pEp.yml2 bash ../utils/extract_pEp_status_codes_from_engine.sh "$(PEP_HEADER)" $@ # ------------- Housekeeping --------------- -out-dirs: +create-dirs: mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT) mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/exceptions mkdir -p $(OBJ_DIR) mkdir -p $(DIST_DIR) -clean-out-dirs: +remove-dirs: rm -rf ../build rm -rf ../dist -clean: clean-out-dirs +clean: remove-dirs rm -f $(GENERATED_JAVA) rm -f $(GENERATED_CC) rm -f $(GENERATED_HH) From 80c0b1e542ccf5cc8dffa18bfa9af92b2a93b5de Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 00:47:46 +0200 Subject: [PATCH 23/36] Move all yml2 into own src folder "codegen" --- .hgignore | 5 +- src/Makefile | 54 ++++++------------ src/codegen/Makefile | 57 +++++++++++++++++++ src/{ => codegen}/gen_cpp_Engine.ysl2 | 4 +- src/{ => codegen}/gen_cpp_Message.ysl2 | 4 +- src/{ => codegen}/gen_java_Engine.ysl2 | 6 +- src/{ => codegen}/gen_java_Message.ysl2 | 10 ++-- .../gen_throw_pEp_exception.ysl2 | 6 +- src/{ => codegen}/pEp.yml2 | 0 src/{ => codegen}/textutils.ysl2 | 0 src/{ => codegen}/types_c.ysl2 | 0 src/{ => codegen}/types_java.ysl2 | 0 12 files changed, 92 insertions(+), 54 deletions(-) create mode 100644 src/codegen/Makefile rename src/{ => codegen}/gen_cpp_Engine.ysl2 (98%) rename src/{ => codegen}/gen_cpp_Message.ysl2 (97%) rename src/{ => codegen}/gen_java_Engine.ysl2 (98%) rename src/{ => codegen}/gen_java_Message.ysl2 (96%) rename src/{ => codegen}/gen_throw_pEp_exception.ysl2 (89%) rename src/{ => codegen}/pEp.yml2 (100%) rename src/{ => codegen}/textutils.ysl2 (100%) rename src/{ => codegen}/types_c.ysl2 (100%) rename src/{ => codegen}/types_java.ysl2 (100%) diff --git a/.hgignore b/.hgignore index 551e718..a885677 100644 --- a/.hgignore +++ b/.hgignore @@ -5,6 +5,7 @@ syntax: glob *.class *.jar *.swp +*.d *.o *.a *.dylib @@ -24,8 +25,8 @@ foundation_pEp_jniadapter_Engine.* foundation_pEp_jniadapter_Identity.h foundation_pEp_jniadapter_Message.cc foundation_pEp_jniadapter_Message.h -#throw_pEp_exception.cc -#throw_pEp_exception.hh +throw_pEp_exception.cc +throw_pEp_exception.hh CipherSuite.java Color.java diff --git a/src/Makefile b/src/Makefile index c23556b..0514014 100644 --- a/src/Makefile +++ b/src/Makefile @@ -45,26 +45,6 @@ JAVA_BUILD_ROOT=../build/java/ OBJ_DIR=. DIST_DIR=../dist/ -PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1) - -# Every ysl2 file that need to be "compiled" separately, needs to generate a "marker" file -# The marker serves as the make target. -# If the marker file is older than its corresponding ysl2 file, or not exsiting the ysl2 file will be "compiled" -# Naming: -# For a ysl2 file called "gen_example_stuff.ysl2", a marker file called "gen_example_stuff.marker" is expected. -YML2_MARKERS= \ - gen_java_Engine.marker \ - gen_java_Message.marker \ - gen_cpp_Engine.marker \ - gen_cpp_Message.marker \ - gen_throw_pEp_exception.marker - -# All code genration will be done upon change of these files -YML2_INCLUDES= \ - textutils.ysl2 \ - types_c.ysl2 \ - types_java.ysl2 - # for "make clean" only GENERATED_JAVA=\ $(JAVA_PKG_ROOT)/Engine.java \ @@ -79,7 +59,7 @@ GENERATED_JAVA=\ $(JAVA_PKG_ROOT)/SyncHandshakeResult.java \ $(JAVA_PKG_ROOT)/SyncHandshakeSignal.java -# Used to determine files to compile which are being generated +# files to compile which will be be generated GENERATED_CC=\ foundation_pEp_jniadapter_Engine.cc \ foundation_pEp_jniadapter_Message.cc \ @@ -109,7 +89,11 @@ SOURCES+=$(GENERATED_CC) OBJECTS=$(SOURCES:.cc=.o) DEPENDS=$(OBJECTS:.o=.d) -.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen gen-status-codes clean create-dirs remove-dirs +.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen clean create-dirs remove-dirs + +$(info SOURCES: $(SOURCES)) +$(info OBJECTS: $(OBJECTS)) +$(info DEPENDS: $(DEPENDS)) all: lib-java lib-cxx @@ -124,10 +108,10 @@ $(LIB_JAVA): compile-java $(JAVA_BIN_DIR)/jar cf $(DIST_DIR)/$@ -C $(JAVA_BUILD_ROOT) foundation $(LIB_CXX_DYN): compile-cxx - $(CXX) $(OBJ_DIR)/*.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ + $(CXX) *.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ $(LIB_CXX_STATIC): compile-cxx - $(AR) -r $(DIST_DIR)/$@ $(OBJ_DIR)/*.o + $(AR) -r $(DIST_DIR)/$@ *.o # -------------- Compile ----------------- @@ -135,8 +119,8 @@ compile-java: create-dirs codegen $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java - # Compile C++ using implicit rules +compile-cxx: create-dirs gen-jni-headers $(OBJECTS) -include $(DEPENDS) @@ -153,32 +137,28 @@ endif # ------------- YML2 CodeGen -------------- -codegen: gen-status-codes $(YML2_MARKERS) - -$(YML2_MARKERS): %.marker : %.ysl2 pEp.yml2 $(YML2_INCLUDES) - $(YML2_PROC) -y $< pEp.yml2 - -gen-status-codes: status_list.yml2 -status_list.yml2: pEp.yml2 - bash ../utils/extract_pEp_status_codes_from_engine.sh "$(PEP_HEADER)" $@ - +codegen: + $(MAKE) -C codegen # ------------- Housekeeping --------------- create-dirs: + $(MAKE) -C codegen create-dirs mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT) mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/exceptions - mkdir -p $(OBJ_DIR) mkdir -p $(DIST_DIR) +#rm -rf is too dangerous for vars remove-dirs: + $(MAKE) -C codegen remove-dirs rm -rf ../build rm -rf ../dist clean: remove-dirs + $(MAKE) -C codegen clean rm -f $(GENERATED_JAVA) rm -f $(GENERATED_CC) rm -f $(GENERATED_HH) rm -f $(JNI_GENERATED_HH) - rm -f $(YML2_MARKERS) - rm -f status_list.yml2 + rm -f $(DEPENDS) + rm -f $(OBJECTS) diff --git a/src/codegen/Makefile b/src/codegen/Makefile new file mode 100644 index 0000000..2f6fb48 --- /dev/null +++ b/src/codegen/Makefile @@ -0,0 +1,57 @@ +# Copyright 2018, pEp Foundation +# This file is part of pEp JNI Adapter +# This file may be used under the terms of the GNU General Public License version 3 +# see LICENSE.txt + +include ../../Makefile.conf + +MARKER_DIR=../../build/marker/ + +PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M ../get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1) + +# Every ysl2 file that need to be "compiled" separately, needs to generate a "marker" file +# The marker serves as the make target. +# If the marker file is older than its corresponding ysl2 file, or not exsiting the ysl2 file will be "compiled" +# Naming: +# For a ysl2 file called "gen_example_stuff.ysl2", a marker file called "gen_example_stuff.marker" is expected. +YML2_MARKERS= \ + $(MARKER_DIR)/gen_java_Engine.marker \ + $(MARKER_DIR)/gen_java_Message.marker \ + $(MARKER_DIR)/gen_cpp_Engine.marker \ + $(MARKER_DIR)/gen_cpp_Message.marker \ + $(MARKER_DIR)/gen_throw_pEp_exception.marker + +# All code genration will be done upon change of these files +YML2_INCLUDES= \ + textutils.ysl2 \ + types_c.ysl2 \ + types_java.ysl2 + + +.PHONY: all codegen gen-status-codes create-dirs remove-dirs clean + +all: codegen + +# ------------- YML2 CodeGen -------------- +codegen: create-dirs gen-status-codes $(YML2_MARKERS) + +$(YML2_MARKERS): $(MARKER_DIR)/%.marker : %.ysl2 pEp.yml2 $(YML2_INCLUDES) + $(YML2_PROC) -y $< pEp.yml2 + +gen-status-codes: status_list.yml2 + +status_list.yml2: pEp.yml2 + bash ../../utils/extract_pEp_status_codes_from_engine.sh "$(PEP_HEADER)" $@ + + +# ------------- Housekeeping --------------- +create-dirs: + mkdir -p $(MARKER_DIR) + +#rm -rf is too dangerous for vars +remove-dirs: + rm -rf ../../build/marker + +clean: remove-dirs + rm -f status_list.yml2 + diff --git a/src/gen_cpp_Engine.ysl2 b/src/codegen/gen_cpp_Engine.ysl2 similarity index 98% rename from src/gen_cpp_Engine.ysl2 rename to src/codegen/gen_cpp_Engine.ysl2 index ab337bc..994fed3 100644 --- a/src/gen_cpp_Engine.ysl2 +++ b/src/codegen/gen_cpp_Engine.ysl2 @@ -7,10 +7,10 @@ tstylesheet { template "/namespace[@name='pEp']" { apply "interface", 0; - document("gen_cpp_Engine.marker", "text") > "" + document("../../build/marker/gen_cpp_Engine.marker", "text") > "" } - template "interface" document("foundation_pEp_jniadapter_{@name}.cc", "text") + template "interface" document("../foundation_pEp_jniadapter_{@name}.cc", "text") || #include #include diff --git a/src/gen_cpp_Message.ysl2 b/src/codegen/gen_cpp_Message.ysl2 similarity index 97% rename from src/gen_cpp_Message.ysl2 rename to src/codegen/gen_cpp_Message.ysl2 index 963c681..6aeea12 100644 --- a/src/gen_cpp_Message.ysl2 +++ b/src/codegen/gen_cpp_Message.ysl2 @@ -7,13 +7,13 @@ tstylesheet { template "/namespace[@name='pEp']" { apply "struct", 0; - document("gen_cpp_Message.marker", "text") > "" + document("../../build/marker/gen_cpp_Message.marker", "text") > "" } template "struct" { const "jname" call "CamelCase" with "text", "@name"; - document("foundation_pEp_jniadapter_{$jname}.cc", "text") { + document("../foundation_pEp_jniadapter_{$jname}.cc", "text") { || #include #include diff --git a/src/gen_java_Engine.ysl2 b/src/codegen/gen_java_Engine.ysl2 similarity index 98% rename from src/gen_java_Engine.ysl2 rename to src/codegen/gen_java_Engine.ysl2 index db69b7c..96a2fe1 100644 --- a/src/gen_java_Engine.ysl2 +++ b/src/codegen/gen_java_Engine.ysl2 @@ -6,12 +6,12 @@ tstylesheet { template "/namespace[@name='pEp']" { apply "interface", 0; - document("gen_java_Engine.marker", "text") > "" + document("../../build/marker/gen_java_Engine.marker", "text") > "" } template "interface" { const "cname" call "toJava" with "type", "@name"; - document("foundation/pEp/jniadapter/{$cname}.java", "text") + document("../foundation/pEp/jniadapter/{$cname}.java", "text") || package foundation.pEp.jniadapter; @@ -26,7 +26,7 @@ tstylesheet { } || - document("foundation/pEp/jniadapter/{$cname}Interface.java", "text") + document("../foundation/pEp/jniadapter/{$cname}Interface.java", "text") || package foundation.pEp.jniadapter; diff --git a/src/gen_java_Message.ysl2 b/src/codegen/gen_java_Message.ysl2 similarity index 96% rename from src/gen_java_Message.ysl2 rename to src/codegen/gen_java_Message.ysl2 index 2610d2f..d94eae0 100644 --- a/src/gen_java_Message.ysl2 +++ b/src/codegen/gen_java_Message.ysl2 @@ -6,12 +6,12 @@ tstylesheet { template "/namespace[@name='pEp']" { apply "struct|enum|exception", 0; - document("gen_java_Message.marker", "text") > "" + document("../../build/marker/gen_java_Message.marker", "text") > "" } template "struct" { const "cname" call "toJava" with "type", "@name"; - document("foundation/pEp/jniadapter/{$cname}.java", "text") + document("../foundation/pEp/jniadapter/{$cname}.java", "text") || package foundation.pEp.jniadapter; @@ -64,7 +64,7 @@ tstylesheet { `` apply "*[name(.)!='enum']", mode=entry } || - document("foundation/pEp/jniadapter/{$cname}Interface.java", "text") + document("../foundation/pEp/jniadapter/{$cname}Interface.java", "text") || package foundation.pEp.jniadapter; @@ -83,7 +83,7 @@ tstylesheet { template "enum" { const "jname" call "toJava" with "type", "@name"; - document("foundation/pEp/jniadapter/{$jname}.java", "text") + document("../foundation/pEp/jniadapter/{$jname}.java", "text") || // CodeGen template enum package foundation.pEp.jniadapter; @@ -131,7 +131,7 @@ tstylesheet { function "exception" { param "name"; - document "foundation/pEp/jniadapter/exceptions/{$name}.java", "text" { + document "../foundation/pEp/jniadapter/exceptions/{$name}.java", "text" { | package foundation.pEp.jniadapter.exceptions; | | public class «$name» extends pEpException { diff --git a/src/gen_throw_pEp_exception.ysl2 b/src/codegen/gen_throw_pEp_exception.ysl2 similarity index 89% rename from src/gen_throw_pEp_exception.ysl2 rename to src/codegen/gen_throw_pEp_exception.ysl2 index 01602ac..7371e01 100644 --- a/src/gen_throw_pEp_exception.ysl2 +++ b/src/codegen/gen_throw_pEp_exception.ysl2 @@ -5,7 +5,7 @@ tstylesheet { template "/" { apply "namespace", 0; - document "throw_pEp_exception.hh", "text" + document "../throw_pEp_exception.hh", "text" || #pragma once @@ -18,11 +18,11 @@ tstylesheet { }; || - document("gen_throw_pEp_exception.marker", "text") > "" + document("../../build/marker/gen_throw_pEp_exception.marker", "text") > "" } template "namespace" - document("throw_pEp_exception.cc", "text") + document("../throw_pEp_exception.cc", "text") || #include #include diff --git a/src/pEp.yml2 b/src/codegen/pEp.yml2 similarity index 100% rename from src/pEp.yml2 rename to src/codegen/pEp.yml2 diff --git a/src/textutils.ysl2 b/src/codegen/textutils.ysl2 similarity index 100% rename from src/textutils.ysl2 rename to src/codegen/textutils.ysl2 diff --git a/src/types_c.ysl2 b/src/codegen/types_c.ysl2 similarity index 100% rename from src/types_c.ysl2 rename to src/codegen/types_c.ysl2 diff --git a/src/types_java.ysl2 b/src/codegen/types_java.ysl2 similarity index 100% rename from src/types_java.ysl2 rename to src/codegen/types_java.ysl2 From f991fd2dd34cf70addabfd94f2ac51d7cdfa9ba6 Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 16:35:44 +0200 Subject: [PATCH 24/36] Separate output dir for .d and .o files. --- src/Makefile | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Makefile b/src/Makefile index 0514014..b465ff7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -41,8 +41,7 @@ $(info ---------------------------------------------------) # relative to "src/" JAVA_PKG_ROOT=foundation/pEp/jniadapter/ JAVA_BUILD_ROOT=../build/java/ -# Separate dir for derived objects DOES NOT WORK YET :/ (has to be .) -OBJ_DIR=. +OBJ_DIR=../build/cxx/ DIST_DIR=../dist/ # for "make clean" only @@ -86,7 +85,8 @@ CXXFLAGS+= -MMD -MP SOURCES=$(wildcard *.cc) SOURCES+=$(GENERATED_CC) -OBJECTS=$(SOURCES:.cc=.o) +tmp=$(SOURCES:.cc=.o) +OBJECTS=$(addprefix $(OBJ_DIR), $(tmp)) DEPENDS=$(OBJECTS:.o=.d) .PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen clean create-dirs remove-dirs @@ -108,10 +108,10 @@ $(LIB_JAVA): compile-java $(JAVA_BIN_DIR)/jar cf $(DIST_DIR)/$@ -C $(JAVA_BUILD_ROOT) foundation $(LIB_CXX_DYN): compile-cxx - $(CXX) *.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ + $(CXX) $(OBJ_DIR)*.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ $(LIB_CXX_STATIC): compile-cxx - $(AR) -r $(DIST_DIR)/$@ *.o + $(AR) -r $(DIST_DIR)/$@ $(OBJ_DIR)*.o # -------------- Compile ----------------- @@ -119,8 +119,12 @@ compile-java: create-dirs codegen $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java -# Compile C++ using implicit rules + compile-cxx: create-dirs gen-jni-headers $(OBJECTS) + +$(OBJECTS): $(OBJ_DIR)%.o: %.cc + $(CXX) $(CXXFLAGS) -c $< -o $@ + -include $(DEPENDS) @@ -145,6 +149,7 @@ create-dirs: $(MAKE) -C codegen create-dirs mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT) mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/exceptions + mkdir -p $(OBJ_DIR) mkdir -p $(DIST_DIR) #rm -rf is too dangerous for vars From 0f044489054dfe2ee4b505a76ccfa946f4aeb71b Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 17:01:05 +0200 Subject: [PATCH 25/36] add Makefile targets install/uninstall (to $PREFIX) update local.conf.example --- Makefile | 9 ++++++++- Makefile.conf | 19 ++++++++++--------- local.conf.example | 25 +++++++++++++++---------- src/Makefile | 13 ++++++++++++- 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 45acece..4acf87e 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # This file may be used under the terms of the GNU General Public License version 3 # see LICENSE.txt -.PHONY: all src test clean doxy-all doxy-cxx doxy-java doxy-clean +.PHONY: all src test clean doxy-all doxy-cxx doxy-java doxy-clean install uninstall all: src @@ -29,3 +29,10 @@ doxy-java: src doxy-clean: rm -rf doc/doxygen/cxx rm -rf doc/doxygen/java + +install: + $(MAKE) -C src install + +uninstall: + $(MAKE) -C src uninstall + diff --git a/Makefile.conf b/Makefile.conf index 9cfb440..2551f0d 100644 --- a/Makefile.conf +++ b/Makefile.conf @@ -10,24 +10,20 @@ PLATFORM:=$(shell uname | tr A-Z a-z) # The dev environment paths and configs are set to a default value which can be overridden by ./local.conf and overridden again by /local.conf ######### Build Config Defaults ######### DEBUG=1 +PREFIX=$(HOME)/local YML2_PATH=$(HOME)/yml2 YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS) YML2_OPTS=--encoding=utf8 -ENGINE_LIB_PATH=$(HOME)/lib -ENGINE_INC_PATH=$(HOME)/include -AD_LIB_PATH=$(HOME)/lib -AD_INC_PATH=$(HOME)/include +ENGINE_LIB_PATH=$(PREFIX)/lib +ENGINE_INC_PATH=$(PREFIX)/include +AD_LIB_PATH=$(PREFIX)/lib +AD_INC_PATH=$(PREFIX)/include ### Guessing JAVA_HOME ifeq ($(PLATFORM),linux) JAVA_HOME=$(subst /bin,,$(dir $(realpath /usr/bin/javac))) endif -ifndef JAVA_HOME - $(error JAVA_HOME is not set!) -endif - -JAVA_BIN_DIR=$(JAVA_HOME)/bin # Old versions of a Java distribution have a `javah` binary, new versions do not. This checks whether or not `javah` can be found in the Java distribution found in the directory `$JAVA_HOME`. DUMMY:=$(shell which $(JAVA_HOME)/bin/javah) @@ -49,6 +45,11 @@ ENGINE_INC=-I$(ENGINE_INC_PATH) AD_LIB=-L$(AD_LIB_PATH) AD_INC=-I$(AD_INC_PATH) +ifndef JAVA_HOME + $(error JAVA_HOME is not set!) +endif + +JAVA_BIN_DIR=$(JAVA_HOME)/bin ######### C and C++ ######### CXXFLAGS+=-O0 -std=c++11 -fpermissive -fPIC -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/$(PLATFORM) $(AD_INC) $(ENGINE_INC) diff --git a/local.conf.example b/local.conf.example index 8de0aa8..d550ae5 100644 --- a/local.conf.example +++ b/local.conf.example @@ -2,23 +2,28 @@ # you might not need this file, but if the defaults dont work for you # You can override them here. # Tweak the values to your needs and rename it to local.conf +# These example values here reflect the defaults + +############ Install ########### +# PREFIX=$(HOME)/local ######### C++ Compiler ######### # Should work with clang and g++ # CXX=g++ -# DEBUG=1 # DEBUG Build (Default) -# DEBUG=0 # RELEASE Build +# DEBUG=0 # RELEASE Build / set to 1 for DEBUG build -######### JAVA ######### +############ JAVA ############## # JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home -######### YML2 ######### +############ YML2 ############## # YML2_PATH=$(HOME)/code/yml2 -######### Engine ######### -# ENGINE_LIB_PATH=$(HOME)/local/lib -# ENGINE_INC_PATH=$(HOME)/local/include +########### Engine ############# +# ENGINE_LIB_PATH=$(PREFIX)/lib +# ENGINE_INC_PATH=$(PREFIX)/include + +########## libAdapter ########## +# AD_LIB_PATH=$(PREFIX)/lib +# AD_INC_PATH=$(PREFIX)/include + -######### libAdapter ######### -# AD_LIB_PATH=$(HOME)/local/lib -# AD_INC_PATH=$(HOME)/local/include diff --git a/src/Makefile b/src/Makefile index b465ff7..4d3225b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -89,7 +89,7 @@ tmp=$(SOURCES:.cc=.o) OBJECTS=$(addprefix $(OBJ_DIR), $(tmp)) DEPENDS=$(OBJECTS:.o=.d) -.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen clean create-dirs remove-dirs +.PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen clean create-dirs remove-dirs install uninstall $(info SOURCES: $(SOURCES)) $(info OBJECTS: $(OBJECTS)) @@ -167,3 +167,14 @@ clean: remove-dirs rm -f $(DEPENDS) rm -f $(OBJECTS) +install: $(LIB_JAVA) $(LIB_CXX_STATIC) $(LIB_CXX_DYN) + mkdir -p $(PREFIX)/lib + cp -v $(DIST_DIR)/$(LIB_JAVA) $(PREFIX)/lib/ + cp -v $(DIST_DIR)/$(LIB_CXX_STATIC) $(PREFIX)/lib/ + cp -v $(DIST_DIR)/$(LIB_CXX_DYN) $(PREFIX)/lib/ + +uninstall: + cd $(PREFIX)/lib && rm -vf $(LIB_JAVA) + cd $(PREFIX)/lib && rm -vf $(LIB_CXX_STATIC) + cd $(PREFIX)/lib && rm -vf $(LIB_CXX_DYN) + From c1e9f6998500c98d96d32e1c193b83a8d3741e62 Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 17:07:17 +0200 Subject: [PATCH 26/36] .hgignore can now just ignore parallel build hierarchy instead of file types, and dist folder --- .hgignore | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/.hgignore b/.hgignore index a885677..3fadd4c 100644 --- a/.hgignore +++ b/.hgignore @@ -3,30 +3,24 @@ syntax: glob # ignore all of them *.class -*.jar -*.swp -*.d -*.o -*.a -*.dylib -*.so *.log .DS_Store # ignore config files local.conf -local.conf + +# ignore build and dist dirs +build/* +dist/* # ignore generated files status_list.yml2 foundation_pEp_jniadapter__Blob.h foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.* +foundation_pEp_jniadapter_Message.* foundation_pEp_jniadapter_Identity.h -foundation_pEp_jniadapter_Message.cc -foundation_pEp_jniadapter_Message.h -throw_pEp_exception.cc -throw_pEp_exception.hh +throw_pEp_exception.* CipherSuite.java Color.java From 935f3b58caa0d98c74f6d75a917af5ca74689050 Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 17:49:51 +0200 Subject: [PATCH 27/36] move java interfaces into own subpkg "foundation.pep.interfaces" --- src/Makefile | 12 ++++++------ src/codegen/gen_java_Engine.ysl2 | 6 ++++-- src/codegen/gen_java_Message.ysl2 | 8 +++++--- src/foundation/pEp/jniadapter/AbstractEngine.java | 1 + src/foundation/pEp/jniadapter/Blob.java | 1 + src/foundation/pEp/jniadapter/BlobInterface.java | 5 ----- src/foundation/pEp/jniadapter/Identity.java | 1 + src/foundation/pEp/jniadapter/IdentityInterface.java | 5 ----- .../{ => interfaces}/AbstractEngineInterface.java | 5 ++++- .../pEp/jniadapter/interfaces/BlobInterface.java | 5 +++++ .../pEp/jniadapter/interfaces/IdentityInterface.java | 7 +++++++ 11 files changed, 34 insertions(+), 22 deletions(-) delete mode 100644 src/foundation/pEp/jniadapter/BlobInterface.java delete mode 100644 src/foundation/pEp/jniadapter/IdentityInterface.java rename src/foundation/pEp/jniadapter/{ => interfaces}/AbstractEngineInterface.java (84%) create mode 100644 src/foundation/pEp/jniadapter/interfaces/BlobInterface.java create mode 100644 src/foundation/pEp/jniadapter/interfaces/IdentityInterface.java diff --git a/src/Makefile b/src/Makefile index 4d3225b..ae3efa9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -51,12 +51,12 @@ GENERATED_JAVA=\ $(JAVA_PKG_ROOT)/CipherSuite.java \ $(JAVA_PKG_ROOT)/Color.java \ $(JAVA_PKG_ROOT)/DecryptFlags.java \ - $(JAVA_PKG_ROOT)/EngineInterface.java \ $(JAVA_PKG_ROOT)/IdentityFlags.java \ - $(JAVA_PKG_ROOT)/MessageInterface.java \ $(JAVA_PKG_ROOT)/Rating.java \ $(JAVA_PKG_ROOT)/SyncHandshakeResult.java \ - $(JAVA_PKG_ROOT)/SyncHandshakeSignal.java + $(JAVA_PKG_ROOT)/SyncHandshakeSignal.java \ + $(JAVA_PKG_ROOT)/interfaces/EngineInterface.java \ + $(JAVA_PKG_ROOT)/interfaces/MessageInterface.java # files to compile which will be be generated GENERATED_CC=\ @@ -118,6 +118,7 @@ $(LIB_CXX_STATIC): compile-cxx compile-java: create-dirs codegen $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java + $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/interfaces/*.java compile-cxx: create-dirs gen-jni-headers $(OBJECTS) @@ -133,11 +134,10 @@ gen-jni-headers: codegen $(JNI_GENERATED_HH) $(JNI_GENERATED_HH): $(JNI_GENERATING_JAVA) ifdef OLD_JAVA - $(JAVA_BIN_DIR)/javah $(subst /,.,$(subst .java,,$<)) + $(JAVA_BIN_DIR)/javah -d $(JAVA_BUILD_ROOT) $(subst /,.,$(subst .java,,$<)) else - $(JAVA_BIN_DIR)/javac -h . $(JAVA_PKG_ROOT)/*.java + $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) -h . $(JAVA_PKG_ROOT)/*.java endif - mv $(JAVA_PKG_ROOT)/*.class $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/ # ------------- YML2 CodeGen -------------- diff --git a/src/codegen/gen_java_Engine.ysl2 b/src/codegen/gen_java_Engine.ysl2 index 96a2fe1..4402599 100644 --- a/src/codegen/gen_java_Engine.ysl2 +++ b/src/codegen/gen_java_Engine.ysl2 @@ -15,6 +15,7 @@ tstylesheet { || package foundation.pEp.jniadapter; + import foundation.pEp.jniadapter.interfaces.*; import foundation.pEp.jniadapter.exceptions.*; import java.util.ArrayList; import java.util.Vector; @@ -26,10 +27,11 @@ tstylesheet { } || - document("../foundation/pEp/jniadapter/{$cname}Interface.java", "text") + document("../foundation/pEp/jniadapter/interfaces/{$cname}Interface.java", "text") || - package foundation.pEp.jniadapter; + package foundation.pEp.jniadapter.interfaces; + import foundation.pEp.jniadapter.*; import java.util.ArrayList; import java.util.Vector; diff --git a/src/codegen/gen_java_Message.ysl2 b/src/codegen/gen_java_Message.ysl2 index d94eae0..651da83 100644 --- a/src/codegen/gen_java_Message.ysl2 +++ b/src/codegen/gen_java_Message.ysl2 @@ -15,6 +15,7 @@ tstylesheet { || package foundation.pEp.jniadapter; + import foundation.pEp.jniadapter.interfaces.*; import foundation.pEp.jniadapter.exceptions.*; import java.util.ArrayList; import java.util.Vector; @@ -64,11 +65,12 @@ tstylesheet { `` apply "*[name(.)!='enum']", mode=entry } || - document("../foundation/pEp/jniadapter/{$cname}Interface.java", "text") + document("../foundation/pEp/jniadapter/interfaces/{$cname}Interface.java", "text") || - package foundation.pEp.jniadapter; + package foundation.pEp.jniadapter.interfaces; - import foundation.pEp.jniadapter.Message.Direction; + import foundation.pEp.jniadapter.*; + import foundation.pEp.jniadapter.Message.*; import java.util.Date; import java.util.Vector; import java.util.ArrayList; diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/foundation/pEp/jniadapter/AbstractEngine.java index b4befa8..d4005a8 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/foundation/pEp/jniadapter/AbstractEngine.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Vector; import foundation.pEp.jniadapter.Sync.DefaultCallback; +import foundation.pEp.jniadapter.interfaces.*; import foundation.pEp.jniadapter.exceptions.*; diff --git a/src/foundation/pEp/jniadapter/Blob.java b/src/foundation/pEp/jniadapter/Blob.java index 073ac42..4fdffa4 100644 --- a/src/foundation/pEp/jniadapter/Blob.java +++ b/src/foundation/pEp/jniadapter/Blob.java @@ -1,5 +1,6 @@ package foundation.pEp.jniadapter; +import foundation.pEp.jniadapter.interfaces.*; import java.io.Serializable; public class Blob implements BlobInterface, Serializable { diff --git a/src/foundation/pEp/jniadapter/BlobInterface.java b/src/foundation/pEp/jniadapter/BlobInterface.java deleted file mode 100644 index d52e7c7..0000000 --- a/src/foundation/pEp/jniadapter/BlobInterface.java +++ /dev/null @@ -1,5 +0,0 @@ -package foundation.pEp.jniadapter; - -public interface BlobInterface { - -} diff --git a/src/foundation/pEp/jniadapter/Identity.java b/src/foundation/pEp/jniadapter/Identity.java index 34e7dde..2b0cdde 100644 --- a/src/foundation/pEp/jniadapter/Identity.java +++ b/src/foundation/pEp/jniadapter/Identity.java @@ -1,5 +1,6 @@ package foundation.pEp.jniadapter; +import foundation.pEp.jniadapter.interfaces.*; import java.io.Serializable; public class Identity implements IdentityInterface, Serializable { diff --git a/src/foundation/pEp/jniadapter/IdentityInterface.java b/src/foundation/pEp/jniadapter/IdentityInterface.java deleted file mode 100644 index 93e0d29..0000000 --- a/src/foundation/pEp/jniadapter/IdentityInterface.java +++ /dev/null @@ -1,5 +0,0 @@ -package foundation.pEp.jniadapter; - -public interface IdentityInterface { - public Rating getRating(); -} diff --git a/src/foundation/pEp/jniadapter/AbstractEngineInterface.java b/src/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java similarity index 84% rename from src/foundation/pEp/jniadapter/AbstractEngineInterface.java rename to src/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java index 7ad20f0..9e3630f 100644 --- a/src/foundation/pEp/jniadapter/AbstractEngineInterface.java +++ b/src/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java @@ -1,4 +1,7 @@ -package foundation.pEp.jniadapter; +package foundation.pEp.jniadapter.interfaces; + +import foundation.pEp.jniadapter.Message; +import foundation.pEp.jniadapter.Sync; public interface AbstractEngineInterface { public String getVersion(); diff --git a/src/foundation/pEp/jniadapter/interfaces/BlobInterface.java b/src/foundation/pEp/jniadapter/interfaces/BlobInterface.java new file mode 100644 index 0000000..6a357d4 --- /dev/null +++ b/src/foundation/pEp/jniadapter/interfaces/BlobInterface.java @@ -0,0 +1,5 @@ +package foundation.pEp.jniadapter.interfaces; + +public interface BlobInterface { + +} diff --git a/src/foundation/pEp/jniadapter/interfaces/IdentityInterface.java b/src/foundation/pEp/jniadapter/interfaces/IdentityInterface.java new file mode 100644 index 0000000..1782cd3 --- /dev/null +++ b/src/foundation/pEp/jniadapter/interfaces/IdentityInterface.java @@ -0,0 +1,7 @@ +package foundation.pEp.jniadapter.interfaces; + +import foundation.pEp.jniadapter.Rating; + +public interface IdentityInterface { + public Rating getRating(); +} From c5ae320e7a19cea09a970cf93b5995a1e16e937a Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 19:28:52 +0200 Subject: [PATCH 28/36] move all cxx sources/headers into src/cxx --- src/Makefile | 78 ++++++++++--------- src/codegen/Makefile | 2 +- src/codegen/gen_cpp_Engine.ysl2 | 2 +- src/codegen/gen_cpp_Message.ysl2 | 2 +- src/codegen/gen_throw_pEp_exception.ysl2 | 4 +- src/{ => cxx}/basic_api.cc | 0 ...oundation_pEp_jniadapter_AbstractEngine.cc | 0 .../foundation_pEp_jniadapter__Blob.cc | 0 src/{ => cxx}/get_header.cc | 0 src/{ => cxx}/identity_api.cc | 0 src/{ => cxx}/jniutils.cc | 0 src/{ => cxx}/jniutils.hh | 0 12 files changed, 47 insertions(+), 41 deletions(-) rename src/{ => cxx}/basic_api.cc (100%) rename src/{ => cxx}/foundation_pEp_jniadapter_AbstractEngine.cc (100%) rename src/{ => cxx}/foundation_pEp_jniadapter__Blob.cc (100%) rename src/{ => cxx}/get_header.cc (100%) rename src/{ => cxx}/identity_api.cc (100%) rename src/{ => cxx}/jniutils.cc (100%) rename src/{ => cxx}/jniutils.hh (100%) diff --git a/src/Makefile b/src/Makefile index ae3efa9..9e7af01 100644 --- a/src/Makefile +++ b/src/Makefile @@ -6,18 +6,24 @@ include ../Makefile.conf # Names of the java and c++ libs to be built -LIB_JAVA=pEp.jar +LIB_JAVA_NAME=pEp.jar LIB_CXX_NAME=libpEpJNI -LIB_CXX_STATIC=$(addsuffix .a,$(LIB_CXX_NAME)) +DIST_DIR=../dist/ + +LIB_CXX_STATIC_NAME=$(addsuffix .a,$(LIB_CXX_NAME)) ifeq ($(PLATFORM),linux) - LIB_CXX_DYN=$(addsuffix .so,$(LIB_CXX_NAME)) + LIB_CXX_DYN_NAME=$(addsuffix .so,$(LIB_CXX_NAME)) else ifeq ($(PLATFORM),darwin) - LIB_CXX_DYN=$(addsuffix .dylib,$(LIB_CXX_NAME)) + LIB_CXX_DYN_NAME=$(addsuffix .dylib,$(LIB_CXX_NAME)) else $(error I dont know how to build for $(PLATFORM).) endif +LIB_JAVA=$(DIST_DIR)/$(LIB_JAVA_NAME) +LIB_CXX_STATIC=$(DIST_DIR)/$(LIB_CXX_STATIC_NAME) +LIB_CXX_DYN=$(DIST_DIR)/$(LIB_CXX_DYN_NAME) + $(info ------------------ DIST FILES ---------------------) $(info LIB_JAVA: $(LIB_JAVA)) $(info LIB_CXX_STATIC: $(LIB_CXX_STATIC)) @@ -39,10 +45,13 @@ $(info ---------------------------------------------------) # Dirs # relative to "src/" +BUILD_ROOT=../build/ +CXX_DIR=cxx/ + JAVA_PKG_ROOT=foundation/pEp/jniadapter/ -JAVA_BUILD_ROOT=../build/java/ -OBJ_DIR=../build/cxx/ -DIST_DIR=../dist/ +JAVA_BUILD_ROOT=$(BUILD_ROOT)/java/ +OBJ_DIR=$(BUILD_ROOT)/$(CXX_DIR) + # for "make clean" only GENERATED_JAVA=\ @@ -60,35 +69,34 @@ GENERATED_JAVA=\ # files to compile which will be be generated GENERATED_CC=\ - foundation_pEp_jniadapter_Engine.cc \ - foundation_pEp_jniadapter_Message.cc \ - throw_pEp_exception.cc + $(CXX_DIR)/foundation_pEp_jniadapter_Engine.cc \ + $(CXX_DIR)/foundation_pEp_jniadapter_Message.cc \ + $(CXX_DIR)/throw_pEp_exception.cc # for "make clean" only GENERATED_HH=\ - throw_pEp_exception.hh + $(CXX_DIR)/throw_pEp_exception.hh # Generated JNI headers (javac -h) JNI_GENERATED_HH=\ - foundation_pEp_jniadapter_AbstractEngine.h \ - foundation_pEp_jniadapter__Blob.h \ - foundation_pEp_jniadapter_Engine.h \ - foundation_pEp_jniadapter_Identity.h \ - foundation_pEp_jniadapter_Message.h - -# Derive Java sources that will cause generated headers (for incremental build) -helper=$(subst _,/,$(JNI_GENERATED_HH)) -JNI_GENERATING_JAVA=$(subst .h,.java,$(helper)) + $(CXX_DIR)/foundation_pEp_jniadapter_AbstractEngine.h \ + $(CXX_DIR)/foundation_pEp_jniadapter__Blob.h \ + $(CXX_DIR)/foundation_pEp_jniadapter_Engine.h \ + $(CXX_DIR)/foundation_pEp_jniadapter_Identity.h \ + $(CXX_DIR)/foundation_pEp_jniadapter_Message.h # Auto dependencies using gcc/clang CXXFLAGS+= -MMD -MP -SOURCES=$(wildcard *.cc) +SOURCES=$(wildcard $(CXX_DIR)/*.cc) SOURCES+=$(GENERATED_CC) tmp=$(SOURCES:.cc=.o) -OBJECTS=$(addprefix $(OBJ_DIR), $(tmp)) +OBJECTS=$(addprefix $(BUILD_ROOT), $(tmp)) DEPENDS=$(OBJECTS:.o=.d) +-include $(DEPENDS) +VPATH = $(CXX_DIR)/ + .PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen clean create-dirs remove-dirs install uninstall $(info SOURCES: $(SOURCES)) @@ -105,13 +113,13 @@ lib-cxx: $(LIB_CXX_DYN) $(LIB_CXX_STATIC) # ---------------- Link ----------------- $(LIB_JAVA): compile-java - $(JAVA_BIN_DIR)/jar cf $(DIST_DIR)/$@ -C $(JAVA_BUILD_ROOT) foundation + $(JAVA_BIN_DIR)/jar cf $@ -C $(JAVA_BUILD_ROOT) foundation $(LIB_CXX_DYN): compile-cxx - $(CXX) $(OBJ_DIR)*.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ + $(CXX) $(OBJ_DIR)*.o $(LDFLAGS) $(LDLIBS) -o $@ $(LIB_CXX_STATIC): compile-cxx - $(AR) -r $(DIST_DIR)/$@ $(OBJ_DIR)*.o + $(AR) -r $@ $(OBJ_DIR)*.o # -------------- Compile ----------------- @@ -123,20 +131,18 @@ compile-java: create-dirs codegen compile-cxx: create-dirs gen-jni-headers $(OBJECTS) -$(OBJECTS): $(OBJ_DIR)%.o: %.cc +$(OBJECTS): $(BUILD_ROOT)%.o: %.cc $(CXX) $(CXXFLAGS) -c $< -o $@ --include $(DEPENDS) - # --------- Generate JNI headers ---------- gen-jni-headers: codegen $(JNI_GENERATED_HH) -$(JNI_GENERATED_HH): $(JNI_GENERATING_JAVA) +$(JNI_GENERATED_HH): ifdef OLD_JAVA $(JAVA_BIN_DIR)/javah -d $(JAVA_BUILD_ROOT) $(subst /,.,$(subst .java,,$<)) else - $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) -h . $(JAVA_PKG_ROOT)/*.java + $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) -h $(CXX_DIR)/ $(JAVA_PKG_ROOT)/*.java endif @@ -169,12 +175,12 @@ clean: remove-dirs install: $(LIB_JAVA) $(LIB_CXX_STATIC) $(LIB_CXX_DYN) mkdir -p $(PREFIX)/lib - cp -v $(DIST_DIR)/$(LIB_JAVA) $(PREFIX)/lib/ - cp -v $(DIST_DIR)/$(LIB_CXX_STATIC) $(PREFIX)/lib/ - cp -v $(DIST_DIR)/$(LIB_CXX_DYN) $(PREFIX)/lib/ + cp -v $(LIB_JAVA) $(PREFIX)/lib/ + cp -v $(LIB_CXX_STATIC) $(PREFIX)/lib/ + cp -v $(LIB_CXX_DYN) $(PREFIX)/lib/ uninstall: - cd $(PREFIX)/lib && rm -vf $(LIB_JAVA) - cd $(PREFIX)/lib && rm -vf $(LIB_CXX_STATIC) - cd $(PREFIX)/lib && rm -vf $(LIB_CXX_DYN) + cd $(PREFIX)/lib && rm -vf $(LIB_JAVA_NAME) + cd $(PREFIX)/lib && rm -vf $(LIB_CXX_STATIC_NAME) + cd $(PREFIX)/lib && rm -vf $(LIB_CXX_DYN_NAME) diff --git a/src/codegen/Makefile b/src/codegen/Makefile index 2f6fb48..907426c 100644 --- a/src/codegen/Makefile +++ b/src/codegen/Makefile @@ -7,7 +7,7 @@ include ../../Makefile.conf MARKER_DIR=../../build/marker/ -PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M ../get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1) +PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M ../cxx/get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1) # Every ysl2 file that need to be "compiled" separately, needs to generate a "marker" file # The marker serves as the make target. diff --git a/src/codegen/gen_cpp_Engine.ysl2 b/src/codegen/gen_cpp_Engine.ysl2 index 994fed3..66998ee 100644 --- a/src/codegen/gen_cpp_Engine.ysl2 +++ b/src/codegen/gen_cpp_Engine.ysl2 @@ -10,7 +10,7 @@ tstylesheet { document("../../build/marker/gen_cpp_Engine.marker", "text") > "" } - template "interface" document("../foundation_pEp_jniadapter_{@name}.cc", "text") + template "interface" document("../cxx/foundation_pEp_jniadapter_{@name}.cc", "text") || #include #include diff --git a/src/codegen/gen_cpp_Message.ysl2 b/src/codegen/gen_cpp_Message.ysl2 index 6aeea12..10672ef 100644 --- a/src/codegen/gen_cpp_Message.ysl2 +++ b/src/codegen/gen_cpp_Message.ysl2 @@ -13,7 +13,7 @@ tstylesheet { template "struct" { const "jname" call "CamelCase" with "text", "@name"; - document("../foundation_pEp_jniadapter_{$jname}.cc", "text") { + document("../cxx/foundation_pEp_jniadapter_{$jname}.cc", "text") { || #include #include diff --git a/src/codegen/gen_throw_pEp_exception.ysl2 b/src/codegen/gen_throw_pEp_exception.ysl2 index 7371e01..2314521 100644 --- a/src/codegen/gen_throw_pEp_exception.ysl2 +++ b/src/codegen/gen_throw_pEp_exception.ysl2 @@ -5,7 +5,7 @@ tstylesheet { template "/" { apply "namespace", 0; - document "../throw_pEp_exception.hh", "text" + document "../cxx/throw_pEp_exception.hh", "text" || #pragma once @@ -22,7 +22,7 @@ tstylesheet { } template "namespace" - document("../throw_pEp_exception.cc", "text") + document("../cxx/throw_pEp_exception.cc", "text") || #include #include diff --git a/src/basic_api.cc b/src/cxx/basic_api.cc similarity index 100% rename from src/basic_api.cc rename to src/cxx/basic_api.cc diff --git a/src/foundation_pEp_jniadapter_AbstractEngine.cc b/src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc similarity index 100% rename from src/foundation_pEp_jniadapter_AbstractEngine.cc rename to src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc diff --git a/src/foundation_pEp_jniadapter__Blob.cc b/src/cxx/foundation_pEp_jniadapter__Blob.cc similarity index 100% rename from src/foundation_pEp_jniadapter__Blob.cc rename to src/cxx/foundation_pEp_jniadapter__Blob.cc diff --git a/src/get_header.cc b/src/cxx/get_header.cc similarity index 100% rename from src/get_header.cc rename to src/cxx/get_header.cc diff --git a/src/identity_api.cc b/src/cxx/identity_api.cc similarity index 100% rename from src/identity_api.cc rename to src/cxx/identity_api.cc diff --git a/src/jniutils.cc b/src/cxx/jniutils.cc similarity index 100% rename from src/jniutils.cc rename to src/cxx/jniutils.cc diff --git a/src/jniutils.hh b/src/cxx/jniutils.hh similarity index 100% rename from src/jniutils.hh rename to src/cxx/jniutils.hh From e22afe2c2c0b1a12df6e73f0b32bbd4bbbb7e0c3 Mon Sep 17 00:00:00 2001 From: heck Date: Fri, 3 Jul 2020 19:57:07 +0200 Subject: [PATCH 29/36] Moved all java sources under src/java --- src/Makefile | 20 ++++++++++--------- src/codegen/gen_java_Engine.ysl2 | 4 ++-- src/codegen/gen_java_Message.ysl2 | 8 ++++---- .../pEp/jniadapter/AbstractEngine.java | 0 .../foundation/pEp/jniadapter/Blob.java | 0 .../foundation/pEp/jniadapter/CommType.java | 0 .../foundation/pEp/jniadapter/Identity.java | 0 .../foundation/pEp/jniadapter/Pair.java | 0 .../foundation/pEp/jniadapter/Sync.java | 0 .../pEp/jniadapter/UniquelyIdentifiable.java | 0 .../foundation/pEp/jniadapter/Utils.java | 0 .../foundation/pEp/jniadapter/_Blob.java | 0 .../foundation/pEp/jniadapter/_Identity.java | 0 .../jniadapter/decrypt_message_Return.java | 0 .../interfaces/AbstractEngineInterface.java | 0 .../jniadapter/interfaces/BlobInterface.java | 0 .../interfaces/IdentityInterface.java | 0 17 files changed, 17 insertions(+), 15 deletions(-) rename src/{ => java}/foundation/pEp/jniadapter/AbstractEngine.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/Blob.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/CommType.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/Identity.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/Pair.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/Sync.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/UniquelyIdentifiable.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/Utils.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/_Blob.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/_Identity.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/decrypt_message_Return.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/interfaces/BlobInterface.java (100%) rename src/{ => java}/foundation/pEp/jniadapter/interfaces/IdentityInterface.java (100%) diff --git a/src/Makefile b/src/Makefile index 9e7af01..9f479e6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -47,9 +47,11 @@ $(info ---------------------------------------------------) # relative to "src/" BUILD_ROOT=../build/ CXX_DIR=cxx/ +JAVA_DIR=java/ +JAVA_PKG_BASENAME=foundation/pEp/jniadapter/ -JAVA_PKG_ROOT=foundation/pEp/jniadapter/ -JAVA_BUILD_ROOT=$(BUILD_ROOT)/java/ +JAVA_PKG_ROOT=$(JAVA_DIR)/$(JAVA_PKG_BASENAME) +JAVA_BUILD_ROOT=$(BUILD_ROOT)/$(JAVA_DIR) OBJ_DIR=$(BUILD_ROOT)/$(CXX_DIR) @@ -124,9 +126,9 @@ $(LIB_CXX_STATIC): compile-cxx # -------------- Compile ----------------- compile-java: create-dirs codegen - $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java - $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java - $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/interfaces/*.java + cd $(JAVA_DIR);$(JAVA_BIN_DIR)/javac -d ../$(JAVA_BUILD_ROOT) $(JAVA_PKG_BASENAME)/*.java + cd $(JAVA_DIR);$(JAVA_BIN_DIR)/javac -d ../$(JAVA_BUILD_ROOT) $(JAVA_PKG_BASENAME)/exceptions/*.java + cd $(JAVA_DIR);$(JAVA_BIN_DIR)/javac -d ../$(JAVA_BUILD_ROOT) $(JAVA_PKG_BASENAME)/interfaces/*.java compile-cxx: create-dirs gen-jni-headers $(OBJECTS) @@ -140,9 +142,9 @@ gen-jni-headers: codegen $(JNI_GENERATED_HH) $(JNI_GENERATED_HH): ifdef OLD_JAVA - $(JAVA_BIN_DIR)/javah -d $(JAVA_BUILD_ROOT) $(subst /,.,$(subst .java,,$<)) + cd $(JAVA_DIR);$(JAVA_BIN_DIR)/javah -d ../$(JAVA_BUILD_ROOT) $(subst /,.,$(subst .java,,$<)) else - $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) -h $(CXX_DIR)/ $(JAVA_PKG_ROOT)/*.java + cd $(JAVA_DIR);$(JAVA_BIN_DIR)/javac -d ../$(JAVA_BUILD_ROOT) -h ../$(CXX_DIR)/ $(JAVA_PKG_BASENAME)/*.java endif @@ -153,8 +155,8 @@ codegen: # ------------- Housekeeping --------------- create-dirs: $(MAKE) -C codegen create-dirs - mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT) - mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/exceptions + mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_BASENAME) + mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_BASENAME)/exceptions mkdir -p $(OBJ_DIR) mkdir -p $(DIST_DIR) diff --git a/src/codegen/gen_java_Engine.ysl2 b/src/codegen/gen_java_Engine.ysl2 index 4402599..1c011d6 100644 --- a/src/codegen/gen_java_Engine.ysl2 +++ b/src/codegen/gen_java_Engine.ysl2 @@ -11,7 +11,7 @@ tstylesheet { template "interface" { const "cname" call "toJava" with "type", "@name"; - document("../foundation/pEp/jniadapter/{$cname}.java", "text") + document("../java/foundation/pEp/jniadapter/{$cname}.java", "text") || package foundation.pEp.jniadapter; @@ -27,7 +27,7 @@ tstylesheet { } || - document("../foundation/pEp/jniadapter/interfaces/{$cname}Interface.java", "text") + document("../java/foundation/pEp/jniadapter/interfaces/{$cname}Interface.java", "text") || package foundation.pEp.jniadapter.interfaces; diff --git a/src/codegen/gen_java_Message.ysl2 b/src/codegen/gen_java_Message.ysl2 index 651da83..04224e1 100644 --- a/src/codegen/gen_java_Message.ysl2 +++ b/src/codegen/gen_java_Message.ysl2 @@ -11,7 +11,7 @@ tstylesheet { template "struct" { const "cname" call "toJava" with "type", "@name"; - document("../foundation/pEp/jniadapter/{$cname}.java", "text") + document("../java/foundation/pEp/jniadapter/{$cname}.java", "text") || package foundation.pEp.jniadapter; @@ -65,7 +65,7 @@ tstylesheet { `` apply "*[name(.)!='enum']", mode=entry } || - document("../foundation/pEp/jniadapter/interfaces/{$cname}Interface.java", "text") + document("../java/foundation/pEp/jniadapter/interfaces/{$cname}Interface.java", "text") || package foundation.pEp.jniadapter.interfaces; @@ -85,7 +85,7 @@ tstylesheet { template "enum" { const "jname" call "toJava" with "type", "@name"; - document("../foundation/pEp/jniadapter/{$jname}.java", "text") + document("../java/foundation/pEp/jniadapter/{$jname}.java", "text") || // CodeGen template enum package foundation.pEp.jniadapter; @@ -133,7 +133,7 @@ tstylesheet { function "exception" { param "name"; - document "../foundation/pEp/jniadapter/exceptions/{$name}.java", "text" { + document "../java/foundation/pEp/jniadapter/exceptions/{$name}.java", "text" { | package foundation.pEp.jniadapter.exceptions; | | public class «$name» extends pEpException { diff --git a/src/foundation/pEp/jniadapter/AbstractEngine.java b/src/java/foundation/pEp/jniadapter/AbstractEngine.java similarity index 100% rename from src/foundation/pEp/jniadapter/AbstractEngine.java rename to src/java/foundation/pEp/jniadapter/AbstractEngine.java diff --git a/src/foundation/pEp/jniadapter/Blob.java b/src/java/foundation/pEp/jniadapter/Blob.java similarity index 100% rename from src/foundation/pEp/jniadapter/Blob.java rename to src/java/foundation/pEp/jniadapter/Blob.java diff --git a/src/foundation/pEp/jniadapter/CommType.java b/src/java/foundation/pEp/jniadapter/CommType.java similarity index 100% rename from src/foundation/pEp/jniadapter/CommType.java rename to src/java/foundation/pEp/jniadapter/CommType.java diff --git a/src/foundation/pEp/jniadapter/Identity.java b/src/java/foundation/pEp/jniadapter/Identity.java similarity index 100% rename from src/foundation/pEp/jniadapter/Identity.java rename to src/java/foundation/pEp/jniadapter/Identity.java diff --git a/src/foundation/pEp/jniadapter/Pair.java b/src/java/foundation/pEp/jniadapter/Pair.java similarity index 100% rename from src/foundation/pEp/jniadapter/Pair.java rename to src/java/foundation/pEp/jniadapter/Pair.java diff --git a/src/foundation/pEp/jniadapter/Sync.java b/src/java/foundation/pEp/jniadapter/Sync.java similarity index 100% rename from src/foundation/pEp/jniadapter/Sync.java rename to src/java/foundation/pEp/jniadapter/Sync.java diff --git a/src/foundation/pEp/jniadapter/UniquelyIdentifiable.java b/src/java/foundation/pEp/jniadapter/UniquelyIdentifiable.java similarity index 100% rename from src/foundation/pEp/jniadapter/UniquelyIdentifiable.java rename to src/java/foundation/pEp/jniadapter/UniquelyIdentifiable.java diff --git a/src/foundation/pEp/jniadapter/Utils.java b/src/java/foundation/pEp/jniadapter/Utils.java similarity index 100% rename from src/foundation/pEp/jniadapter/Utils.java rename to src/java/foundation/pEp/jniadapter/Utils.java diff --git a/src/foundation/pEp/jniadapter/_Blob.java b/src/java/foundation/pEp/jniadapter/_Blob.java similarity index 100% rename from src/foundation/pEp/jniadapter/_Blob.java rename to src/java/foundation/pEp/jniadapter/_Blob.java diff --git a/src/foundation/pEp/jniadapter/_Identity.java b/src/java/foundation/pEp/jniadapter/_Identity.java similarity index 100% rename from src/foundation/pEp/jniadapter/_Identity.java rename to src/java/foundation/pEp/jniadapter/_Identity.java diff --git a/src/foundation/pEp/jniadapter/decrypt_message_Return.java b/src/java/foundation/pEp/jniadapter/decrypt_message_Return.java similarity index 100% rename from src/foundation/pEp/jniadapter/decrypt_message_Return.java rename to src/java/foundation/pEp/jniadapter/decrypt_message_Return.java diff --git a/src/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java b/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java similarity index 100% rename from src/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java rename to src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java diff --git a/src/foundation/pEp/jniadapter/interfaces/BlobInterface.java b/src/java/foundation/pEp/jniadapter/interfaces/BlobInterface.java similarity index 100% rename from src/foundation/pEp/jniadapter/interfaces/BlobInterface.java rename to src/java/foundation/pEp/jniadapter/interfaces/BlobInterface.java diff --git a/src/foundation/pEp/jniadapter/interfaces/IdentityInterface.java b/src/java/foundation/pEp/jniadapter/interfaces/IdentityInterface.java similarity index 100% rename from src/foundation/pEp/jniadapter/interfaces/IdentityInterface.java rename to src/java/foundation/pEp/jniadapter/interfaces/IdentityInterface.java From b8b52978f05bd02a7826dd5ebebdd297ab746859 Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 9 Jul 2020 00:37:14 +0200 Subject: [PATCH 30/36] add new public method to AbstractEngineInterface "public void setPassphraseRequiredCallback(Sync.PassphraseRequiredCallback passphraseRequiredCallback);" --- .../pEp/jniadapter/interfaces/AbstractEngineInterface.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java b/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java index 9e3630f..cdfca76 100644 --- a/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java +++ b/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java @@ -24,5 +24,7 @@ public interface AbstractEngineInterface { public void setNeedsFastPollCallback(Sync.NeedsFastPollCallback needsFastPollCallback); + public void setPassphraseRequiredCallback(Sync.PassphraseRequiredCallback passphraseRequiredCallback); + public Message incomingMessageFromPGPText(String pgpText, Message.EncFormat encFormat); } From de22d6aad3ee76ad32378d15d7a43714b6c357ae Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 30 Jul 2020 01:15:08 +0200 Subject: [PATCH 31/36] Generate all Exceptions fixed --- .hgignore | 2 +- src/Makefile | 4 +++- src/codegen/Makefile | 4 ++-- src/codegen/gen_java_Message.ysl2 | 11 +++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.hgignore b/.hgignore index 3fadd4c..1364052 100644 --- a/.hgignore +++ b/.hgignore @@ -21,6 +21,7 @@ foundation_pEp_jniadapter_Engine.* foundation_pEp_jniadapter_Message.* foundation_pEp_jniadapter_Identity.h throw_pEp_exception.* +src/java/foundation/pEp/jniadapter/exceptions/*.java CipherSuite.java Color.java @@ -30,7 +31,6 @@ EngineInterface.java IdentityFlags.java Message.java MessageInterface.java -pEp*.java Rating.java Status.java SyncHandshakeResult.java diff --git a/src/Makefile b/src/Makefile index 9f479e6..bba68cc 100644 --- a/src/Makefile +++ b/src/Makefile @@ -67,7 +67,8 @@ GENERATED_JAVA=\ $(JAVA_PKG_ROOT)/SyncHandshakeResult.java \ $(JAVA_PKG_ROOT)/SyncHandshakeSignal.java \ $(JAVA_PKG_ROOT)/interfaces/EngineInterface.java \ - $(JAVA_PKG_ROOT)/interfaces/MessageInterface.java + $(JAVA_PKG_ROOT)/interfaces/MessageInterface.java \ + $(JAVA_PKG_ROOT)/exceptions/*.java # files to compile which will be be generated GENERATED_CC=\ @@ -159,6 +160,7 @@ create-dirs: mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_BASENAME)/exceptions mkdir -p $(OBJ_DIR) mkdir -p $(DIST_DIR) + mkdir -p $(JAVA_PKG_ROOT)/exceptions #rm -rf is too dangerous for vars remove-dirs: diff --git a/src/codegen/Makefile b/src/codegen/Makefile index 907426c..16ca8bd 100644 --- a/src/codegen/Makefile +++ b/src/codegen/Makefile @@ -9,9 +9,9 @@ MARKER_DIR=../../build/marker/ PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M ../cxx/get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1) -# Every ysl2 file that need to be "compiled" separately, needs to generate a "marker" file +# Every ysl2 file that needs to be "compiled" separately, needs to generate a "marker" file # The marker serves as the make target. -# If the marker file is older than its corresponding ysl2 file, or not exsiting the ysl2 file will be "compiled" +# If the marker file is older than its corresponding ysl2 file, or not exsiting, the ysl2 file will be "compiled" # Naming: # For a ysl2 file called "gen_example_stuff.ysl2", a marker file called "gen_example_stuff.marker" is expected. YML2_MARKERS= \ diff --git a/src/codegen/gen_java_Message.ysl2 b/src/codegen/gen_java_Message.ysl2 index 04224e1..7007f6f 100644 --- a/src/codegen/gen_java_Message.ysl2 +++ b/src/codegen/gen_java_Message.ysl2 @@ -6,6 +6,17 @@ tstylesheet { template "/namespace[@name='pEp']" { apply "struct|enum|exception", 0; + document "../java/foundation/pEp/jniadapter/exceptions/pEpException.java", "text" { + || + package foundation.pEp.jniadapter.exceptions; + + public class pEpException extends RuntimeException { + public pEpException(String message) { + super(message); + } + } + || + } document("../../build/marker/gen_java_Message.marker", "text") > "" } From 1db1aead612f1ac5539782341428df5587341f34 Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 30 Jul 2020 01:29:40 +0200 Subject: [PATCH 32/36] move the new .hh files to new src/cxx/ --- src/cxx/passphrase_callback.hh | 8 +++++++- src/{ => cxx}/passphrase_callback.hxx | 0 2 files changed, 7 insertions(+), 1 deletion(-) rename src/{ => cxx}/passphrase_callback.hxx (100%) diff --git a/src/cxx/passphrase_callback.hh b/src/cxx/passphrase_callback.hh index 357b2c6..8482077 100644 --- a/src/cxx/passphrase_callback.hh +++ b/src/cxx/passphrase_callback.hh @@ -1,3 +1,5 @@ +#pragma once +#include namespace pEp { @@ -5,5 +7,9 @@ namespace pEp { char* passphraseRequiredCallback(); + template PEP_STATUS passphraseWrap( + PEP_STATUS f(PEP_SESSION, A...), PEP_SESSION session, A... a); }; -}; \ No newline at end of file +}; + +#include "passphrase_callback.hxx" \ No newline at end of file diff --git a/src/passphrase_callback.hxx b/src/cxx/passphrase_callback.hxx similarity index 100% rename from src/passphrase_callback.hxx rename to src/cxx/passphrase_callback.hxx From c1fc4fb5cae3f2930ebf7a42e884b370d91bb61f Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 26 Aug 2020 12:35:50 +0200 Subject: [PATCH 33/36] JNI-106 Android build: update to use current Makefile and api. --- android/build.gradle | 2 +- android/jni/Android.mk | 16 ++++++++-------- .../foundation/pEp/jniadapter/AndroidHelper.java | 2 ++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index f058512..c5f0960 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -94,7 +94,7 @@ android { // call source generation makefile target task genSources(type:Exec, dependsOn: 'genpEpEngineAsn1Sources') { workingDir '../src' - commandLine 'make', "-j${threadsToUse}", 'pEp.jar' + commandLine 'make', "-j${threadsToUse}", 'lib-java' } task genpEpEngineSyncSources(type:Exec) { diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 24a635b..abc0209 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -47,14 +47,14 @@ LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libiconv libuuid pEpAdapter libsequ LOCAL_CPP_FEATURES += exceptions LOCAL_CPPFLAGS += -std=c++11 -DANDROID_STL=c++_shared -DHAVE_PTHREADS -DDISABLE_SYNC -fuse-ld=lld LOCAL_SRC_FILES := \ - ../../src/foundation_pEp_jniadapter_AbstractEngine.cc \ - ../../src/foundation_pEp_jniadapter_Engine.cc \ - ../../src/foundation_pEp_jniadapter_Message.cc \ - ../../src/foundation_pEp_jniadapter__Blob.cc \ - ../../src/throw_pEp_exception.cc \ - ../../src/basic_api.cc \ - ../../src/identity_api.cc \ - ../../src/jniutils.cc + ../../src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc \ + ../../src/cxx/foundation_pEp_jniadapter_Engine.cc \ + ../../src/cxx/foundation_pEp_jniadapter_Message.cc \ + ../../src/cxx/foundation_pEp_jniadapter__Blob.cc \ + ../../src/cxx/throw_pEp_exception.cc \ + ../../src/cxx/basic_api.cc \ + ../../src/cxx/identity_api.cc \ + ../../src/cxx/jniutils.cc LOCAL_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include LOCAL_C_INCLUDES += $(LIB_PEP_ADAPTER_PATH)/build-android/include $(SRC_PATH)/libpEpAdapter diff --git a/android/src/foundation/pEp/jniadapter/AndroidHelper.java b/android/src/foundation/pEp/jniadapter/AndroidHelper.java index f9e71b8..eaa52b0 100644 --- a/android/src/foundation/pEp/jniadapter/AndroidHelper.java +++ b/android/src/foundation/pEp/jniadapter/AndroidHelper.java @@ -10,6 +10,8 @@ import java.io.*; import java.lang.reflect.Method; import java.util.Scanner; +import foundation.pEp.jniadapter.exceptions.pEpException; + public class AndroidHelper { static { System.loadLibrary("pEpJNIAndroidHelper"); From 1f95274051332d33c0e000b6a51ae7623f017a5d Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 26 Aug 2020 23:15:26 +0200 Subject: [PATCH 34/36] remove stale file from merge --- src/passphrase_callback.hh | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 src/passphrase_callback.hh diff --git a/src/passphrase_callback.hh b/src/passphrase_callback.hh deleted file mode 100644 index e0f9804..0000000 --- a/src/passphrase_callback.hh +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once -#include - - -namespace pEp { - namespace JNIAdapter { - - char* passphraseRequiredCallback(const PEP_STATUS status); - - template PEP_STATUS passphraseWrap(PEP_STATUS f(PEP_SESSION, A...), PEP_SESSION session, A... a); - } -} - -#include "passphrase_callback.hxx" \ No newline at end of file From 432bb50dc5c39366706f28d7876406728dd3cb9f Mon Sep 17 00:00:00 2001 From: heck Date: Wed, 26 Aug 2020 23:47:02 +0200 Subject: [PATCH 35/36] sensible build defaults --- Makefile.conf | 6 +++--- local.conf.example | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.conf b/Makefile.conf index cc24c6f..2166eac 100644 --- a/Makefile.conf +++ b/Makefile.conf @@ -9,9 +9,9 @@ PLATFORM:=$(shell uname | tr A-Z a-z) # DEV ENV PATHS & CFG # The dev environment paths and configs are set to a default value which can be overridden by ./local.conf and overridden again by /local.conf ######### Build Config Defaults ######### -DEBUG=1 -PREFIX=$(HOME)/local -YML2_PATH=$(HOME)/yml2 +DEBUG=0 +PREFIX=$(HOME) +YML2_PATH=$(PREFIX)/src/yml2 YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS) YML2_OPTS=--encoding=utf8 ENGINE_LIB_PATH=$(PREFIX)/lib diff --git a/local.conf.example b/local.conf.example index d550ae5..310de4b 100644 --- a/local.conf.example +++ b/local.conf.example @@ -5,7 +5,7 @@ # These example values here reflect the defaults ############ Install ########### -# PREFIX=$(HOME)/local +# PREFIX=$(HOME) ######### C++ Compiler ######### # Should work with clang and g++ @@ -16,7 +16,7 @@ # JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home ############ YML2 ############## -# YML2_PATH=$(HOME)/code/yml2 +# YML2_PATH=$(HOME)/src/yml2 ########### Engine ############# # ENGINE_LIB_PATH=$(PREFIX)/lib From 9a2c6d9bd2e11440f4e9f53a0da91476e66ed2af Mon Sep 17 00:00:00 2001 From: heck Date: Thu, 27 Aug 2020 11:54:35 +0200 Subject: [PATCH 36/36] move AutoCloseable to top level interface AbstractEngineInterface --- src/java/foundation/pEp/jniadapter/AbstractEngine.java | 2 +- .../pEp/jniadapter/interfaces/AbstractEngineInterface.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java/foundation/pEp/jniadapter/AbstractEngine.java b/src/java/foundation/pEp/jniadapter/AbstractEngine.java index 1b18fca..b7aba8b 100644 --- a/src/java/foundation/pEp/jniadapter/AbstractEngine.java +++ b/src/java/foundation/pEp/jniadapter/AbstractEngine.java @@ -8,7 +8,7 @@ import foundation.pEp.jniadapter.interfaces.*; import foundation.pEp.jniadapter.exceptions.*; -abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEngineInterface, AutoCloseable { +abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEngineInterface { static { System.loadLibrary("pEpJNI"); } diff --git a/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java b/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java index cdfca76..63fb399 100644 --- a/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java +++ b/src/java/foundation/pEp/jniadapter/interfaces/AbstractEngineInterface.java @@ -3,7 +3,7 @@ package foundation.pEp.jniadapter.interfaces; import foundation.pEp.jniadapter.Message; import foundation.pEp.jniadapter.Sync; -public interface AbstractEngineInterface { +public interface AbstractEngineInterface extends AutoCloseable { public String getVersion(); public String getProtocolVersion();