Browse Source

Added feature Blob.toString() - Human readable string representation of Blob.

The data field is ASN.1 XER decoded for mime_types:
"application/pEp.sync"
"application/pEp.keyreset"
JNI-86
heck 5 years ago
parent
commit
e774036922
  1. 10
      src/Makefile
  2. 15
      src/foundation/pEp/jniadapter/Blob.java
  3. 5
      src/foundation/pEp/jniadapter/_Blob.java
  4. 27
      src/jniutils.cc
  5. 1
      src/jniutils.hh
  6. 1
      test/Basic/SyncCallbacks.java

10
src/Makefile

@ -46,7 +46,9 @@ C_SOURCES=foundation_pEp_jniadapter_Engine.cc \
foundation_pEp_jniadapter_Message.h \
throw_pEp_exception.cc \
throw_pEp_exception.hh \
foundation_pEp_jniadapter_AbstractEngine.h
foundation_pEp_jniadapter_AbstractEngine.h \
foundation_pEp_jniadapter__Blob.cc \
foundation_pEp_jniadapter__Blob.h
PEP_HEADER:=$(shell $(CXX) $(CXXFLAGS) -E -M get_header.cc | grep -oe '[^[:space:]]*pEpEngine\.h' | head -1)
@ -58,7 +60,7 @@ $(JAR): status_list.yml2 $(JAVA_SOURCES) $(C_SOURCES)
$(JP)/javac foundation/pEp/jniadapter/*.java
$(JP)/jar cf $@ foundation/pEp/jniadapter/*.class
BLUBB=foundation_pEp_jniadapter_AbstractEngine.h foundation_pEp_jniadapter_Engine.h foundation_pEp_jniadapter_Message.h
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
ifdef OLD_JAVA
$(JP)/javah $(subst /,.,$(subst .java,,$<))
@ -69,10 +71,10 @@ endif
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: %.o: %.cc %.h
foundation_pEp_jniadapter_Engine.o foundation_pEp_jniadapter_Message.o foundation_pEp_jniadapter__Blob.o : %.o: %.cc %.h
$(CXX) $(CXXFLAGS) -c $< -o $@
$(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
$(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
$(SHARED): $(LIBRARY)

15
src/foundation/pEp/jniadapter/Blob.java

@ -9,6 +9,21 @@ public class Blob {
mime_type = "application/octet-stream";
}
/** 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() {
_Blob _b = new _Blob(this);
String ret = "";
ret += "mime_type: \"" + mime_type + "\"\n";
ret += "filename: \"" + filename + "\"\n";
ret += "data: \"" + _b.toString() + "\"\n";
return ret;
}
Blob(_Blob b) {
data = b.data;
mime_type = AbstractEngine.toUTF16(b.mime_type);

5
src/foundation/pEp/jniadapter/_Blob.java

@ -7,6 +7,11 @@ public class _Blob {
_Blob() { }
private native byte[] _toString() throws pEpException;;
public String toString() {
return AbstractEngine.toUTF16(_toString());
}
_Blob(Blob b) {
data = b.data;
mime_type = AbstractEngine.toUTF8(b.mime_type);

27
src/jniutils.cc

@ -644,6 +644,33 @@ namespace pEp {
return obj;
}
bloblist_t *to_blob(JNIEnv *env, jobject obj)
{
if (!obj)
return NULL;
static const char *classname = "foundation/pEp/jniadapter/_Blob";
jclass clazz = findClass(env, classname);
char *mime_type = _getStringField(env, classname, obj, "mime_type");
char *filename = _getStringField(env, classname, obj, "filename");
jfieldID data_id = getFieldID(env, classname, "data", "[B");
jbyteArray _data = reinterpret_cast<jbyteArray>(env->GetObjectField(obj, data_id));
size_t size = (size_t) env->GetArrayLength(_data);
char *b = (char *) malloc(size);
assert(b);
env->GetByteArrayRegion(_data, 0, size, (jbyte*)b);
bloblist_t *bl = new_bloblist( b, size, mime_type, filename);
free(mime_type);
free(filename);
return bl;
}
// TODO: Use to_blob() inside the loop
bloblist_t *to_bloblist(JNIEnv *env, jobject obj)
{
if (!obj)

1
src/jniutils.hh

@ -88,6 +88,7 @@ namespace pEp {
identity_list *to_identitylist(JNIEnv *env, jobject obj);
jobject from_bloblist(JNIEnv *env, bloblist_t *bl);
bloblist_t *to_blob(JNIEnv *env, jobject obj);
bloblist_t *to_bloblist(JNIEnv *env, jobject obj);
PEP_enc_format to_EncFormat(JNIEnv *env, jobject obj);

1
test/Basic/SyncCallbacks.java

@ -8,6 +8,7 @@ class SyncCallbacks implements Sync.MessageToSendCallback, Sync.NotifyHandshakeC
System.out.println("From: " + message.getFrom());
System.out.println("To: " + message.getTo());
System.out.println("Subject: " + message.getShortmsg());
System.out.println("Attachement[0]: " + message.getAttachments().get(0).toString());
System.out.println("================================");
}

Loading…
Cancel
Save