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 ******************************************************************/
21 #include "simulator_resource_utils_jni.h"
22 #include "simulator_utils_jni.h"
23 #include "jni_sharedobject_holder.h"
24 #include "jni_vector.h"
26 jobject CreateSingleResource(JNIEnv *env, SimulatorResourceSP singleResource)
31 auto *objectHolder = JniSharedObjectHolder<SimulatorResource>::create(singleResource);
35 static jmethodID simulatorSingleResourceCtor = env->GetMethodID(
36 gSimulatorClassRefs.simulatorSingleResourceCls, "<init>", "(J)V");
38 jobject resource = (jobject) env->NewObject(gSimulatorClassRefs.simulatorSingleResourceCls,
39 simulatorSingleResourceCtor, reinterpret_cast<jlong>(objectHolder));
49 jobject CreateCollectionResource(JNIEnv *env, SimulatorResourceSP collectionResource)
51 if (!collectionResource)
54 auto *objectHolder = JniSharedObjectHolder<SimulatorResource>::create(collectionResource);
58 static jmethodID simulatorCollectionResourceCtor = env->GetMethodID(
59 gSimulatorClassRefs.simulatorCollectionResourceCls, "<init>", "(J)V");
60 jobject resource = (jobject) env->NewObject(gSimulatorClassRefs.simulatorCollectionResourceCls,
61 simulatorCollectionResourceCtor, reinterpret_cast<jlong>(objectHolder));
71 jobject CreateSimulatorResource(JNIEnv *env, SimulatorResourceSP resource)
76 if (SimulatorResource::Type::COLLECTION_RESOURCE == resource->getType())
77 return CreateCollectionResource(env, resource);
78 return CreateSingleResource(env, resource);
81 jobject CreateSimulatorResourceVector(JNIEnv *env, std::vector<SimulatorResourceSP> &resources)
83 if (!resources.size())
86 jobject vectorObject = JniVector(env).toJava();
90 static jmethodID addMethod = env->GetMethodID(gSimulatorClassRefs.vectorCls,
91 "add", "(Ljava/lang/Object;)Z");
93 for (auto &resource : resources)
94 env->CallBooleanMethod(vectorObject, addMethod, CreateSimulatorResource(env, resource));
99 jobject CreateSimulatorRemoteResource(JNIEnv *env, SimulatorRemoteResourceSP &remoteResource)
104 auto *objectHolder = JniSharedObjectHolder<SimulatorRemoteResource>::create(remoteResource);
108 static jmethodID simulatorRemoteResourceCtor = env->GetMethodID(
109 gSimulatorClassRefs.simulatorRemoteResourceCls, "<init>", "(J)V");
111 jobject resource = (jobject) env->NewObject(gSimulatorClassRefs.simulatorRemoteResourceCls,
112 simulatorRemoteResourceCtor, reinterpret_cast<jlong>(objectHolder));
119 // Setting all required fields
120 static jfieldID uriID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
121 "mUri", "Ljava/lang/String;");
122 static jfieldID connTypeID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
124 static jfieldID hostID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
125 "mHost", "Ljava/lang/String;");
126 static jfieldID uidID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
127 "mId", "Ljava/lang/String;");
128 static jfieldID resTypesID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
129 "mResTypes", "Ljava/util/Vector;");
130 static jfieldID interfacesID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
131 "mResInterfaces", "Ljava/util/Vector;");
132 static jfieldID isObservableID = env->GetFieldID(gSimulatorClassRefs.simulatorRemoteResourceCls,
133 "mIsObservable", "Z");
135 jstring uri = env->NewStringUTF(remoteResource->getURI().c_str());
136 env->SetObjectField(resource, uriID, uri);
138 jint connType = remoteResource->getConnectivityType();
139 env->SetIntField(resource, connTypeID, connType);
141 jstring host = env->NewStringUTF(remoteResource->getHost().c_str());
142 env->SetObjectField(resource, hostID, host);
144 jstring uid = env->NewStringUTF(remoteResource->getID().c_str());
145 env->SetObjectField(resource, uidID, uid);
147 std::vector<std::string> resourceTypes = remoteResource->getResourceTypes();
148 jobject ResTypes = JniVector(env).toJava(resourceTypes);
149 env->SetObjectField(resource, resTypesID, ResTypes);
151 std::vector<std::string> interfaceTypes = remoteResource->getInterface();
152 jobject resInterfaces = JniVector(env).toJava(interfaceTypes);
153 env->SetObjectField(resource, interfacesID, resInterfaces);
155 env->SetBooleanField(resource, isObservableID, remoteResource->isObservable());