Browse Source

identity conversion

JNI-44
Volker Birk 10 years ago
parent
commit
5428da6581
  1. 82
      src/jniutils.cc
  2. 2
      src/jniutils.hh
  3. 12
      src/org/pEp/jniadapter/CommType.java
  4. 2
      src/org/pEp/jniadapter/Identity.java
  5. 4
      src/org/pEp/jniadapter/Pair.java
  6. 4
      src/org/pEp/jniadapter/_Identity.java

82
src/jniutils.cc

@ -275,6 +275,88 @@ namespace pEp {
time_t t = (time_t) callLongMethod(env, date, "getTime");
return new_timestamp(t);
}
static void _setStringField(JNIEnv *env, const char *classname,
jobject obj, const char *name, const char *value)
{
if (value) {
jfieldID fieldID = getFieldID(env, classname, name, "[B");
env->SetObjectField(obj, fieldID,
reinterpret_cast<jobject>(from_string(env, value)));
}
}
jobject from_identity(JNIEnv *env, pEp_identity *ident)
{
static const char *classname = "org/pEp/jniadapter/_Identity";
jclass clazz = findClass(env, classname);
jmethodID constructor = env->GetMethodID(clazz, "<init>", "()V");
assert(constructor);
jobject obj = env->NewObject(clazz, constructor);
if (ident) {
_setStringField(env, classname, obj, "address", ident->address);
_setStringField(env, classname, obj, "fpr", ident->fpr);
_setStringField(env, classname, obj, "user_id", ident->user_id);
_setStringField(env, classname, obj, "username", ident->username);
jfieldID comm_type_id = getFieldID(env, classname, "comm_type", "I");
env->SetIntField(obj, comm_type_id, (jint) (int) ident->comm_type);
_setStringField(env, classname, obj, "lang", ident->lang);
jfieldID me_id = getFieldID(env, classname, "me", "Z");
env->SetBooleanField(obj, me_id, (jboolean) ident->me);
}
return obj;
}
char *_getStringField(JNIEnv *env, const char *classname, jobject obj,
const char *name)
{
jfieldID fieldID = getFieldID(env, classname, name, "[B");
jbyteArray field =
reinterpret_cast<jbyteArray>(env->GetObjectField(obj,
fieldID));
return to_string(env, field);
}
pEp_identity *to_identity(JNIEnv *env, jobject obj)
{
static const char *classname = "org/pEp/jniadapter/_Identity";
pEp_identity *ident = new_identity(NULL, NULL, NULL, NULL);
ident->address = _getStringField(env, classname, obj, "address");
ident->fpr = _getStringField(env, classname, obj, "fpr");
ident->user_id = _getStringField(env, classname, obj, "user_id");
ident->username = _getStringField(env, classname, obj, "username");
jfieldID comm_type_id = getFieldID(env, classname, "comm_type", "I");
ident->comm_type = (PEP_comm_type) (int) env->GetIntField(obj, comm_type_id);
char *lang = _getStringField(env, classname, obj, "lang");
if (lang && lang[0]) {
ident->lang[0] = lang[0];
ident->lang[1] = lang[1];
}
free(lang);
jfieldID me_id = getFieldID(env, classname, "me", "Z");
ident->me = (bool) env->GetBooleanField(obj, me_id);
return ident;
}
jobject from_identitylist(JNIEnv *env, identity_list *il)
{
}
identity_list *to_identitylist(JNIEnv *env, jobject obj)
{
}
};
};

2
src/jniutils.hh

@ -57,7 +57,7 @@ namespace pEp {
timestamp *to_timestamp(JNIEnv *env, jobject date);
jobject from_identity(JNIEnv *env, pEp_identity *ident);
pEp_identity *to_identity(JNIEnv *env, jobject ident);
pEp_identity *to_identity(JNIEnv *env, jobject obj);
jobject from_identitylist(JNIEnv *env, identity_list *il);
identity_list *to_identitylist(JNIEnv *env, jobject obj);

12
src/org/pEp/jniadapter/CommType.java

@ -1,5 +1,7 @@
package org.pEp.jniadapter;
import java.util.HashMap;
public enum CommType {
PEP_ct_unknown (0),
@ -58,10 +60,20 @@ public enum CommType {
PEP_ct_confirmed_enc_anon (0xc0), // generic
PEP_ct_pEp (0xff);
static class Management {
public static final HashMap<Integer, CommType> tag =
new HashMap<Integer, CommType>();
}
public final int value;
CommType(int value) {
this.value = value;
fill(value);
}
private void fill(int value) {
Management.tag.put(value, this);
}
}

2
src/org/pEp/jniadapter/Identity.java

@ -22,7 +22,7 @@ public class Identity {
fpr = AbstractEngine.toUTF16(i.address);
user_id = AbstractEngine.toUTF16(i.address);
username = AbstractEngine.toUTF16(i.address);
comm_type = i.comm_type;
comm_type = CommType.Management.tag.get(i.comm_type);
lang = AbstractEngine.toUTF16(i.address);
me = i.me;
}

4
src/org/pEp/jniadapter/Pair.java

@ -4,9 +4,9 @@ public class Pair<F, S> {
public F first;
public S second;
Pair<F, S>() { }
Pair() { }
Pair<F, S>(F f, S s) {
Pair(F f, S s) {
first = f;
second = s;
}

4
src/org/pEp/jniadapter/_Identity.java

@ -5,7 +5,7 @@ public class _Identity {
public byte[] fpr;
public byte[] user_id;
public byte[] username;
CommType comm_type;
int comm_type;
public byte[] lang;
public boolean me;
@ -22,7 +22,7 @@ public class _Identity {
fpr = AbstractEngine.toUTF8(i.address);
user_id = AbstractEngine.toUTF8(i.address);
username = AbstractEngine.toUTF8(i.address);
comm_type = i.comm_type;
comm_type = i.comm_type.value;
lang = AbstractEngine.toUTF8(i.address);
me = i.me;
}

Loading…
Cancel
Save