Merge branch 'master' into extended-easysetup
[platform/upstream/iotivity.git] / android / android_api / base / jni / JniOcResourceRequest.cpp
1 /*
2 * //******************************************************************
3 * //
4 * // Copyright 2015 Intel Corporation.
5 * //
6 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 * //
8 * // Licensed under the Apache License, Version 2.0 (the "License");
9 * // you may not use this file except in compliance with the License.
10 * // You may obtain a copy of the License at
11 * //
12 * //      http://www.apache.org/licenses/LICENSE-2.0
13 * //
14 * // Unless required by applicable law or agreed to in writing, software
15 * // distributed under the License is distributed on an "AS IS" BASIS,
16 * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * // See the License for the specific language governing permissions and
18 * // limitations under the License.
19 * //
20 * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 */
22 #include "JniOcResourceRequest.h"
23 #include "OCResourceRequest.h"
24 #include "JniOcResourceHandle.h"
25 #include "JniOcRequestHandle.h"
26 #include "JniUtils.h"
27
28 using namespace OC;
29
30 JniOcResourceRequest::JniOcResourceRequest(const std::shared_ptr<OCResourceRequest> request)
31     : m_request(request)
32 {
33 }
34
35 JniOcResourceRequest::~JniOcResourceRequest()
36 {
37 }
38
39 std::string
40 JniOcResourceRequest::getRequestType()
41 {
42     return m_request->getRequestType();
43 }
44
45 const QueryParamsMap&
46 JniOcResourceRequest::getQueryParameters() const
47 {
48     return m_request->getQueryParameters();
49 }
50
51 int
52 JniOcResourceRequest::getRequestHandlerFlag() const
53 {
54     return m_request->getRequestHandlerFlag();
55 }
56
57 const OCRepresentation&
58 JniOcResourceRequest::getResourceRepresentation() const
59 {
60     return m_request->getResourceRepresentation();
61 }
62
63 const ObservationInfo&
64 JniOcResourceRequest::getObservationInfo() const
65 {
66     return m_request->getObservationInfo();
67 }
68
69 void
70 JniOcResourceRequest::setResourceUri(const std::string resourceUri)
71 {
72     m_request->setResourceUri(resourceUri);
73 }
74
75 std::string
76 JniOcResourceRequest::getResourceUri(void)
77 {
78     return m_request->getResourceUri();
79 }
80
81 const HeaderOptions&
82 JniOcResourceRequest::getHeaderOptions() const
83 {
84     return m_request->getHeaderOptions();
85 }
86
87 const OCRequestHandle&
88 JniOcResourceRequest::getRequestHandle() const
89 {
90     return m_request->getRequestHandle();
91 }
92
93 const OCResourceHandle&
94 JniOcResourceRequest::getResourceHandle() const
95 {
96     return m_request->getResourceHandle();
97 }
98
99 JniOcResourceRequest* JniOcResourceRequest::getJniOcResourceRequestPtr
100 (JNIEnv *env, jobject thiz)
101 {
102     JniOcResourceRequest *request = GetHandle<JniOcResourceRequest>(env, thiz);
103     if (env->ExceptionCheck())
104     {
105         LOGE("Failed to get native handle from OcResourceRequest");
106     }
107     if (!request)
108     {
109         ThrowOcException(JNI_NO_NATIVE_POINTER, "");
110     }
111     return request;
112 }
113
114 /*
115 * Class:     org_iotivity_base_OcResourceRequest
116 * Method:    getRequestTypeNative
117 * Signature: ()Ljava/lang/String;
118 */
119 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResourceRequest_getRequestTypeNative
120 (JNIEnv *env, jobject thiz)
121 {
122     LOGD("OcResourceRequest_getRequestTypeNative");
123     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
124     if (!request)
125     {
126         return nullptr;
127     }
128     std::string requestType = request->getRequestType();
129     return env->NewStringUTF(requestType.c_str());
130 }
131
132 /*
133 * Class:     org_iotivity_base_OcResourceRequest
134 * Method:    getQueryParameters
135 * Signature: ()Ljava/util/Map;
136 */
137 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResourceRequest_getQueryParameters
138 (JNIEnv *env, jobject thiz)
139 {
140     LOGD("OcResourceRequest_getQueryParameters");
141     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
142     if (!request)
143     {
144         return nullptr;
145     }
146
147     return JniUtils::convertQueryParamsMapToJavaMap(env, request->getQueryParameters());
148 }
149
150 /*
151 * Class:     org_iotivity_base_OcResourceRequest
152 * Method:    getRequestHandlerFlagNative
153 * Signature: ()I
154 */
155 JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResourceRequest_getRequestHandlerFlagNative
156 (JNIEnv *env, jobject thiz)
157 {
158     LOGD("OcResourceRequest_getRequestHandlerFlagNative");
159     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
160     if (!request)
161     {
162         return -1;
163     }
164
165     return static_cast<jint>(request->getRequestHandlerFlag());
166 }
167
168 /*
169 * Class:     org_iotivity_base_OcResourceRequest
170 * Method:    getResourceRepresentation
171 * Signature: ()Lorg/iotivity/base/OcRepresentation;
172 */
173 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResourceRequest_getResourceRepresentation
174 (JNIEnv *env, jobject thiz)
175 {
176     LOGD("OcResourceRequest_getResourceRepresentation");
177     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
178     if (!request)
179     {
180         return nullptr;
181     }
182
183     OCRepresentation *ocRepresentation = new OCRepresentation(request->getResourceRepresentation());
184     if (!ocRepresentation)
185     {
186         return nullptr;
187     }
188
189     jlong handle = reinterpret_cast<jlong>(ocRepresentation);
190     jobject jRepresentation = env->NewObject(g_cls_OcRepresentation, g_mid_OcRepresentation_N_ctor_bool,
191         handle, true);
192     if (!jRepresentation)
193     {
194         LOGE("Failed to create OcRepresentation");
195         delete ocRepresentation;
196     }
197
198     return jRepresentation;
199 }
200
201 /*
202 * Class:     org_iotivity_base_OcResourceRequest
203 * Method:    getObservationInfo
204 * Signature: ()Lorg/iotivity/base/ObservationInfo;
205 */
206 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResourceRequest_getObservationInfo
207 (JNIEnv *env, jobject thiz)
208 {
209     LOGD("OcResourceRequest_getObservationInfo");
210     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
211     if (!request)
212     {
213         return nullptr;
214     }
215     ObservationInfo oInfo = request->getObservationInfo();
216
217     jobject jObservationInfo = env->NewObject(g_cls_ObservationInfo, g_mid_ObservationInfo_N_ctor,
218         (jint)oInfo.action, (jbyte)oInfo.obsId);
219
220     if (!jObservationInfo)
221     {
222         LOGE("Failed to create ObservationInfo");
223     }
224
225     return jObservationInfo;
226 }
227
228 /*
229 * Class:     org_iotivity_base_OcResourceRequest
230 * Method:    setResourceUri
231 * Signature: (Ljava/lang/String);
232 */
233 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResourceRequest_setResourceUri
234 (JNIEnv *env, jobject thiz, jstring jUri)
235 {
236     LOGD("OcResourceRequest_setResourceUri");
237     if (!jUri)
238     {
239         ThrowOcException(OC_STACK_INVALID_PARAM, "URI cannot be null");
240         return;
241     }
242     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
243     if (!request)
244     {
245         return;
246     }
247     request->setResourceUri(env->GetStringUTFChars(jUri, 0));
248 }
249
250 /*
251 * Class:     org_iotivity_base_OcResourceRequest
252 * Method:    getResourceUri
253 * Signature: ()Ljava/lang/String;
254 */
255 JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResourceRequest_getResourceUri
256 (JNIEnv *env, jobject thiz)
257 {
258     LOGD("OcResourceRequest_getResourceUri");
259     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
260     if (!request)
261     {
262         return nullptr;
263     }
264     std::string requestUri = request->getResourceUri();
265     return env->NewStringUTF(requestUri.c_str());
266 }
267
268 /*
269 * Class:     org_iotivity_base_OcResourceRequest
270 * Method:    getHeaderOptions
271 * Signature: ()Ljava/util/List;
272 */
273 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResourceRequest_getHeaderOptions
274 (JNIEnv *env, jobject thiz)
275 {
276     LOGD("OcResourceRequest_getHeaderOptions");
277     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
278     if (!request)
279     {
280         return nullptr;
281     }
282     return JniUtils::convertHeaderOptionsVectorToJavaList(env, request->getHeaderOptions());
283 }
284
285 /*
286 * Class:     org_iotivity_base_OcResourceRequest
287 * Method:    getRequestHandle
288 * Signature: ()Lorg/iotivity/base/OcRequestHandle;
289 */
290 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResourceRequest_getRequestHandle
291 (JNIEnv *env, jobject thiz)
292 {
293     LOGD("OcResourceRequest_getRequestHandle");
294     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
295     if (!request)
296     {
297         return nullptr;
298     }
299
300     JniOcRequestHandle* jniHandle = new JniOcRequestHandle(request->getRequestHandle());
301     jlong handle = reinterpret_cast<jlong>(jniHandle);
302     jobject jRequestHandle = env->NewObject(g_cls_OcRequestHandle, g_mid_OcRequestHandle_N_ctor, handle);
303     if (!jRequestHandle)
304     {
305         LOGE("Failed to create OcRequestHandle");
306         delete jniHandle;
307     }
308
309     return jRequestHandle;
310 }
311
312 /*
313 * Class:     org_iotivity_base_OcResourceRequest
314 * Method:    getResourceHandle
315 * Signature: ()Lorg/iotivity/base/OcResourceHandle;
316 */
317 JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResourceRequest_getResourceHandle
318 (JNIEnv *env, jobject thiz)
319 {
320     LOGD("OcResourceRequest_getResourceHandle");
321     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
322     if (!request)
323     {
324         return nullptr;
325     }
326
327     JniOcResourceHandle* jniHandle = new JniOcResourceHandle(
328         request->getResourceHandle());
329     jlong handle = reinterpret_cast<jlong>(jniHandle);
330     jobject jResourceHandle = env->NewObject(g_cls_OcResourceHandle, g_mid_OcResourceHandle_N_ctor, handle);
331     if (!jResourceHandle)
332     {
333         LOGE("Failed to create OcResourceHandle");
334         delete jniHandle;
335     }
336
337     return jResourceHandle;
338 }
339
340 /*
341 * Class:     org_iotivity_base_OcResourceRequest
342 * Method:    dispose
343 * Signature: ()V
344 */
345 JNIEXPORT void JNICALL Java_org_iotivity_base_OcResourceRequest_dispose
346 (JNIEnv *env, jobject thiz)
347 {
348     LOGD("OcResourceRequest_dispose");
349     JniOcResourceRequest *request = JniOcResourceRequest::getJniOcResourceRequestPtr(env, thiz);
350     delete request;
351 }