-/*\r
-* //******************************************************************\r
-* //\r
-* // Copyright 2015 Intel Corporation.\r
-* //\r
-* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-* //\r
-* // Licensed under the Apache License, Version 2.0 (the "License");\r
-* // you may not use this file except in compliance with the License.\r
-* // You may obtain a copy of the License at\r
-* //\r
-* // http://www.apache.org/licenses/LICENSE-2.0\r
-* //\r
-* // Unless required by applicable law or agreed to in writing, software\r
-* // distributed under the License is distributed on an "AS IS" BASIS,\r
-* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* // See the License for the specific language governing permissions and\r
-* // limitations under the License.\r
-* //\r
-* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
-*/\r
-\r
-#include "JniUtils.h"\r
-#include "JniOcRepresentation.h"\r
-\r
-jobject JniUtils::convertStrVectorToJavaStrList(JNIEnv *env, std::vector<std::string> &vector)\r
-{\r
- jobject jList = env->NewObject(g_cls_LinkedList, g_mid_LinkedList_ctor);\r
- if (!jList) return nullptr;\r
- for (size_t i = 0; i < vector.size(); ++i)\r
- {\r
- jstring jStr = env->NewStringUTF(vector[i].c_str());\r
- if (!jStr) return nullptr;\r
- env->CallBooleanMethod(jList, g_mid_LinkedList_add_object, jStr);\r
- if (env->ExceptionCheck()) return nullptr;\r
- env->DeleteLocalRef(jStr);\r
- }\r
- return jList;\r
-}\r
-\r
-void JniUtils::convertJavaStrArrToStrVector(JNIEnv *env, jobjectArray jStrArr, std::vector<std::string> &vector)\r
-{\r
- if (!jStrArr) return;\r
-\r
- jsize len = env->GetArrayLength(jStrArr);\r
- for (jsize i = 0; i < len; ++i)\r
- {\r
- jstring jStr = (jstring)env->GetObjectArrayElement(jStrArr, i);\r
- if (!jStr) return;\r
- vector.push_back(env->GetStringUTFChars(jStr, NULL));\r
- if (env->ExceptionCheck()) return;\r
- env->DeleteLocalRef(jStr);\r
- }\r
-}\r
-\r
-void JniUtils::convertJavaHeaderOptionsArrToVector(JNIEnv *env, jobjectArray jHeaderOptions,\r
- OC::HeaderOptions &headerOptions)\r
-{\r
- if (!jHeaderOptions) return;\r
-\r
- jsize len = env->GetArrayLength(jHeaderOptions);\r
- for (jsize i = 0; i < len; ++i)\r
- {\r
- jobject header = env->GetObjectArrayElement(jHeaderOptions, i);\r
- if (!header) nullptr;\r
- jint jId = env->CallIntMethod(header, g_mid_OcHeaderOption_get_id);\r
- jstring jData = (jstring)env->CallObjectMethod(header, g_mid_OcHeaderOption_get_data);\r
- if (jData) return;\r
-\r
- OC::HeaderOption::OCHeaderOption hopt(\r
- static_cast<int>(jId),\r
- env->GetStringUTFChars(jData, NULL));\r
-\r
- headerOptions.push_back(hopt);\r
-\r
- if (env->ExceptionCheck()) return;\r
- env->DeleteLocalRef(header);\r
- env->DeleteLocalRef(jData);\r
- }\r
-}\r
-\r
-jobject JniUtils::convertHeaderOptionsVectorToJavaList(JNIEnv *env, const OC::HeaderOptions& headerOptions)\r
-{\r
- jobject jHeaderOptionList = env->NewObject(g_cls_LinkedList, g_mid_LinkedList_ctor);\r
- if (!jHeaderOptionList) return nullptr;\r
-\r
- for (size_t i = 0; i < headerOptions.size(); ++i)\r
- {\r
- jobject jHeaderOption = env->NewObject(\r
- g_cls_OcHeaderOption,\r
- g_mid_OcHeaderOption_ctor,\r
- static_cast<jint>(headerOptions[i].getOptionID()),\r
- env->NewStringUTF(headerOptions[i].getOptionData().c_str())\r
- );\r
- if (!jHeaderOption) return nullptr;\r
-\r
- env->CallBooleanMethod(jHeaderOptionList, g_mid_LinkedList_add_object, jHeaderOption);\r
- if (env->ExceptionCheck()) return nullptr;\r
- env->DeleteLocalRef(jHeaderOption);\r
- }\r
-\r
- return jHeaderOptionList;\r
-}\r
-\r
-void JniUtils::convertJavaMapToQueryParamsMap(JNIEnv *env, jobject hashMap, OC::QueryParamsMap &map)\r
-{\r
- if (!hashMap) return;\r
-\r
- jobject jEntrySet = env->CallObjectMethod(hashMap, g_mid_Map_entrySet);\r
- jobject jIterator = env->CallObjectMethod(jEntrySet, g_mid_Set_iterator);\r
- if (!jEntrySet || !jIterator || env->ExceptionCheck()) return;\r
-\r
- while (env->CallBooleanMethod(jIterator, g_mid_Iterator_hasNext))\r
- {\r
- jobject jEntry = env->CallObjectMethod(jIterator, g_mid_Iterator_next);\r
- if (!jEntry) return;\r
- jstring jKey = (jstring)env->CallObjectMethod(jEntry, g_mid_MapEntry_getKey);\r
- if (!jKey) return;\r
- jstring jValue = (jstring)env->CallObjectMethod(jEntry, g_mid_MapEntry_getValue);\r
- if (!jValue) return;\r
-\r
- map.insert(std::make_pair(env->GetStringUTFChars(jKey, NULL),\r
- env->GetStringUTFChars(jValue, NULL)));\r
-\r
- if (env->ExceptionCheck()) return;\r
- env->DeleteLocalRef(jEntry);\r
- env->DeleteLocalRef(jKey);\r
- env->DeleteLocalRef(jValue);\r
- }\r
-}\r
-\r
-jobject JniUtils::convertQueryParamsMapToJavaMap(JNIEnv *env, const OC::QueryParamsMap &map)\r
-{\r
- jobject hashMap = env->NewObject(g_cls_HashMap, g_mid_HashMap_ctor);\r
- if (!hashMap) return nullptr;\r
-\r
- for (auto it = map.begin(); it != map.end(); ++it)\r
- {\r
- std::string key = it->first;\r
- std::string value = it->second;\r
-\r
- env->CallObjectMethod(hashMap,\r
- g_mid_HashMap_put,\r
- env->NewStringUTF(key.c_str()),\r
- env->NewStringUTF(value.c_str()));\r
- if (env->ExceptionCheck()) return nullptr;\r
- }\r
-\r
- return hashMap;\r
-}\r
-\r
-void JniUtils::convertJavaRepresentationArrToVector(JNIEnv *env,\r
- jobjectArray jRepresentationArray,\r
- std::vector<OC::OCRepresentation>& representationVector)\r
-{\r
- if (!jRepresentationArray) return;\r
- jsize len = env->GetArrayLength(jRepresentationArray);\r
-\r
- for (jsize i = 0; i < len; ++i)\r
- {\r
- jobject jRep = env->GetObjectArrayElement(jRepresentationArray, i);\r
- if (!jRep) return;\r
- OC::OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, jRep);\r
- representationVector.push_back(*rep);\r
- if (env->ExceptionCheck()) return;\r
- env->DeleteLocalRef(jRep);\r
- }\r
-}\r
-\r
-jobjectArray JniUtils::convertRepresentationVectorToJavaArray(JNIEnv *env,\r
- const std::vector<OC::OCRepresentation>& representationVector)\r
-{\r
- jsize len = static_cast<jsize>(representationVector.size());\r
- jobjectArray repArr = env->NewObjectArray(len, g_cls_OcRepresentation, NULL);\r
- if (!repArr) return nullptr;\r
- for (jsize i = 0; i < len; ++i)\r
- {\r
- OCRepresentation* rep = new OCRepresentation(representationVector[i]);\r
- jlong handle = reinterpret_cast<jlong>(rep);\r
- jobject jRepresentation = env->NewObject(g_cls_OcRepresentation, g_mid_OcRepresentation_N_ctor_bool,\r
- handle, true);\r
- if (!jRepresentation)\r
- {\r
- delete rep;\r
- return nullptr;\r
- }\r
- env->SetObjectArrayElement(repArr, i, jRepresentation);\r
- if (env->ExceptionCheck()) return nullptr;\r
- env->DeleteLocalRef(jRepresentation);\r
- }\r
-\r
- return repArr;\r
+/*
+* //******************************************************************
+* //
+* // Copyright 2015 Intel Corporation.
+* //
+* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+* //
+* // Licensed under the Apache License, Version 2.0 (the "License");
+* // you may not use this file except in compliance with the License.
+* // You may obtain a copy of the License at
+* //
+* // http://www.apache.org/licenses/LICENSE-2.0
+* //
+* // Unless required by applicable law or agreed to in writing, software
+* // distributed under the License is distributed on an "AS IS" BASIS,
+* // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* // See the License for the specific language governing permissions and
+* // limitations under the License.
+* //
+* //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+*/
+
+#include "JniUtils.h"
+#include "JniOcRepresentation.h"
+
+jobject JniUtils::convertStrVectorToJavaStrList(JNIEnv *env, std::vector<std::string> &vector)
+{
+ jobject jList = env->NewObject(g_cls_LinkedList, g_mid_LinkedList_ctor);
+ if (!jList) return nullptr;
+ for (size_t i = 0; i < vector.size(); ++i)
+ {
+ jstring jStr = env->NewStringUTF(vector[i].c_str());
+ if (!jStr) return nullptr;
+ env->CallBooleanMethod(jList, g_mid_LinkedList_add_object, jStr);
+ if (env->ExceptionCheck()) return nullptr;
+ env->DeleteLocalRef(jStr);
+ }
+ return jList;
+}
+
+void JniUtils::convertJavaStrArrToStrVector(JNIEnv *env, jobjectArray jStrArr, std::vector<std::string> &vector)
+{
+ if (!jStrArr) return;
+
+ jsize len = env->GetArrayLength(jStrArr);
+ for (jsize i = 0; i < len; ++i)
+ {
+ jstring jStr = (jstring)env->GetObjectArrayElement(jStrArr, i);
+ if (!jStr) return;
+ vector.push_back(env->GetStringUTFChars(jStr, nullptr));
+ if (env->ExceptionCheck()) return;
+ env->DeleteLocalRef(jStr);
+ }
+}
+
+void JniUtils::convertJavaHeaderOptionsArrToVector(JNIEnv *env, jobjectArray jHeaderOptions,
+ OC::HeaderOptions &headerOptions)
+{
+ if (!jHeaderOptions) return;
+ jsize len = env->GetArrayLength(jHeaderOptions);
+ for (jsize i = 0; i < len; ++i)
+ {
+ jobject header = env->GetObjectArrayElement(jHeaderOptions, i);
+ if (!header) return;
+ jint jId = env->CallIntMethod(header, g_mid_OcHeaderOption_get_id);
+ jstring jData = (jstring)env->CallObjectMethod(header, g_mid_OcHeaderOption_get_data);
+ OC::HeaderOption::OCHeaderOption hopt(
+ static_cast<int>(jId),
+ env->GetStringUTFChars(jData, nullptr));
+
+ headerOptions.push_back(hopt);
+
+ if (env->ExceptionCheck()) return;
+ env->DeleteLocalRef(header);
+ env->DeleteLocalRef(jData);
+ }
+}
+
+jobject JniUtils::convertHeaderOptionsVectorToJavaList(JNIEnv *env, const OC::HeaderOptions& headerOptions)
+{
+ jobject jHeaderOptionList = env->NewObject(g_cls_LinkedList, g_mid_LinkedList_ctor);
+ if (!jHeaderOptionList) return nullptr;
+
+ for (size_t i = 0; i < headerOptions.size(); ++i)
+ {
+ jobject jHeaderOption = env->NewObject(
+ g_cls_OcHeaderOption,
+ g_mid_OcHeaderOption_ctor,
+ static_cast<jint>(headerOptions[i].getOptionID()),
+ env->NewStringUTF(headerOptions[i].getOptionData().c_str())
+ );
+ if (!jHeaderOption) return nullptr;
+
+ env->CallBooleanMethod(jHeaderOptionList, g_mid_LinkedList_add_object, jHeaderOption);
+ if (env->ExceptionCheck()) return nullptr;
+ env->DeleteLocalRef(jHeaderOption);
+ }
+
+ return jHeaderOptionList;
+}
+
+void JniUtils::convertJavaMapToQueryParamsMap(JNIEnv *env, jobject hashMap, OC::QueryParamsMap &map)
+{
+ if (!hashMap) return;
+
+ jobject jEntrySet = env->CallObjectMethod(hashMap, g_mid_Map_entrySet);
+ jobject jIterator = env->CallObjectMethod(jEntrySet, g_mid_Set_iterator);
+ if (!jEntrySet || !jIterator || env->ExceptionCheck()) return;
+
+ while (env->CallBooleanMethod(jIterator, g_mid_Iterator_hasNext))
+ {
+ jobject jEntry = env->CallObjectMethod(jIterator, g_mid_Iterator_next);
+ if (!jEntry) return;
+ jstring jKey = (jstring)env->CallObjectMethod(jEntry, g_mid_MapEntry_getKey);
+ if (!jKey) return;
+ jstring jValue = (jstring)env->CallObjectMethod(jEntry, g_mid_MapEntry_getValue);
+ if (!jValue) return;
+
+ map.insert(std::make_pair(env->GetStringUTFChars(jKey, nullptr),
+ env->GetStringUTFChars(jValue, nullptr)));
+
+ if (env->ExceptionCheck()) return;
+ env->DeleteLocalRef(jEntry);
+ env->DeleteLocalRef(jKey);
+ env->DeleteLocalRef(jValue);
+ }
+}
+
+jobject JniUtils::convertQueryParamsMapToJavaMap(JNIEnv *env, const OC::QueryParamsMap &map)
+{
+ jobject hashMap = env->NewObject(g_cls_HashMap, g_mid_HashMap_ctor);
+ if (!hashMap) return nullptr;
+
+ for (auto it = map.begin(); it != map.end(); ++it)
+ {
+ std::string key = it->first;
+ std::string value = it->second;
+
+ env->CallObjectMethod(hashMap,
+ g_mid_HashMap_put,
+ env->NewStringUTF(key.c_str()),
+ env->NewStringUTF(value.c_str()));
+ if (env->ExceptionCheck()) return nullptr;
+ }
+
+ return hashMap;
+}
+
+void JniUtils::convertJavaRepresentationArrToVector(JNIEnv *env,
+ jobjectArray jRepresentationArray,
+ std::vector<OC::OCRepresentation>& representationVector)
+{
+ if (!jRepresentationArray) return;
+ jsize len = env->GetArrayLength(jRepresentationArray);
+
+ for (jsize i = 0; i < len; ++i)
+ {
+ jobject jRep = env->GetObjectArrayElement(jRepresentationArray, i);
+ if (!jRep) return;
+ OC::OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, jRep);
+ representationVector.push_back(*rep);
+ if (env->ExceptionCheck()) return;
+ env->DeleteLocalRef(jRep);
+ }
+}
+
+jobjectArray JniUtils::convertRepresentationVectorToJavaArray(JNIEnv *env,
+ const std::vector<OC::OCRepresentation>& representationVector)
+{
+ jsize len = static_cast<jsize>(representationVector.size());
+ jobjectArray repArr = env->NewObjectArray(len, g_cls_OcRepresentation, nullptr);
+ if (!repArr) return nullptr;
+ for (jsize i = 0; i < len; ++i)
+ {
+ OCRepresentation* rep = new OCRepresentation(representationVector[i]);
+ jlong handle = reinterpret_cast<jlong>(rep);
+ jobject jRepresentation = env->NewObject(g_cls_OcRepresentation, g_mid_OcRepresentation_N_ctor_bool,
+ handle, true);
+ if (!jRepresentation)
+ {
+ delete rep;
+ return nullptr;
+ }
+ env->SetObjectArrayElement(repArr, i, jRepresentation);
+ if (env->ExceptionCheck()) return nullptr;
+ env->DeleteLocalRef(jRepresentation);
+ }
+
+ return repArr;