Imported Upstream version 0.9.2
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOcRepresentation.cpp
1 /*\r
2 * //******************************************************************\r
3 * //\r
4 * // Copyright 2015 Intel Corporation.\r
5 * //\r
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
7 * //\r
8 * // Licensed under the Apache License, Version 2.0 (the "License");\r
9 * // you may not use this file except in compliance with the License.\r
10 * // You may obtain a copy of the License at\r
11 * //\r
12 * //      http://www.apache.org/licenses/LICENSE-2.0\r
13 * //\r
14 * // Unless required by applicable law or agreed to in writing, software\r
15 * // distributed under the License is distributed on an "AS IS" BASIS,\r
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17 * // See the License for the specific language governing permissions and\r
18 * // limitations under the License.\r
19 * //\r
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
21 */\r
22 #include "JniOcRepresentation.h"\r
23 #include "JniUtils.h"\r
24 \r
25 using namespace OC;\r
26 \r
27 OCRepresentation* JniOcRepresentation::getOCRepresentationPtr(JNIEnv *env, jobject thiz)\r
28 {\r
29     OCRepresentation *rep = GetHandle<OCRepresentation>(env, thiz);\r
30     if (env->ExceptionCheck())\r
31     {\r
32         LOGE("Failed to get native handle from OcRepresentation");\r
33     }\r
34     if (!rep)\r
35     {\r
36         ThrowOcException(JNI_NO_NATIVE_POINTER, "");\r
37     }\r
38     return rep;\r
39 }\r
40 \r
41 /*\r
42 * Class:     org_iotivity_base_OcRepresentation\r
43 * Method:    getValueN\r
44 * Signature: (Ljava/lang/String;)Ljava/lang/Object;\r
45 */\r
46 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcRepresentation_getValueN\r
47 (JNIEnv *env, jobject thiz, jstring jKey)\r
48 {\r
49     LOGD("OcRepresentation_getValue");\r
50     if (!jKey)\r
51     {\r
52         ThrowOcException(OC_STACK_INVALID_PARAM, "attributeKey cannot be null");\r
53         return nullptr;\r
54     }\r
55     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
56     if (!rep) return nullptr;\r
57 \r
58     std::string key = env->GetStringUTFChars(jKey, NULL);\r
59 \r
60     AttributeValue attrValue;\r
61     if (!rep->getAttributeValue(key.c_str(), attrValue))\r
62     {\r
63         ThrowOcException(JNI_NO_SUCH_KEY, " attribute key does not exist");\r
64         return nullptr;\r
65     }\r
66     return boost::apply_visitor(JObjectConverter(env), attrValue);\r
67 }\r
68 \r
69 /*\r
70 * Class:     org_iotivity_base_OcRepresentation\r
71 * Method:    setValueInteger\r
72 * Signature: (Ljava/lang/String;I)V\r
73 */\r
74 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueInteger\r
75 (JNIEnv *env, jobject thiz, jstring jKey, jint jValue)\r
76 {\r
77     LOGD("OcRepresentation_setValueInteger");\r
78     if (!jKey)\r
79     {\r
80         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
81         return;\r
82     }\r
83     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
84     if (!rep) return;\r
85 \r
86     std::string str = env->GetStringUTFChars(jKey, NULL);\r
87     rep->setValue(str, static_cast<int>(jValue));\r
88 }\r
89 \r
90 /*\r
91 * Class:     org_iotivity_base_OcRepresentation\r
92 * Method:    setValueDouble\r
93 * Signature: (Ljava/lang/String;D)V\r
94 */\r
95 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueDouble\r
96 (JNIEnv *env, jobject thiz, jstring jKey, jdouble jValue)\r
97 {\r
98     LOGD("OcRepresentation_setValueDouble");\r
99     if (!jKey)\r
100     {\r
101         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
102         return;\r
103     }\r
104     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
105     if (!rep) return;\r
106 \r
107     std::string str = env->GetStringUTFChars(jKey, NULL);\r
108     rep->setValue(str, static_cast<double>(jValue));\r
109 }\r
110 \r
111 /*\r
112 * Class:     org_iotivity_base_OcRepresentation\r
113 * Method:    setValueBoolean\r
114 * Signature: (Ljava/lang/String;Z)V\r
115 */\r
116 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBoolean\r
117 (JNIEnv *env, jobject thiz, jstring jKey, jboolean jValue)\r
118 {\r
119     LOGD("OcRepresentation_setValueBoolean");\r
120     if (!jKey)\r
121     {\r
122         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
123         return;\r
124     }\r
125     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
126     if (!rep) return;\r
127 \r
128     std::string str = env->GetStringUTFChars(jKey, NULL);\r
129     rep->setValue(str, static_cast<bool>(jValue));\r
130 }\r
131 \r
132 /*\r
133 * Class:     org_iotivity_base_OcRepresentation\r
134 * Method:    setValueStringN\r
135 * Signature: (Ljava/lang/String;Ljava/lang/String;)V\r
136 */\r
137 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueStringN\r
138 (JNIEnv *env, jobject thiz, jstring jKey, jstring jValue)\r
139 {\r
140     LOGD("OcRepresentation_setValueString");\r
141     if (!jKey)\r
142     {\r
143         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
144         return;\r
145     }\r
146     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
147     if (!rep) return;\r
148 \r
149     std::string key = env->GetStringUTFChars(jKey, NULL);\r
150     std::string value = env->GetStringUTFChars(jValue, NULL);\r
151 \r
152     rep->setValue(key, value);\r
153 }\r
154 \r
155 /*\r
156 * Class:     org_iotivity_base_OcRepresentation\r
157 * Method:    setValueRepresentation\r
158 * Signature: (Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;)V\r
159 */\r
160 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueRepresentation\r
161 (JNIEnv *env, jobject thiz, jstring jKey, jobject jValue)\r
162 {\r
163     LOGD("OcRepresentation_setValueRepresentation");\r
164     if (!jKey)\r
165     {\r
166         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
167         return;\r
168     }\r
169     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
170     if (!rep) return;\r
171 \r
172     std::string key = env->GetStringUTFChars(jKey, NULL);\r
173     OCRepresentation *value = JniOcRepresentation::getOCRepresentationPtr(env, jValue);\r
174     if (!value) return;\r
175 \r
176     rep->setValue(key, *value);\r
177 }\r
178 \r
179 /*\r
180 * Class:     org_iotivity_base_OcRepresentation\r
181 * Method:    setValueIntegerArray\r
182 * Signature: (Ljava/lang/String;[I)V\r
183 */\r
184 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueIntegerArray\r
185 (JNIEnv *env, jobject thiz, jstring jKey, jintArray jValue)\r
186 {\r
187     LOGD("OcRepresentation_setValueIntegerArray");\r
188     if (!jKey)\r
189     {\r
190         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
191         return;\r
192     }\r
193 \r
194     const jsize len = env->GetArrayLength(jValue);\r
195     jint* ints = env->GetIntArrayElements(jValue, NULL);\r
196 \r
197     std::vector<int> value;\r
198     for (jsize i = 0; i < len; ++i)\r
199     {\r
200         value.push_back(static_cast<int>(ints[i]));\r
201     }\r
202     env->ReleaseIntArrayElements(jValue, ints, JNI_ABORT);\r
203 \r
204     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
205     if (!rep) return;\r
206 \r
207     std::string key = env->GetStringUTFChars(jKey, NULL);\r
208     rep->setValue(key, value);\r
209 }\r
210 \r
211 /*\r
212 * Class:     org_iotivity_base_OcRepresentation\r
213 * Method:    setValueInteger2DArray\r
214 * Signature: (Ljava/lang/String;[[I)V\r
215 */\r
216 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueInteger2DArray\r
217 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
218 {\r
219     LOGD("OcRepresentation__setValueInteger2DArray");\r
220     if (!jKey)\r
221     {\r
222         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
223         return;\r
224     }\r
225     std::vector<std::vector<int>> value;\r
226     const jsize lenOuter = env->GetArrayLength(jValue);\r
227     for (jsize j = 0; j < lenOuter; ++j)\r
228     {\r
229         jintArray jInnerArray = static_cast<jintArray>(env->GetObjectArrayElement(jValue, j));\r
230         jint* ints = env->GetIntArrayElements(jInnerArray, NULL);\r
231         std::vector<int> innerVector;\r
232         const jsize lenInner = env->GetArrayLength(jInnerArray);\r
233         for (jsize i = 0; i < lenInner; ++i)\r
234         {\r
235             innerVector.push_back(static_cast<int>(ints[i]));\r
236         }\r
237         env->ReleaseIntArrayElements(jInnerArray, ints, JNI_ABORT);\r
238         env->DeleteLocalRef(jInnerArray);\r
239         value.push_back(innerVector);\r
240     }\r
241 \r
242     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
243     if (!rep) return;\r
244 \r
245     std::string key = env->GetStringUTFChars(jKey, NULL);\r
246     rep->setValue(key, value);\r
247 }\r
248 \r
249 /*\r
250 * Class:     org_iotivity_base_OcRepresentation\r
251 * Method:    setValueInteger3DArray\r
252 * Signature: (Ljava/lang/String;[[[I)V\r
253 */\r
254 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueInteger3DArray\r
255 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
256 {\r
257     LOGD("OcRepresentation_setValueInteger3DArray");\r
258     if (!jKey)\r
259     {\r
260         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
261         return;\r
262     }\r
263     std::vector<std::vector<std::vector<int>>> value;\r
264     const jsize lenOuter = env->GetArrayLength(jValue);\r
265     for (jsize k = 0; k < lenOuter; ++k)\r
266     {\r
267         jobjectArray jMiddleArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, k));\r
268         const jsize lenMiddle = env->GetArrayLength(jMiddleArray);\r
269         std::vector<std::vector<int>> middleArray;\r
270         for (jsize j = 0; j < lenMiddle; ++j)\r
271         {\r
272             jintArray jInnerArray = static_cast<jintArray>(env->GetObjectArrayElement(jMiddleArray, j));\r
273             jint* ints = env->GetIntArrayElements(jInnerArray, NULL);\r
274             std::vector<int> innerVector;\r
275             const jsize lenInner = env->GetArrayLength(jInnerArray);\r
276             for (jsize i = 0; i < lenInner; ++i)\r
277             {\r
278                 innerVector.push_back(static_cast<int>(ints[i]));\r
279             }\r
280             env->ReleaseIntArrayElements(jInnerArray, ints, JNI_ABORT);\r
281             env->DeleteLocalRef(jInnerArray);\r
282             middleArray.push_back(innerVector);\r
283         }\r
284         env->DeleteLocalRef(jMiddleArray);\r
285         value.push_back(middleArray);\r
286     }\r
287 \r
288     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
289     if (!rep) return;\r
290 \r
291     std::string key = env->GetStringUTFChars(jKey, NULL);\r
292     rep->setValue(key, value);\r
293 }\r
294 \r
295 /*\r
296 * Class:     org_iotivity_base_OcRepresentation\r
297 * Method:    setValueDoubleArray\r
298 * Signature: (Ljava/lang/String;[D)V\r
299 */\r
300 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueDoubleArray\r
301 (JNIEnv *env, jobject thiz, jstring jKey, jdoubleArray jValue)\r
302 {\r
303     LOGD("OcRepresentation_setValueDoubleArray");\r
304     if (!jKey)\r
305     {\r
306         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
307         return;\r
308     }\r
309 \r
310     const jsize len = env->GetArrayLength(jValue);\r
311     jdouble* doubles = env->GetDoubleArrayElements(jValue, NULL);\r
312 \r
313     std::vector<double> value;\r
314     for (jsize i = 0; i < len; ++i)\r
315     {\r
316         value.push_back(static_cast<double>(doubles[i]));\r
317     }\r
318     env->ReleaseDoubleArrayElements(jValue, doubles, JNI_ABORT);\r
319 \r
320     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
321     if (!rep) return;\r
322 \r
323     std::string key = env->GetStringUTFChars(jKey, NULL);\r
324     rep->setValue(key, value);\r
325 }\r
326 \r
327 /*\r
328 * Class:     org_iotivity_base_OcRepresentation\r
329 * Method:    setValueDouble2DArray\r
330 * Signature: (Ljava/lang/String;[[D)V\r
331 */\r
332 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueDouble2DArray\r
333 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
334 {\r
335     LOGD("OcRepresentation_setValueDouble2DArray");\r
336     if (!jKey)\r
337     {\r
338         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
339         return;\r
340     }\r
341     std::vector<std::vector<double>> value;\r
342     const jsize lenOuter = env->GetArrayLength(jValue);\r
343     for (jsize j = 0; j < lenOuter; ++j)\r
344     {\r
345         jdoubleArray jInnerArray = static_cast<jdoubleArray>(env->GetObjectArrayElement(jValue, j));\r
346         jdouble* doubles = env->GetDoubleArrayElements(jInnerArray, NULL);\r
347         std::vector<double> innerVector;\r
348         const jsize lenInner = env->GetArrayLength(jInnerArray);\r
349         for (jsize i = 0; i < lenInner; ++i)\r
350         {\r
351             innerVector.push_back(static_cast<double>(doubles[i]));\r
352         }\r
353         env->ReleaseDoubleArrayElements(jInnerArray, doubles, JNI_ABORT);\r
354         env->DeleteLocalRef(jInnerArray);\r
355         value.push_back(innerVector);\r
356     }\r
357 \r
358     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
359     if (!rep) return;\r
360 \r
361     std::string key = env->GetStringUTFChars(jKey, NULL);\r
362     rep->setValue(key, value);\r
363 }\r
364 \r
365 /*\r
366 * Class:     org_iotivity_base_OcRepresentation\r
367 * Method:    setValueDouble3DArray\r
368 * Signature: (Ljava/lang/String;[[[D)V\r
369 */\r
370 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueDouble3DArray\r
371 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
372 {\r
373     LOGD("OcRepresentation_setValueDouble3DArray");\r
374     if (!jKey)\r
375     {\r
376         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
377         return;\r
378     }\r
379     std::vector<std::vector<std::vector<double>>> value;\r
380     const jsize lenOuter = env->GetArrayLength(jValue);\r
381     for (jsize k = 0; k < lenOuter; ++k)\r
382     {\r
383         jobjectArray jMiddleArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, k));\r
384         const jsize lenMiddle = env->GetArrayLength(jMiddleArray);\r
385         std::vector<std::vector<double>> middleArray;\r
386         for (jsize j = 0; j < lenMiddle; ++j)\r
387         {\r
388             jdoubleArray jInnerArray = static_cast<jdoubleArray>(env->GetObjectArrayElement(jMiddleArray, j));\r
389             jdouble* doubles = env->GetDoubleArrayElements(jInnerArray, NULL);\r
390             std::vector<double> innerVector;\r
391             const jsize lenInner = env->GetArrayLength(jInnerArray);\r
392             for (jsize i = 0; i < lenInner; ++i)\r
393             {\r
394                 innerVector.push_back(static_cast<double>(doubles[i]));\r
395             }\r
396             env->ReleaseDoubleArrayElements(jInnerArray, doubles, JNI_ABORT);\r
397             env->DeleteLocalRef(jInnerArray);\r
398             middleArray.push_back(innerVector);\r
399         }\r
400         env->DeleteLocalRef(jMiddleArray);\r
401         value.push_back(middleArray);\r
402     }\r
403 \r
404     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
405     if (!rep) return;\r
406 \r
407     std::string key = env->GetStringUTFChars(jKey, NULL);\r
408     rep->setValue(key, value);\r
409 }\r
410 \r
411 /*\r
412 * Class:     org_iotivity_base_OcRepresentation\r
413 * Method:    setValueBooleanArray\r
414 * Signature: (Ljava/lang/String;[Z)V\r
415 */\r
416 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBooleanArray\r
417 (JNIEnv *env, jobject thiz, jstring jKey, jbooleanArray jValue)\r
418 {\r
419     LOGD("OcRepresentation_setValueBooleanArray");\r
420     if (!jKey)\r
421     {\r
422         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
423         return;\r
424     }\r
425 \r
426     const jsize len = env->GetArrayLength(jValue);\r
427     jboolean* booleans = env->GetBooleanArrayElements(jValue, NULL);\r
428 \r
429     std::vector<bool> value;\r
430     for (jsize i = 0; i < len; ++i)\r
431     {\r
432         value.push_back(static_cast<bool>(booleans[i]));\r
433     }\r
434     env->ReleaseBooleanArrayElements(jValue, booleans, JNI_ABORT);\r
435 \r
436     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
437     if (!rep) return;\r
438 \r
439     std::string key = env->GetStringUTFChars(jKey, NULL);\r
440     rep->setValue(key, value);\r
441 }\r
442 \r
443 /*\r
444 * Class:     org_iotivity_base_OcRepresentation\r
445 * Method:    setValueBoolean2DArray\r
446 * Signature: (Ljava/lang/String;[[Z)V\r
447 */\r
448 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBoolean2DArray\r
449 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
450 {\r
451     LOGD("OcRepresentation_setValueBoolean2DArray");\r
452     if (!jKey)\r
453     {\r
454         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
455         return;\r
456     }\r
457     std::vector<std::vector<bool>> value;\r
458     const jsize lenOuter = env->GetArrayLength(jValue);\r
459     for (jsize j = 0; j < lenOuter; ++j)\r
460     {\r
461         jbooleanArray jInnerArray = static_cast<jbooleanArray>(env->GetObjectArrayElement(jValue, j));\r
462         const jsize lenInner = env->GetArrayLength(jInnerArray);\r
463         jboolean* booleans = env->GetBooleanArrayElements(jInnerArray, NULL);\r
464 \r
465         std::vector<bool> innerVector;\r
466         for (jsize i = 0; i < lenInner; ++i)\r
467         {\r
468             innerVector.push_back(static_cast<bool>(booleans[i]));\r
469         }\r
470         env->ReleaseBooleanArrayElements(jInnerArray, booleans, JNI_ABORT);\r
471         env->DeleteLocalRef(jInnerArray);\r
472         value.push_back(innerVector);\r
473     }\r
474 \r
475     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
476     if (!rep) return;\r
477 \r
478     std::string key = env->GetStringUTFChars(jKey, NULL);\r
479     rep->setValue(key, value);\r
480 }\r
481 \r
482 /*\r
483 * Class:     org_iotivity_base_OcRepresentation\r
484 * Method:    setValueBoolean3DArray\r
485 * Signature: (Ljava/lang/String;[[[Z)V\r
486 */\r
487 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueBoolean3DArray\r
488 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
489 {\r
490     LOGD("OcRepresentation_setValueBoolean3DArray");\r
491     if (!jKey)\r
492     {\r
493         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
494         return;\r
495     }\r
496     std::vector<std::vector<std::vector<bool>>> value;\r
497     const jsize lenOuter = env->GetArrayLength(jValue);\r
498     for (jsize k = 0; k < lenOuter; ++k)\r
499     {\r
500         jobjectArray jMiddleArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, k));\r
501         const jsize lenMiddle = env->GetArrayLength(jMiddleArray);\r
502         std::vector<std::vector<bool>> middleArray;\r
503         for (jsize j = 0; j < lenMiddle; ++j)\r
504         {\r
505             jbooleanArray jInnerArray = static_cast<jbooleanArray>(env->GetObjectArrayElement(jMiddleArray, j));\r
506             const jsize lenInner = env->GetArrayLength(jInnerArray);\r
507             jboolean* booleans = env->GetBooleanArrayElements(jInnerArray, NULL);\r
508 \r
509             std::vector<bool> innerVector;\r
510             for (jsize i = 0; i < lenInner; ++i)\r
511             {\r
512                 innerVector.push_back(static_cast<bool>(booleans[i]));\r
513             }\r
514             env->ReleaseBooleanArrayElements(jInnerArray, booleans, JNI_ABORT);\r
515             env->DeleteLocalRef(jInnerArray);\r
516             middleArray.push_back(innerVector);\r
517         }\r
518         env->DeleteLocalRef(jMiddleArray);\r
519         value.push_back(middleArray);\r
520     }\r
521 \r
522     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
523     if (!rep) return;\r
524 \r
525     std::string key = env->GetStringUTFChars(jKey, NULL);\r
526     rep->setValue(key, value);\r
527 }\r
528 \r
529 /*\r
530 * Class:     org_iotivity_base_OcRepresentation\r
531 * Method:    setValueStringArray\r
532 * Signature: (Ljava/lang/String;[Ljava/lang/String;)V\r
533 */\r
534 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueStringArray\r
535 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
536 {\r
537     LOGD("OcRepresentation_setValueStringArray");\r
538     if (!jKey)\r
539     {\r
540         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
541         return;\r
542     }\r
543 \r
544     std::vector<std::string> value;\r
545     JniUtils::convertJavaStrArrToStrVector(env, jValue, value);\r
546 \r
547     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
548     if (!rep) return;\r
549 \r
550     std::string key = env->GetStringUTFChars(jKey, NULL);\r
551     rep->setValue(key, value);\r
552 }\r
553 \r
554 /*\r
555 * Class:     org_iotivity_base_OcRepresentation\r
556 * Method:    setValueString2DArray\r
557 * Signature: (Ljava/lang/String;[[Ljava/lang/String;)V\r
558 */\r
559 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueString2DArray\r
560 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
561 {\r
562     LOGD("OcRepresentation_setValueString2DArray");\r
563     if (!jKey)\r
564     {\r
565         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
566         return;\r
567     }\r
568     std::vector<std::vector<std::string>> value;\r
569     const jsize lenOuter = env->GetArrayLength(jValue);\r
570     for (jsize j = 0; j < lenOuter; ++j)\r
571     {\r
572         jobjectArray jInnerArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, j));\r
573         std::vector<std::string> innerVector;\r
574         JniUtils::convertJavaStrArrToStrVector(env, jInnerArray, innerVector);\r
575         env->DeleteLocalRef(jInnerArray);\r
576         value.push_back(innerVector);\r
577     }\r
578 \r
579     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
580     if (!rep) return;\r
581 \r
582     std::string key = env->GetStringUTFChars(jKey, NULL);\r
583     rep->setValue(key, value);\r
584 }\r
585 \r
586 /*\r
587 * Class:     org_iotivity_base_OcRepresentation\r
588 * Method:    setValueString3DArray\r
589 * Signature: (Ljava/lang/String;[[[Ljava/lang/String;)V\r
590 */\r
591 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueString3DArray\r
592 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
593 {\r
594     LOGD("OcRepresentation_setValueString3DArray");\r
595     if (!jKey)\r
596     {\r
597         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
598         return;\r
599     }\r
600     std::vector<std::vector<std::vector<std::string>>> value;\r
601     const jsize lenOuter = env->GetArrayLength(jValue);\r
602     for (jsize k = 0; k < lenOuter; ++k)\r
603     {\r
604         jobjectArray jMiddleArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, k));\r
605         const jsize lenMiddle = env->GetArrayLength(jMiddleArray);\r
606         std::vector<std::vector<std::string>> middleArray;\r
607         for (jsize j = 0; j < lenMiddle; ++j)\r
608         {\r
609             jobjectArray jInnerArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jMiddleArray, j));\r
610             std::vector<std::string> innerVector;\r
611             JniUtils::convertJavaStrArrToStrVector(env, jInnerArray, innerVector);\r
612             env->DeleteLocalRef(jInnerArray);\r
613             middleArray.push_back(innerVector);\r
614         }\r
615         env->DeleteLocalRef(jMiddleArray);\r
616         value.push_back(middleArray);\r
617     }\r
618 \r
619     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
620     if (!rep) return;\r
621 \r
622     std::string key = env->GetStringUTFChars(jKey, NULL);\r
623     rep->setValue(key, value);\r
624 }\r
625 \r
626 /*\r
627 * Class:     org_iotivity_base_OcRepresentation\r
628 * Method:    setValueRepresentationArray\r
629 * Signature: (Ljava/lang/String;[Lorg/iotivity/base/OcRepresentation;)V\r
630 */\r
631 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueRepresentationArray\r
632 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
633 {\r
634     LOGD("OcRepresentation_setValueRepresentationArray");\r
635     if (!jKey)\r
636     {\r
637         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
638         return;\r
639     }\r
640 \r
641     std::vector<OCRepresentation> value;\r
642     JniUtils::convertJavaRepresentationArrToVector(env, jValue, value);\r
643 \r
644     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
645     if (!rep) return;\r
646 \r
647     std::string key = env->GetStringUTFChars(jKey, NULL);\r
648     rep->setValue(key, value);\r
649 }\r
650 \r
651 /*\r
652 * Class:     org_iotivity_base_OcRepresentation\r
653 * Method:    setValueRepresentation2DArray\r
654 * Signature: (Ljava/lang/String;[[Lorg/iotivity/base/OcRepresentation;)V\r
655 */\r
656 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueRepresentation2DArray\r
657 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
658 {\r
659     LOGD("OcRepresentation_setValueRepresentation2DArray");\r
660     if (!jKey)\r
661     {\r
662         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
663         return;\r
664     }\r
665     std::vector<std::vector<OCRepresentation>> value;\r
666     const jsize lenOuter = env->GetArrayLength(jValue);\r
667     for (jsize j = 0; j < lenOuter; ++j)\r
668     {\r
669         jobjectArray jInnerArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, j));\r
670         std::vector<OCRepresentation> innerVector;\r
671         JniUtils::convertJavaRepresentationArrToVector(env, jInnerArray, innerVector);\r
672         env->DeleteLocalRef(jInnerArray);\r
673         value.push_back(innerVector);\r
674     }\r
675 \r
676     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
677     if (!rep) return;\r
678 \r
679     std::string key = env->GetStringUTFChars(jKey, NULL);\r
680     rep->setValue(key, value);\r
681 }\r
682 \r
683 /*\r
684 * Class:     org_iotivity_base_OcRepresentation\r
685 * Method:    setValueRepresentation3DArray\r
686 * Signature: (Ljava/lang/String;[[[Lorg/iotivity/base/OcRepresentation;)V\r
687 */\r
688 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setValueRepresentation3DArray\r
689 (JNIEnv *env, jobject thiz, jstring jKey, jobjectArray jValue)\r
690 {\r
691     LOGD("OcRepresentation_setValueRepresentation3DArray");\r
692     if (!jKey)\r
693     {\r
694         ThrowOcException(OC_STACK_INVALID_PARAM, "key cannot be null");\r
695         return;\r
696     }\r
697     std::vector<std::vector<std::vector<OCRepresentation>>> value;\r
698     const jsize lenOuter = env->GetArrayLength(jValue);\r
699     for (jsize k = 0; k < lenOuter; ++k)\r
700     {\r
701         jobjectArray jMiddleArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jValue, k));\r
702         const jsize lenMiddle = env->GetArrayLength(jMiddleArray);\r
703         std::vector<std::vector<OCRepresentation>> middleArray;\r
704         for (jsize j = 0; j < lenMiddle; ++j)\r
705         {\r
706             jobjectArray jInnerArray = static_cast<jobjectArray>(env->GetObjectArrayElement(jMiddleArray, j));\r
707             std::vector<OCRepresentation> innerVector;\r
708             JniUtils::convertJavaRepresentationArrToVector(env, jInnerArray, innerVector);\r
709             env->DeleteLocalRef(jInnerArray);\r
710             middleArray.push_back(innerVector);\r
711         }\r
712         env->DeleteLocalRef(jMiddleArray);\r
713         value.push_back(middleArray);\r
714     }\r
715 \r
716     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
717     if (!rep) return;\r
718 \r
719     std::string key = env->GetStringUTFChars(jKey, NULL);\r
720     rep->setValue(key, value);\r
721 }\r
722 \r
723 /*\r
724 * Class:     org_iotivity_base_OcRepresentation\r
725 * Method:    addChild\r
726 * Signature: (Lorg/iotivity/base/OcRepresentation;)V\r
727 */\r
728 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_addChild\r
729 (JNIEnv *env, jobject thiz, jobject jOcRepresentation)\r
730 {\r
731     LOGD("OcRepresentation_addChild");\r
732     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
733     if (!rep) return;\r
734 \r
735     OCRepresentation *child = JniOcRepresentation::getOCRepresentationPtr(env, jOcRepresentation);\r
736     if (!child) return;\r
737 \r
738     rep->addChild(*child);\r
739 }\r
740 \r
741 /*\r
742 * Class:     org_iotivity_base_OcRepresentation\r
743 * Method:    clearChildren\r
744 * Signature: ()V\r
745 */\r
746 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_clearChildren\r
747 (JNIEnv *env, jobject thiz)\r
748 {\r
749     LOGD("OcRepresentation_clearChildren");\r
750     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
751     if (!rep) return;\r
752 \r
753     rep->clearChildren();\r
754 }\r
755 \r
756 /*\r
757 * Class:     org_iotivity_base_OcRepresentation\r
758 * Method:    getChildrenArray\r
759 * Signature: ()[Lorg/iotivity/base/OcRepresentation;\r
760 */\r
761 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_base_OcRepresentation_getChildrenArray\r
762 (JNIEnv *env, jobject thiz)\r
763 {\r
764     LOGD("OcRepresentation_getChildrenArray");\r
765     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
766     if (!rep) return nullptr;\r
767 \r
768     return JniUtils::convertRepresentationVectorToJavaArray(env, rep->getChildren());\r
769 }\r
770 \r
771 /*\r
772 * Class:     org_iotivity_base_OcRepresentation\r
773 * Method:    getUri\r
774 * Signature: ()Ljava/lang/String;\r
775 */\r
776 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcRepresentation_getUri\r
777 (JNIEnv *env, jobject thiz)\r
778 {\r
779     LOGD("OcRepresentation_getUri");\r
780     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
781     if (!rep) return nullptr;\r
782 \r
783     std::string uri(rep->getUri());\r
784     return env->NewStringUTF(uri.c_str());\r
785 }\r
786 \r
787 /*\r
788 * Class:     org_iotivity_base_OcRepresentation\r
789 * Method:    setUri\r
790 * Signature: (Ljava/lang/String;)V\r
791 */\r
792 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setUri\r
793 (JNIEnv *env, jobject thiz, jstring jUri)\r
794 {\r
795     LOGD("OcRepresentation_setUri");\r
796     if (!jUri)\r
797     {\r
798         ThrowOcException(OC_STACK_INVALID_PARAM, "uri cannot be null");\r
799         return;\r
800     }\r
801     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
802     if (!rep) return;\r
803 \r
804     rep->setUri(env->GetStringUTFChars(jUri, NULL));\r
805 }\r
806 \r
807 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcRepresentation_hasAttribute\r
808 (JNIEnv *env, jobject thiz, jstring jstr)\r
809 {\r
810     LOGD("OcRepresentation_hasAttribute");\r
811     if (!jstr)\r
812     {\r
813         ThrowOcException(OC_STACK_INVALID_PARAM, "attributeKey cannot be null");\r
814         return false;\r
815     }\r
816     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
817     if (!rep) return false;\r
818 \r
819     std::string str = env->GetStringUTFChars(jstr, NULL);\r
820     return rep->hasAttribute(str);\r
821 }\r
822 \r
823 /*\r
824 * Class:     org_iotivity_base_OcRepresentation\r
825 * Method:    getResourceTypes\r
826 * Signature: ()Ljava/util/List;\r
827 */\r
828 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcRepresentation_getResourceTypes\r
829 (JNIEnv *env, jobject thiz)\r
830 {\r
831     LOGD("OcRepresentation_getResourceTypes");\r
832     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
833     if (!rep) return nullptr;\r
834 \r
835     std::vector<std::string> resourceTypes = rep->getResourceTypes();\r
836     return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);\r
837 }\r
838 \r
839 /*\r
840 * Class:     org_iotivity_base_OcRepresentation\r
841 * Method:    setResourceTypeArray\r
842 * Signature: ([Ljava/lang/String;)V\r
843 */\r
844 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setResourceTypeArray\r
845 (JNIEnv *env, jobject thiz, jobjectArray jResourceTypeArray)\r
846 {\r
847     LOGD("OcRepresentation_setResourceTypeArray");\r
848     if (!jResourceTypeArray)\r
849     {\r
850         ThrowOcException(OC_STACK_INVALID_PARAM, "resourceTypeList cannot be null");\r
851         return;\r
852     }\r
853     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
854     if (!rep) return;\r
855 \r
856     std::vector<std::string> resourceTypes;\r
857     JniUtils::convertJavaStrArrToStrVector(env, jResourceTypeArray, resourceTypes);\r
858     rep->setResourceTypes(resourceTypes);\r
859 }\r
860 /*\r
861 * Class:     org_iotivity_base_OcRepresentation\r
862 * Method:    getResourceInterfaces\r
863 * Signature: ()Ljava/util/List;\r
864 */\r
865 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcRepresentation_getResourceInterfaces\r
866 (JNIEnv *env, jobject thiz)\r
867 {\r
868     LOGD("OcRepresentation_getResourceInterfaces");\r
869     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
870     if (!rep) return nullptr;\r
871 \r
872     std::vector<std::string> resourceInterfaces = rep->getResourceInterfaces();\r
873     return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);\r
874 }\r
875 \r
876 /*\r
877 * Class:     org_iotivity_base_OcRepresentation\r
878 * Method:    setResourceInterfaceArray\r
879 * Signature: ([Ljava/lang/String;)V\r
880 */\r
881 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setResourceInterfaceArray\r
882 (JNIEnv *env, jobject thiz, jobjectArray jResourceInterfaceArray)\r
883 {\r
884     LOGD("OcRepresentation_setResourceInterfaceArray");\r
885     if (!jResourceInterfaceArray)\r
886     {\r
887         ThrowOcException(OC_STACK_INVALID_PARAM, "resourceInterfaceList cannot be null");\r
888         return;\r
889     }\r
890     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
891     if (!rep) return;\r
892 \r
893     std::vector<std::string> resourceInterfaces;\r
894     JniUtils::convertJavaStrArrToStrVector(env, jResourceInterfaceArray, resourceInterfaces);\r
895     rep->setResourceInterfaces(resourceInterfaces);\r
896 }\r
897 \r
898 /*\r
899 * Class:     org_iotivity_base_OcRepresentation\r
900 * Method:    isEmpty\r
901 * Signature: ()Z\r
902 */\r
903 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcRepresentation_isEmpty\r
904 (JNIEnv *env, jobject thiz)\r
905 {\r
906     LOGD("OcRepresentation_isEmpty");\r
907     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
908     if (!rep) return false;\r
909 \r
910     return static_cast<jboolean>(rep->empty());\r
911 }\r
912 \r
913 /*\r
914 * Class:     org_iotivity_base_OcRepresentation\r
915 * Method:    size\r
916 * Signature: ()I\r
917 */\r
918 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcRepresentation_size\r
919 (JNIEnv *env, jobject thiz)\r
920 {\r
921     LOGD("OcRepresentation_size");\r
922     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
923     if (!rep) return -1;\r
924 \r
925     return static_cast<jint>(rep->numberOfAttributes());\r
926 }\r
927 \r
928 /*\r
929 * Class:     org_iotivity_base_OcRepresentation\r
930 * Method:    remove\r
931 * Signature: (Ljava/lang/String;)Z\r
932 */\r
933 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcRepresentation_remove\r
934 (JNIEnv *env, jobject thiz, jstring jAttributeKey)\r
935 {\r
936     LOGD("OcRepresentation_remove");\r
937     if (!jAttributeKey)\r
938     {\r
939         ThrowOcException(OC_STACK_INVALID_PARAM, "attributeKey cannot be null");\r
940         return false;\r
941     }\r
942     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
943     if (!rep) return false;\r
944 \r
945     std::string attributeKey = env->GetStringUTFChars(jAttributeKey, NULL);\r
946     return static_cast<jboolean>(rep->erase(attributeKey));\r
947 }\r
948 \r
949 /*\r
950 * Class:     org_iotivity_base_OcRepresentation\r
951 * Method:    setNull\r
952 * Signature: (Ljava/lang/String;)V\r
953 */\r
954 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_setNull\r
955 (JNIEnv *env, jobject thiz, jstring jAttributeKey)\r
956 {\r
957     LOGD("OcRepresentation_setNull");\r
958     if (!jAttributeKey)\r
959     {\r
960         ThrowOcException(OC_STACK_INVALID_PARAM, "attributeKey cannot be null");\r
961         return;\r
962     }\r
963     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
964     if (!rep) return;\r
965 \r
966     std::string attributeKey = env->GetStringUTFChars(jAttributeKey, NULL);\r
967     rep->setNULL(attributeKey);\r
968 }\r
969 \r
970 /*\r
971 * Class:     org_iotivity_base_OcRepresentation\r
972 * Method:    isNull\r
973 * Signature: (Ljava/lang/String;)Z\r
974 */\r
975 JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcRepresentation_isNull\r
976 (JNIEnv *env, jobject thiz, jstring jAttributeKey)\r
977 {\r
978     LOGD("OcRepresentation_isNull");\r
979     if (!jAttributeKey)\r
980     {\r
981         ThrowOcException(OC_STACK_INVALID_PARAM, "attributeKey cannot be null");\r
982         return false;\r
983     }\r
984     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
985     if (!rep) return false;\r
986 \r
987     std::string attributeKey = env->GetStringUTFChars(jAttributeKey, NULL);\r
988     return static_cast<jboolean>(rep->isNULL(attributeKey));\r
989 }\r
990 \r
991 /*\r
992 * Class:     org_iotivity_base_OcRepresentation\r
993 * Method:    create\r
994 * Signature: ()V\r
995 */\r
996 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_create\r
997 (JNIEnv *env, jobject thiz)\r
998 {\r
999     LOGD("OcRepresentation_create");\r
1000     OCRepresentation *rep = new OCRepresentation();\r
1001     SetHandle<OCRepresentation>(env, thiz, rep);\r
1002     if (env->ExceptionCheck())\r
1003     {\r
1004         LOGE("Failed to set native handle for OcRepresentation");\r
1005         delete rep;\r
1006     }\r
1007 }\r
1008 \r
1009 /*\r
1010 * Class:     org_iotivity_base_OcRepresentation\r
1011 * Method:    dispose\r
1012 * Signature: ()V\r
1013 */\r
1014 JNIEXPORT void JNICALL Java_org_iotivity_base_OcRepresentation_dispose\r
1015 (JNIEnv *env, jobject thiz, jboolean jNeedsDelete)\r
1016 {\r
1017     LOGD("OcRepresentation_dispose");\r
1018     OCRepresentation *rep = JniOcRepresentation::getOCRepresentationPtr(env, thiz);\r
1019 \r
1020     if (jNeedsDelete)\r
1021     {\r
1022         delete rep;\r
1023     }\r
1024 }\r