02797309ca851a55f9898fbdf6664ee4ba61c505
[platform/upstream/iotivity.git] / service / protocol-plugin / plugin-manager / src / Android / jni / PluginManager.cpp
1 //******************************************************************
2 //
3 // Copyright 2014 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
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
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
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.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 /// @file PluginManager.cpp
22
23 /// @brief
24
25 #include <stdio.h>
26 #include <string>
27
28 #include "PluginManager.h"
29
30 /*
31  * Class:     org_iotivity_service_ppm_PluginManager
32  * Method:    startPlugins
33  * Signature: (Ljava/lang/String;Ljava/lang/String;)I
34  */
35 JNIEXPORT jint JNICALL Java_org_iotivity_service_ppm_PluginManager_jniStartPlugins(JNIEnv *env, jobject jobj,
36         jstring jkey, jstring jvalue)
37 {
38     LOGD("jniStartPlugins() Called.");
39
40     if((!jkey)||(!jvalue))
41         return 0;
42     std::string ckey = env->GetStringUTFChars(jkey, 0);
43     std::string cvalue = env->GetStringUTFChars(jvalue, 0);
44
45     return (jint)pluginManagerImpl->startPlugins(ckey, cvalue);
46 }
47
48 /*
49  * Class:     org_iotivity_service_ppm_PluginManager
50  * Method:    stopPlugins
51  * Signature: (Ljava/lang/String;Ljava/lang/String;)I
52  */
53 JNIEXPORT jint JNICALL Java_org_iotivity_service_ppm_PluginManager_jniStopPlugins(JNIEnv *env, jobject jobj,
54         jstring jkey, jstring jvalue)
55 {
56     LOGD("jniStopPlugins() Called.");
57
58     if((!jkey)||(!jvalue))
59         return 0;
60     std::string ckey = env->GetStringUTFChars(jkey, 0);
61     std::string cvalue = env->GetStringUTFChars(jvalue, 0);
62
63     return (jint)pluginManagerImpl->stopPlugins(ckey, cvalue);
64 }
65
66 /*
67  * Class:     org_iotivity_service_ppm_PluginManager
68  * Method:    jniRescanPlugin
69  * Signature: (V)I
70  */
71 JNIEXPORT jint JNICALL Java_org_iotivity_service_ppm_PluginManager_jniRescanPlugin(JNIEnv *env, jobject jobj)
72 {
73     LOGD("jniRescanPlugin() Called.");
74
75     return (jint)pluginManagerImpl->rescanPlugin();
76 }
77
78
79 /*
80  * Class:     org_iotivity_service_ppm_PluginManager
81  * Method:    getPlugins
82  * Signature: (V)[Lorg/iotivity/service/ppm/Plugin;
83  */
84 JNIEXPORT jobjectArray JNICALL Java_org_iotivity_service_ppm_PluginManager_jniGetPlugins(JNIEnv *env,
85         jobject jobj)
86 {
87     LOGD("jniGetPlugins() Called.");
88
89     std::vector<OIC::Plugin> result = pluginManagerImpl->getAllPlugins();
90
91     jclass cls = env->FindClass("org/iotivity/service/ppm/Plugin");
92     jmethodID mid = env->GetMethodID(cls, "<init>", "(Ljava/lang/String;Ljava/lang/String;)V");
93     jobjectArray resultArray = (jobjectArray)env->NewObjectArray(result.size(), cls, NULL);
94
95     for (int i = 0; i < result.size(); i++)
96     {
97         jstring jname = env->NewStringUTF(result[i].getName().c_str());
98         LOGD("jniGetPlugins() [%d] Name: %s", i + 1, result[i].getName().c_str());
99         jstring jplugID = env->NewStringUTF(result[i].getID().c_str());
100         LOGD("jniGetPlugins() [%d] Version: %s", i + 1, result[i].getID().c_str());
101         env->SetObjectArrayElement(resultArray, i, env->NewObject(cls, mid, jname, jplugID));
102     }
103
104     return resultArray;
105 }
106
107
108 /*
109  * Class:     org_iotivity_service_ppm_PluginManager
110  * Method:    getState
111  * Signature: (Ljava/lang/String;)Ljava/lang/String;
112  */
113 JNIEXPORT jstring JNICALL Java_org_iotivity_service_ppm_PluginManager_jniGetState(JNIEnv *env, jobject jobj,
114         jstring jplugID)
115 {
116     LOGD("jniGetState() Called.");
117
118     if (!jplugID)
119         return env->NewStringUTF("NULL_INPUT");
120     std::string cplugID = env->GetStringUTFChars(jplugID, 0);
121     std::string result = pluginManagerImpl->getState(cplugID);
122
123     return env->NewStringUTF(result.c_str());
124 }
125
126 /*
127  * Class:     org_iotivity_service_ppm_PluginManager
128  * Method:    JNI_OnLoad
129  */
130 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jjvm, void *reserved)
131 {
132     LOGD("JNI_OnLoad() Called.");
133
134     JNIEnv *env;
135
136     if (jjvm->GetEnv((void **) &env, JNI_VERSION_1_6) != JNI_OK)
137         return JNI_ERR;
138
139     jvm = jjvm;
140     pluginManagerImpl = new OIC::PluginManagerImpl((void *)jvm);
141
142     return JNI_VERSION_1_6;
143 }
144
145 /*
146  * Class:     org_iotivity_service_ppm_PluginManager
147  * Method:    JNI_OnUnload
148  */
149 JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jjvm, void *reserved)
150 {
151     LOGD("JNI_OnUnload() Called.");
152
153     JNIEnv *env;
154
155     if (jjvm->GetEnv((void **) &env, JNI_VERSION_1_6) != JNI_OK)
156         return ;
157
158     jvm = NULL;
159
160     if (pluginManagerImpl)
161         delete pluginManagerImpl;
162 }