diff --git a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/ProfileDiscoveryCallback.kt b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/ProfileDiscoveryCallback.kt index b70e0d8..d51eb74 100644 --- a/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/ProfileDiscoveryCallback.kt +++ b/libs/lpac-jni/src/main/java/net/typeblog/lpac_jni/ProfileDiscoveryCallback.kt @@ -1,5 +1,5 @@ package net.typeblog.lpac_jni interface ProfileDiscoveryCallback { - fun onDiscovered(servers: List) + fun onDiscovered(servers: Set) } diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/interface-wrapper.c b/libs/lpac-jni/src/main/jni/lpac-jni/interface-wrapper.c index be490fd..3f2dff1 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/interface-wrapper.c +++ b/libs/lpac-jni/src/main/jni/lpac-jni/interface-wrapper.c @@ -1,7 +1,7 @@ #include #include #include "interface-wrapper.h" -#include "utils.h" +#include "lpac-convertor.h" static jmethodID method_apdu_connect; static jmethodID method_apdu_disconnect; @@ -95,7 +95,15 @@ http_interface_transmit(struct euicc_ctx *ctx, const char *url, uint32_t *rcode, jbyteArray txArr = (*env)->NewByteArray(env, (jsize) tx_len); (*env)->SetByteArrayRegion(env, txArr, 0, (jsize) tx_len, (const jbyte *) tx); - jobject header_list = to_string_list(env, (char **) headers); + jobject header_list = new_array_list(env); + jclass header_list_class = (*env)->GetObjectClass(env, header_list); + jmethodID add_header = (*env)->GetMethodID(env, header_list_class, "add", "(Ljava/lang/Object;)Z"); + + for (int i = 0; headers[i] != NULL; i++) { + jstring header = toJString(env, headers[i]); + (*env)->CallBooleanMethod(env, header_list, add_header, header); + (*env)->DeleteLocalRef(env, header); + } jobject ret = (*env)->CallObjectMethod(env, LPAC_JNI_CTX(ctx)->http_interface, method_http_transmit, jurl, txArr, header_list); diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/utils.c b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-convertor.c similarity index 92% rename from libs/lpac-jni/src/main/jni/lpac-jni/utils.c rename to libs/lpac-jni/src/main/jni/lpac-jni/lpac-convertor.c index 542ccc4..da714ac 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/utils.c +++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-convertor.c @@ -1,4 +1,4 @@ -#include "utils.h" +#include "lpac-convertor.h" #include #include #include @@ -145,19 +145,6 @@ jobject to_string_set(JNIEnv *env, char **values) { return elements; } -jobject to_string_list(JNIEnv *env, char **values) { - jclass set_class = (*env)->FindClass(env, ARRAY_LIST_CLASS); - jmethodID set_constructor = (*env)->GetMethodID(env, set_class, "", "()V"); - jobject elements = (*env)->NewObject(env, set_class, set_constructor); - jmethodID add_element = (*env)->GetMethodID(env, set_class, "add", "(Ljava/lang/Object;)Z"); - jstring element = NULL; - for (jsize index = 0; values[index] != NULL; index++) { - element = toJString(env, values[index]); - (*env)->CallBooleanMethod(env, elements, add_element, element); - } - return elements; -} - jobject build_profile_metadata(JNIEnv *env, struct es8p_metadata *metadata) { if (metadata == NULL) return NULL; diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/utils.h b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-convertor.h similarity index 96% rename from libs/lpac-jni/src/main/jni/lpac-jni/utils.h rename to libs/lpac-jni/src/main/jni/lpac-jni/lpac-convertor.h index 617f5f4..cc7c568 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/utils.h +++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-convertor.h @@ -31,8 +31,6 @@ jobject to_version(JNIEnv *env, const char *version); jobject to_string_set(JNIEnv *env, char **values); -jobject to_string_list(JNIEnv *env, char **values); - jobject build_profile_metadata(JNIEnv *env, struct es8p_metadata *metadata); jobject to_profile_management_operation(enum es10b_profile_management_operation operation); diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-discovery.c b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-discovery.c index e2246fc..446521b 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-discovery.c +++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-discovery.c @@ -4,7 +4,7 @@ #include #include #include -#include "utils.h" +#include "lpac-convertor.h" #include "lpac-discovery.h" JNIEXPORT jobject JNICALL @@ -52,7 +52,7 @@ Java_net_typeblog_lpac_1jni_LpacJni_discoveryProfile( jclass callback_class = (*env)->GetObjectClass(env, callback); jmethodID on_discovered = (*env)->GetMethodID(env, callback_class, "onDiscovered", - "(Ljava/util/List;)V"); + "(Ljava/util/Set;)V"); const char *_address = (*env)->GetStringUTFChars(env, address, NULL); const char *_imei = NULL; @@ -95,7 +95,7 @@ Java_net_typeblog_lpac_1jni_LpacJni_discoveryProfile( goto out; } - (*env)->CallVoidMethod(env, callback, on_discovered, to_string_list(env, smdp_list)); + (*env)->CallVoidMethod(env, callback, on_discovered, to_string_set(env, smdp_list)); out: diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-download.c b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-download.c index b1ab73e..e069383 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-download.c +++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-download.c @@ -3,7 +3,7 @@ #include #include #include -#include "utils.h" +#include "lpac-convertor.h" #include "lpac-download.h" static jobject download_state_preparing; diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c index 9196ff7..0b6b496 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c +++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-jni.c @@ -9,7 +9,7 @@ #include "lpac-download.h" #include "lpac-notifications.h" #include "lpac-discovery.h" -#include "utils.h" +#include "lpac-convertor.h" #include "interface-wrapper.h" JavaVM *jvm = NULL; diff --git a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-notifications.c b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-notifications.c index a581d40..e6c0069 100644 --- a/libs/lpac-jni/src/main/jni/lpac-jni/lpac-notifications.c +++ b/libs/lpac-jni/src/main/jni/lpac-jni/lpac-notifications.c @@ -2,7 +2,7 @@ #include #include #include -#include "utils.h" +#include "lpac-convertor.h" #include "lpac-notifications.h" JNIEXPORT jobject JNICALL