1 /******************************************************************
3 * Copyright 2015 Samsung Electronics All Rights Reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 ******************************************************************/
20 #include "jni_getter.h"
24 #include "JniOcResource.h"
26 #define LOG_TAG "TM_JGetter"
28 bool JGetter::getJStringField(JNIEnv *env, jobject &object,
29 const char *fieldName, std::string &value) {
30 if (NULL == env || NULL == object || NULL == fieldName) {
31 LOGE("getJStringField invalid parameters");
35 jclass clazz = env->GetObjectClass(object);
37 LOGE("GetObjectClass failed [%s]", fieldName);
41 jfieldID fieldID = env->GetFieldID(clazz, fieldName, "Ljava/lang/String;");
43 LOGE("GetFieldID failed [%s]", fieldName);
44 env->DeleteLocalRef(clazz);
48 jstring jValue = (jstring) env->GetObjectField(object, fieldID);
50 LOGE("GetObjectField failed [%s]", fieldName);
51 env->DeleteLocalRef(clazz);
55 const char *cstr = env->GetStringUTFChars(jValue, 0);
57 LOGE("GetStringUTFChars failed");
60 env->ReleaseStringUTFChars(jValue, cstr);
63 env->DeleteLocalRef(clazz);
64 env->DeleteLocalRef(jValue);
69 bool JGetter::getJBoolField(JNIEnv *env, jobject &object, const char *fieldName,
71 if (NULL == env || NULL == object || NULL == fieldName) {
72 LOGE("getJBoolField invalid parameters");
76 jclass clazz = env->GetObjectClass(object);
78 LOGE("GetObjectClass failed");
82 jfieldID fieldID = env->GetFieldID(clazz, fieldName, "Z");
84 LOGE("GetFieldID failed [%s]", fieldName);
85 env->DeleteLocalRef(clazz);
89 value = env->GetBooleanField(object, fieldID);
91 env->DeleteLocalRef(clazz);
96 bool JGetter::getJIntField(JNIEnv *env, jobject &object, const char *fieldName,
98 if (NULL == env || NULL == object || NULL == fieldName) {
99 LOGE("getJIntField invalid parameters");
103 jclass clazz = env->GetObjectClass(object);
105 LOGE("GetObjectClass failed");
109 jfieldID fieldID = env->GetFieldID(clazz, fieldName, "I");
111 LOGE("GetFieldID failed [%s]", fieldName);
112 env->DeleteLocalRef(clazz);
116 value = env->GetIntField(object, fieldID);
118 env->DeleteLocalRef(clazz);
123 bool JGetter::getJObjectField(JNIEnv *env, jobject &object,
124 const char *fieldName, const char *fieldType, jobject &value) {
125 if (NULL == env || NULL == object || NULL == fieldName) {
129 jclass clazz = env->GetObjectClass(object);
134 jfieldID fieldID = env->GetFieldID(clazz, fieldName, fieldType);
136 LOGE("GetFieldID failed [%s][%s]", fieldName, fieldType);
140 value = env->GetObjectField(object, fieldID);
145 env->DeleteLocalRef(clazz);