From e66ec533de0d7b24565b20cc335d0ffe35321679 Mon Sep 17 00:00:00 2001 From: "arya.k" Date: Fri, 18 Sep 2015 19:20:09 +0530 Subject: [PATCH] [ANDROID] Remove GroupSynchronization in things manager. Change-Id: I3d3324636ee7642cdba7657cba3c92105831159b Signed-off-by: arya.k Reviewed-on: https://gerrit.iotivity.org/gerrit/2713 Reviewed-by: Jihun Ha Tested-by: jenkins-iotivity Reviewed-by: Madan Lanka --- service/things-manager/SConscript | 23 +- .../com/tm/sample/ConfigurationApiActivity.java | 42 +-- .../Sample/src/com/tm/sample/GroupApiActivity.java | 2 - .../Sample/src/com/tm/sample/GroupClient.java | 166 ++++----- .../java/jni/jniutil/inc/jni_things_manager_jvm.h | 3 - .../jni/jniutil/src/jni_things_manager_jvm.cpp | 31 -- .../java/jni/tm/inc/jni_group_synchronization.h | 156 --------- .../tm/inc/jni_group_synchronization_callbacks.h | 52 --- .../java/jni/tm/src/jni_group_synchronization.cpp | 375 --------------------- .../tm/src/jni_group_synchronization_callbacks.cpp | 106 ------ .../iotivity/service/tm/GroupSynchronization.java | 283 ---------------- 11 files changed, 101 insertions(+), 1138 deletions(-) delete mode 100644 service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization.h delete mode 100644 service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization_callbacks.h delete mode 100644 service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization.cpp delete mode 100644 service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization_callbacks.cpp delete mode 100644 service/things-manager/sdk/java/src/org/iotivity/service/tm/GroupSynchronization.java diff --git a/service/things-manager/SConscript b/service/things-manager/SConscript index e1c65aa..16aa06b 100644 --- a/service/things-manager/SConscript +++ b/service/things-manager/SConscript @@ -54,21 +54,18 @@ if target_os == 'android': # Source files and Targets ###################################################################### +tgm_src = env.Glob('sdk/src/*.cpp', '../../extlibs/timer/timer.c') +tgmsdk_static = things_manager_env.StaticLibrary('TGMSDKLibrary', tgm_src) +tgmsdk_shared = things_manager_env.SharedLibrary('TGMSDKLibrary', tgm_src) -# Remove it if the conversion for Android and Tizen platform is done -if target_os in ['linux', 'tizen']: - tgm_src = env.Glob('sdk/src/*.cpp', '../../extlibs/timer/timer.c') - tgmsdk_static = things_manager_env.StaticLibrary('TGMSDKLibrary', tgm_src) - tgmsdk_shared = things_manager_env.SharedLibrary('TGMSDKLibrary', tgm_src) +things_manager_env.InstallTarget([tgmsdk_static,tgmsdk_shared], 'libTGMSDK') +things_manager_env.UserInstallTargetLib([tgmsdk_static,tgmsdk_shared], 'libTGMSDK') - things_manager_env.InstallTarget([tgmsdk_static,tgmsdk_shared], 'libTGMSDK') - things_manager_env.UserInstallTargetLib([tgmsdk_static,tgmsdk_shared], 'libTGMSDK') +# Build JNI layer +#if target_os == 'android': +# SConscript(os.path.join('sdk', 'java', 'jni', 'SConscript')) - # Build JNI layer - #if target_os == 'android': - # SConscript(os.path.join('sdk', 'java', 'jni', 'SConscript')) - - #Go to build sample apps - SConscript('sampleapp/SConscript') +#Go to build sample apps +SConscript('sampleapp/SConscript') diff --git a/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/ConfigurationApiActivity.java b/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/ConfigurationApiActivity.java index 472f0ed..25eef14 100644 --- a/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/ConfigurationApiActivity.java +++ b/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/ConfigurationApiActivity.java @@ -20,6 +20,7 @@ package com.tm.sample; import java.util.ArrayList; +import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,7 +32,7 @@ import org.iotivity.base.OcPlatform; import org.iotivity.base.OcRepresentation; import org.iotivity.base.OcResource; import org.iotivity.base.OcResourceHandle; -import org.iotivity.service.tm.GroupSynchronization; +import org.iotivity.base.ResourceProperty; import org.iotivity.service.tm.OCStackResult; import org.iotivity.service.tm.GroupManager; import org.iotivity.service.tm.ThingsMaintenance; @@ -94,7 +95,6 @@ public class ConfigurationApiActivity extends Activity { private static Message msg; private GroupManager groupManager = null; - private GroupSynchronization groupSyn = null; private ThingsConfiguration thingsConfiguration = null; private ThingsMaintenance thingsMaintenance = null; private Map resourceList = null; @@ -115,7 +115,6 @@ public class ConfigurationApiActivity extends Activity { mcontext = this; groupManager = new GroupManager(); - groupSyn = new GroupSynchronization(); thingsConfiguration = ThingsConfiguration.getInstance(); thingsMaintenance = ThingsMaintenance.getInstance(); @@ -755,20 +754,27 @@ public class ConfigurationApiActivity extends Activity { OcResourceHandle resourceHandle = null; - // Crate group - OCStackResult result = groupSyn.createGroup(typename); - if ((OCStackResult.OC_STACK_OK != result)) { - Log.e(LOG_TAG, "createGroup returned error: " + result.name()); - return; - } else { - Log.e(LOG_TAG, "createGroup returned: " + result.name()); + try { + resourceHandle = OcPlatform.registerResource( + uri, + typename, + OcPlatform.BATCH_INTERFACE, null, EnumSet.of( + ResourceProperty.DISCOVERABLE)); + } catch (OcException e) { + Log.e(LOG_TAG, "go exception"); + Log.e(LOG_TAG, "RegisterResource error. " + e.getMessage()); } - groupList = groupSyn.getGroupList(); - if (groupList.containsKey(typename)) { - resourceHandle = groupList.get(typename); - } else { - Log.e(LOG_TAG, "group does not contain groupResourceType: " - + result.name()); + try { + OcPlatform.bindInterfaceToResource(resourceHandle, OcPlatform.GROUP_INTERFACE); + } catch (OcException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + OcPlatform.bindInterfaceToResource(resourceHandle, OcPlatform.DEFAULT_INTERFACE); + } catch (OcException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } if (null == resourceHandle) { @@ -826,10 +832,6 @@ public class ConfigurationApiActivity extends Activity { } } - // delete all the groups - groupSyn.deleteGroup(CONFIGURATION_COLLECTION_RESOURCE_TYPE); - groupSyn.deleteGroup(MAINTENANCE_COLLECTION_RESOURCE_TYPE); - groupSyn.deleteGroup(FACTORYSET_COLLECTION_RESOURCE_TYPE); } catch (OcException e) { Log.e(LOG_TAG, "OcException occured! " + e.toString()); } diff --git a/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupApiActivity.java b/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupApiActivity.java index a67e31e..968e41c 100644 --- a/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupApiActivity.java +++ b/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupApiActivity.java @@ -235,8 +235,6 @@ public class GroupApiActivity extends Activity { @Override public void onBackPressed() { super.onBackPressed(); - // unregister the resource and set callback listener to null - groupClientObj.leaveGroup(); } // for update UI these functions will be called from GroupClient Class diff --git a/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupClient.java b/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupClient.java index c2b9cf0..a624c72 100644 --- a/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupClient.java +++ b/service/things-manager/sampleapp/android/Sample/src/com/tm/sample/GroupClient.java @@ -19,24 +19,27 @@ ******************************************************************/ package com.tm.sample; +import java.util.EnumSet; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Vector; +import org.iotivity.base.EntityHandlerResult; import org.iotivity.base.ObserveType; import org.iotivity.base.OcException; import org.iotivity.base.OcHeaderOption; import org.iotivity.base.OcPlatform; import org.iotivity.base.OcRepresentation; import org.iotivity.base.OcResource; +import org.iotivity.base.OcResourceRequest; +import org.iotivity.base.OcStackConfig; +import org.iotivity.base.ResourceProperty; import org.iotivity.base.OcResource.OnObserveListener; import org.iotivity.base.OcResourceHandle; import org.iotivity.service.tm.Action; import org.iotivity.service.tm.ActionSet; import org.iotivity.service.tm.Capability; -import org.iotivity.service.tm.GroupSynchronization; -import org.iotivity.service.tm.GroupSynchronization.*; import org.iotivity.service.tm.OCStackResult; import org.iotivity.service.tm.GroupManager; import org.iotivity.service.tm.GroupManager.*; @@ -56,9 +59,9 @@ public class GroupClient { public String logMessage; private final String groupResourceType = "b.collection"; + private final String groupResourceURI = "/b/collection"; private final GroupManager groupManagerObj; - private final GroupSynchronization groupSynObj; private final ActionListener actionListener; private final ObserveListener observeListener; private OcResource groupResource; @@ -67,6 +70,7 @@ public class GroupClient { private static GroupApiActivity groupApiActivityObj = null; public static Vector lights = new Vector(); public static Vector bookmarks = new Vector(); + public static boolean groupFound = false; /** * Listener for receiving observe notifications. @@ -91,42 +95,7 @@ public class GroupClient { } /** - * Listener for receiving groups discovered in network. - */ - private class FindGroupListener implements IFindGroupListener { - @Override - public void onGroupFindCallback(OcResource resource) { - Log.i(LOG_TAG, "onGroupFindCallback invoked"); - if (resource != null) { - String uri = resource.getUri(); - if (uri.equals("/b/collection") == true) { - String hostAddress = resource.getHost(); - Log.d(LOG_TAG, "onGroupFindCallback URI : " + uri); - Log.d(LOG_TAG, "onGroupFindCallback HOST : " + hostAddress); - - groupResource = resource; - Message msg = Message.obtain(); - msg.what = 0; - groupApiActivityObj.getHandler().sendMessage(msg); - - logMessage = "onGroupFind" + "\n"; - logMessage += "URI : " + uri + "\n"; - logMessage += "Host :" + hostAddress; - GroupApiActivity.setMessageLog(logMessage); - msg = Message.obtain(); - msg.what = 1; - groupApiActivityObj.getHandler().sendMessage(msg); - } else { - Log.d(LOG_TAG, "onGroupFindCallback URI : " + uri); - } - } else { - Log.i(LOG_TAG, "Resource is NULL"); - } - } - }; - - /** - * Listener for receiving Light resource and Observe resources discovered in + * Listener for receiving group resource , Light resource and Observe resources discovered in * network. */ private class FindCadidateResourceListener implements @@ -151,8 +120,31 @@ public class GroupClient { msg = Message.obtain(); msg.what = 1; groupApiActivityObj.getHandler().sendMessage(msg); + if (resourceURI.equals("/b/collection") == true) { + + if(!groupFound) + { + Log.d(LOG_TAG, "Group Found URI : " + resourceURI); + Log.d(LOG_TAG, "Group Foundk HOST : " + hostAddress); + + groupResource = ocResource; + groupFound = true; + Message msg = Message.obtain(); + msg.what = 0; + groupApiActivityObj.getHandler().sendMessage(msg); + + logMessage = "onGroupFind" + "\n"; + logMessage += "URI : " + resourceURI + "\n"; + logMessage += "Host :" + hostAddress; + GroupApiActivity.setMessageLog(logMessage); + msg = Message.obtain(); + msg.what = 1; + groupApiActivityObj.getHandler().sendMessage(msg); + }else{ + Log.d(LOG_TAG, "Group Already found "); + } - if (resourceURI.equals("/a/light") == true) { + }else if (resourceURI.equals("/a/light") == true) { if (lights.contains((hostAddress + resourceURI)) == false) { lights.add((hostAddress + resourceURI)); if (groupApiActivityObj != null) { @@ -167,13 +159,19 @@ public class GroupClient { groupApiActivityObj.getHandler().sendMessage( msg); try { - foundLightHandle = groupManagerObj - .bindResourceToGroup(ocResource, - groupResourceHandle); + foundLightHandle = OcPlatform.registerResource(ocResource); + Log.d(LOG_TAG, "Platform registeration done"); + } catch (OcException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + OcPlatform.bindResource(groupResourceHandle, foundLightHandle); + Log.d(LOG_TAG, "Bind resource done"); } catch (OcException e) { - Log.i(LOG_TAG, - "bindResourceToGroup Exception!"); + // TODO Auto-generated catch block + e.printStackTrace(); } } } else { @@ -204,17 +202,13 @@ public class GroupClient { }; private final FindCadidateResourceListener findCandidateResourceListener; - private final FindGroupListener findGroupListener; public GroupClient() { groupManagerObj = new GroupManager(); - groupSynObj = GroupSynchronization.getInstance(); - findGroupListener = new FindGroupListener(); actionListener = new ActionListener(); observeListener = new ObserveListener(); findCandidateResourceListener = new FindCadidateResourceListener(); - groupSynObj.setGroupListener(findGroupListener); groupManagerObj .setFindCandidateResourceListener(findCandidateResourceListener); groupManagerObj.setActionListener(actionListener); @@ -227,25 +221,30 @@ public class GroupClient { * resources. */ public void createGroup() { - Map groupList = new HashMap(); + groupFound = false; + try { + groupResourceHandle = OcPlatform.registerResource( + groupResourceURI, + groupResourceType, + OcPlatform.BATCH_INTERFACE, null, EnumSet.of( + ResourceProperty.DISCOVERABLE)); + } catch (OcException e) { + Log.e(LOG_TAG, "go exception"); + Log.e(LOG_TAG, "RegisterResource error. " + e.getMessage()); + } - // creating group of type b.collection - // OcPlatform.registerResource(ocResource); - OCStackResult result = groupSynObj.createGroup(groupResourceType); - if ((OCStackResult.OC_STACK_OK != result)) { - Log.e(LOG_TAG, "createGroup returned error: " + result.name()); - return; - } else { - Log.e(LOG_TAG, "createGroup success: " + result.name()); + try { + OcPlatform.bindInterfaceToResource(groupResourceHandle, OcPlatform.GROUP_INTERFACE); + } catch (OcException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - // getting the Created group Handle - groupList = groupSynObj.getGroupList(); - if (groupList.containsKey(groupResourceType)) { - groupResourceHandle = groupList.get(groupResourceType); - } else { - Log.e(LOG_TAG, "group does not contain groupResourceType: " - + result.name()); + try { + OcPlatform.bindInterfaceToResource(groupResourceHandle, OcPlatform.DEFAULT_INTERFACE); + } catch (OcException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } } @@ -255,12 +254,12 @@ public class GroupClient { public void findGroup() { Log.d(LOG_TAG, "finding group"); - Vector resourceTypes = new Vector(); - resourceTypes.add(groupResourceType); - OCStackResult result = groupSynObj.findGroup(resourceTypes); + Vector types = new Vector(); + types.add(groupResourceType); + OCStackResult result = groupManagerObj.findCandidateResources(types, 5); if (OCStackResult.OC_STACK_OK != result) { - Log.e(LOG_TAG, "findGroup returned error: " + result.name()); - return; + Log.e(LOG_TAG, + "findCandidateResources returned error: " + result.name()); } logMessage = "API RESULT : " + result.toString(); @@ -692,33 +691,6 @@ public class GroupClient { } } - /** - * This method is for unbinding and unregister all the found resources and - * groups. - */ - public void leaveGroup() { - groupSynObj.setGroupListener(null); - groupManagerObj.setFindCandidateResourceListener(null); - groupManagerObj.setActionListener(null); - - if (null != foundLightHandle) { - try { - OcPlatform.unregisterResource(foundLightHandle); - } catch (OcException e) { - e.printStackTrace(); - Log.i(LOG_TAG, "Resource Unregister Exception"); - } - } else { - Log.i(LOG_TAG, "foundLightHandle is NULL"); - } - if (null != groupResourceHandle) { - - groupSynObj.deleteGroup(groupResourceType); - } else { - Log.i(LOG_TAG, "groupResourceHandle is NULL"); - } - } - private void executeActionSet(String actonSetName, long delay) { try { OCStackResult result = groupManagerObj.executeActionSet( diff --git a/service/things-manager/sdk/java/jni/jniutil/inc/jni_things_manager_jvm.h b/service/things-manager/sdk/java/jni/jniutil/inc/jni_things_manager_jvm.h index 0a1138e..bd01a37 100644 --- a/service/things-manager/sdk/java/jni/jniutil/inc/jni_things_manager_jvm.h +++ b/service/things-manager/sdk/java/jni/jniutil/inc/jni_things_manager_jvm.h @@ -34,9 +34,6 @@ #define TM_SERVICE_GROUP_MANAGER_CLASS_PATH "org/iotivity/service/tm/GroupManager" #define TM_SERVICE_GROUP_MANAGER_CLASS_TYPE "Lorg/iotivity/service/tm/GroupManager;" -#define TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_PATH "org/iotivity/service/tm/GroupSynchronization" -#define TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_TYPE "Lorg/iotivity/service/tm/GroupSynchronization;" - #define TM_SERVICE_THINGS_CONFIGURATION_CLASS_PATH "org/iotivity/service/tm/ThingsConfiguration" #define TM_SERVICE_THINGS_CONFIGURATION_CLASS_TYPE "Lorg/iotivity/service/tm/ThingsConfigurationn;" diff --git a/service/things-manager/sdk/java/jni/jniutil/src/jni_things_manager_jvm.cpp b/service/things-manager/sdk/java/jni/jniutil/src/jni_things_manager_jvm.cpp index 6d85966..a8bb16c 100644 --- a/service/things-manager/sdk/java/jni/jniutil/src/jni_things_manager_jvm.cpp +++ b/service/things-manager/sdk/java/jni/jniutil/src/jni_things_manager_jvm.cpp @@ -22,7 +22,6 @@ #include "jni_things_manager_jvm.h" #include "jni_group_manager.h" -#include "jni_group_synchronization.h" #include "jni_things_configuration.h" #include "jni_things_maintenance.h" #include "jni_things_manager_util.h" @@ -84,7 +83,6 @@ class JObjectMap static JClassMap gJClassMapArray[] = { JClassMap(TM_SERVICE_GROUP_MANAGER_CLASS_PATH), - JClassMap(TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_PATH), JClassMap(TM_SERVICE_THINGS_CONFIGURATION_CLASS_PATH), JClassMap(TM_SERVICE_THINGS_MAINTENANCE_CLASS_PATH), JClassMap(TM_SERVICE_OCRESOURCE_PATH), @@ -100,7 +98,6 @@ static JClassMap gJClassMapArray[] = static JObjectMap gJObjectMapArray[] = { - JObjectMap(TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_PATH), JObjectMap(TM_SERVICE_THINGS_CONFIGURATION_CLASS_PATH), JObjectMap(TM_SERVICE_THINGS_MAINTENANCE_CLASS_PATH) }; @@ -118,18 +115,6 @@ static JNINativeMethod gGroupManagerMethodTable[] = { "nativeDeleteActionSet", "(Lorg/iotivity/base/OcResource;Ljava/lang/String;)I", (void *) JNIGroupManagerDeleteActionSet} }; -static JNINativeMethod gGroupSynchronizationMethodTable[] = -{ - { "nativeFindGroup", "(Ljava/util/Vector;)I", (void *) JNIGroupSynchronizationFindGroup}, - { "nativeCreateGroup", "(Ljava/lang/String;)I", (void *) JNIGroupSynchronizationCreateGroup}, - { "nativeJoinGroupString", "(Ljava/lang/String;Lorg/iotivity/base/OcResourceHandle;)I", (void *) JNIGroupSynchronizationJoinGroupString}, - { "nativeJoinGroupObject", "(Lorg/iotivity/base/OcResource;Lorg/iotivity/base/OcResourceHandle;)I", (void *) JNIGroupSynchronizationJoinGroupObject}, - { "nativeLeaveGroup", "(Ljava/lang/String;Lorg/iotivity/base/OcResourceHandle;)I", (void *) JNIGroupSynchronizationLeaveGroup}, - { "nativeLeaveGroupForResource", "(Lorg/iotivity/base/OcResource;Ljava/lang/String;Lorg/iotivity/base/OcResourceHandle;)I", (void *) JNIGroupSynchronizationLeaveGroupForResource}, - { "nativeDeleteGroup", "(Ljava/lang/String;)V", (void *) JNIGroupSynchronizationDeleteGroup}, - { "nativeGetGroupList", "()Ljava/util/Map;", (void *) JNIGroupSynchronizationGetGroupList} -}; - static JNINativeMethod gThingsConfigurationMethodTable[] = { { "nativeUpdateConfigurations", "(Lorg/iotivity/base/OcResource;Ljava/util/Map;)I", (void *) JNIThingsConfigurationUpdateConfigurations}, @@ -149,10 +134,6 @@ static JNINativeMethod gThingsMaintenanceMethodTable[] = static int gGroupManagerMethodTableSize = sizeof(gGroupManagerMethodTable) / sizeof( gGroupManagerMethodTable[0]); -static int gGroupSynchronizationMethodTableSize = sizeof(gGroupSynchronizationMethodTable) / sizeof( - gGroupSynchronizationMethodTable[0]); - - static int gThingsConfigurationMethodTableSize = sizeof(gThingsConfigurationMethodTable) / sizeof( gThingsConfigurationMethodTable[0]); @@ -387,18 +368,6 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) env->RegisterNatives(groupManagerClassRef, gGroupManagerMethodTable, gGroupManagerMethodTableSize); - // Group Synchronization - jclass groupSynchronizationClassRef = GetJClass(TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_PATH); - - if (NULL == groupSynchronizationClassRef) - { - LOGE("JNI_OnLoad: GetJClass gThingsManagerClass failed !"); - return JNI_ERR; - } - - env->RegisterNatives(groupSynchronizationClassRef, gGroupSynchronizationMethodTable, - gGroupSynchronizationMethodTableSize); - //Things Configuration jclass thingsConfigurationClassRef = GetJClass(TM_SERVICE_THINGS_CONFIGURATION_CLASS_PATH); diff --git a/service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization.h b/service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization.h deleted file mode 100644 index 2e5d505..0000000 --- a/service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization.h +++ /dev/null @@ -1,156 +0,0 @@ -/* ***************************************************************** - * - * Copyright 2015 Samsung Electronics All Rights Reserved. - * - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - -/** - * @file - * This file contains the declaration of Group Synchronization APIs - * for JNI implementation. - */ - -#ifndef JNI_GROUP_SYNCHRONIZATION_H_ -#define JNI_GROUP_SYNCHRONIZATION_H_ - -#include -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * API for finding a specific remote group when a resource tries to join a group. - * Callback is called when a group is found or not. - * - * @param resourceTypes - resource types of a group to find and join - * - * @return OCStackResult - return value of this API. - * It returns OC_STACK_OK if success. - * - * NOTE: It return OC_STACK ERROR when It was finding a group. - * You should call this api when the group finding process has stopped. - * OCStackResult is defined in ocstack.h. - */ - -JNIEXPORT jint JNICALL JNIGroupSynchronizationFindGroup -(JNIEnv *env, jobject interfaceObject, jobject resourceTypes); - -/** - * API for creating a new group. - * - * @param resourceType - resource type of a group to create - * - * @return OCStackResult - return value of this API. - * It returns OC_STACK_OK if success. - * - * NOTE: OCStackResult is defined in ocstack.h. - */ -JNIEXPORT jint JNICALL JNIGroupSynchronizationCreateGroup -(JNIEnv *env, jobject interfaceObject, jstring resourceType); - -/** - * API for joining a group. This API is used when a resource that has a group tries - * to find a specific remote resource and makes it join a group - * - * @param resourceType - resource type of a group to join. - * @param resourceHandle - resource handle to join a group. - * - * @return OCStackResult - return value of this API. - * It returns OC_STACK_OK if success. - * - * NOTE: If you want to join the resource in the remote(other) process, use the API - * jniThingsManagerJoinGroupObject instead of this. - * OCStackResult is defined in ocstack.h. - */ -JNIEXPORT jint JNICALL JNIGroupSynchronizationJoinGroupString -(JNIEnv *env, jobject interfaceObject, jstring resourceType, jobject resourceHandle); - -/** - * API for joining a group. This API is used when a resource that - * doesn't have a group tries to find and join a specific remote group. - * - * @param resource - group resource pointer to join. - * @param resourceHandle - resource handle to join a group. - * - * @return OCStackResult - return value of this API. - * It returns OC_STACK_OK if success. - * - * NOTE: NOTE: If you want to join the resource in the same process, use the API - * jniThingsManagerJoinGroupString instead of this. - * OCStackResult is defined in ocstack.h. - */ -JNIEXPORT jint JNICALL JNIGroupSynchronizationJoinGroupObject -(JNIEnv *env, jobject interfaceObject, jobject resource, jobject resourceHandle); - -/** - * API for leaving a joined group. - * - * @param resourceType - resource type of a group to leave. - * @param resourceHandle - resource handle to join a group. - * - * @return OCStackResult - return value of this API. - * It returns OC_STACK_OK if success. - * - * NOTE: OCStackResult is defined in ocstack.h. - */ -JNIEXPORT jint JNICALL JNIGroupSynchronizationLeaveGroup -(JNIEnv *env, jobject interfaceObject, jstring resourceType, jobject resourceHandle); - -/** - * API for leaving a joined group. - * - * @param resource - resource of a group to leave. - * @param resourceType - resource type of a group to leave. - * @param resourceHandle - resource handle to join a group. - * - * @return OCStackResult - return value of this API. - * It returns OC_STACK_OK if success. - * - * NOTE: OCStackResult is defined in ocstack.h. - */ -JNIEXPORT jint JNICALL JNIGroupSynchronizationLeaveGroupForResource -(JNIEnv *env, jobject interfaceObject, jobject resource, jstring resourceType, - jobject resourceHandle); - -/** - * API for deleting a group. - * - * @param collectionResourceType - resource type of a group to delete. - * - * @return void - */ -JNIEXPORT void JNICALL JNIGroupSynchronizationDeleteGroup -(JNIEnv *env, jobject interfaceObject, jstring collectionResourceType); - -/** - * API for getting a list of joined groups. - * - * @return std::map - return value of this API. - * It returns group resource type and group resource handle as a map type. - */ -JNIEXPORT jobject JNICALL JNIGroupSynchronizationGetGroupList -(JNIEnv *env, jobject interfaceObject); - -#ifdef __cplusplus -} -#endif -#endif //JNI_GROUP_SYNCHRONIZATION_H_ diff --git a/service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization_callbacks.h b/service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization_callbacks.h deleted file mode 100644 index f84d5e3..0000000 --- a/service/things-manager/sdk/java/jni/tm/inc/jni_group_synchronization_callbacks.h +++ /dev/null @@ -1,52 +0,0 @@ -/* ***************************************************************** - * - * Copyright 2015 Samsung Electronics All Rights Reserved. - * - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - -/** - * @file - * This file contains the declaration of GroupSynchronizationCallbacks class. - */ - -#ifndef JNI_GROUP_SYNCHRONIZATION_CALLBACKS_H_ -#define JNI_GROUP_SYNCHRONIZATION_CALLBACKS_H_ - -#include - -#include "GroupSynchronization.h" - -/** - * This class provides callback function for group Synchronization. - */ -class GroupSynchronizationCallbacks -{ - - public: - GroupSynchronizationCallbacks() {} - virtual ~GroupSynchronizationCallbacks() {} - - /** - * This callback method is called to notify whether group is found or not. - * - * @param resource - Resource URI - */ - static void onFoundGroup(std::shared_ptr resource); - - -}; -#endif //JNI_GROUP_SYNCHRONIZATION_CALLBACKS_H_ diff --git a/service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization.cpp b/service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization.cpp deleted file mode 100644 index 1ab32fe..0000000 --- a/service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization.cpp +++ /dev/null @@ -1,375 +0,0 @@ -/* ***************************************************************** - * - * Copyright 2015 Samsung Electronics All Rights Reserved. - * - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - -#include "jni_group_synchronization.h" -#include "JniOcResource.h" -#include "JniOcResourceHandle.h" -#include "GroupManager.h" -#include "ActionSet.h" -#include "jni_things_manager_jvm.h" -#include "jni_things_manager_util.h" -#include "jni_group_synchronization_callbacks.h" -#include "jni_action_set.h" - -using namespace OC; -using namespace OIC; - -/** - * GroupSynchronization static object - */ -static GroupSynchronization g_GroupSynchronization; - -JNIEXPORT jint JNICALL JNIGroupSynchronizationFindGroup(JNIEnv *env, jobject interfaceObject, - jobject jResourceTypes) -{ - LOGI("JNIGroupSynchronizationFindGroup: Enter"); - - if (!jResourceTypes) - { - LOGE("JNIGroupSynchronizationFindGroup: jResourceTypes is NULL!"); - return OC_STACK_INVALID_PARAM; - } - - OCStackResult ocResult = OC_STACK_ERROR; - try - { - ocResult = g_GroupSynchronization.findGroup((convertStringVector(env, jResourceTypes)), - &GroupSynchronizationCallbacks::onFoundGroup); - if (OC_STACK_OK != ocResult) - { - LOGE("JNIGroupSynchronizationFindGroup: findGroup failed!"); - return ocResult; - } - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationFindGroup: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - return ocResult; - } - LOGI("JNIGroupSynchronizationFindGroup: Exit"); - return ocResult; -} - -JNIEXPORT jint JNICALL JNIGroupSynchronizationCreateGroup(JNIEnv *env, jobject interfaceObject, - jstring jResourceType) -{ - LOGI("JNIGroupSynchronizationCreateGroup: Enter"); - - if (!jResourceType) - { - LOGE("JNIGroupSynchronizationCreateGroup: jResourceType is NULL!"); - return OC_STACK_INVALID_PARAM; - } - - OCStackResult ocResult = OC_STACK_ERROR; - - const char *resourceTypePointer = env->GetStringUTFChars(jResourceType, NULL); - if (NULL == resourceTypePointer) - { - LOGE("JNIGroupSynchronizationCreateGroup: Failed to convert jstring to char string!"); - return OC_STACK_NO_MEMORY; - } - - std::string resourceType(resourceTypePointer); - try - { - ocResult = g_GroupSynchronization.createGroup(resourceType); - if (OC_STACK_OK != ocResult) - { - LOGE("JNIGroupSynchronizationCreateGroup: CreateGroup failed!"); - } - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationCreateGroup: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - } - env->ReleaseStringUTFChars(jResourceType, resourceTypePointer); - LOGI("JNIGroupSynchronizationCreateGroup: Exit"); - return ocResult; -} - -JNIEXPORT jint JNICALL JNIGroupSynchronizationJoinGroupString(JNIEnv *env, jobject interfaceObject, - jstring jResourceType, jobject jResourceHandle) -{ - LOGI("JNIGroupSynchronizationJoinGroupString: Enter"); - - if ((!jResourceType) || (!jResourceHandle)) - { - LOGE("JNIGroupSynchronizationJoinGroupString: jResourceType or jResourceHandle is NULL!"); - return OC_STACK_INVALID_PARAM; - } - - OCStackResult ocResult = OC_STACK_ERROR; - - const char *resourceTypePointer = env->GetStringUTFChars(jResourceType, NULL); - if (NULL == resourceTypePointer) - { - LOGE("JNIGroupSynchronizationJoinGroupString: Failed to convert jstring to char string!"); - return OC_STACK_NO_MEMORY; - } - - std::string resourceType(resourceTypePointer); - - JniOcResourceHandle *jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(env, - jResourceHandle); - try - { - OCResourceHandle ocResourceHandle = jniOcResourceHandle->getOCResourceHandle(); - ocResult = g_GroupSynchronization.joinGroup(resourceType, ocResourceHandle); - if (OC_STACK_OK != ocResult) - { - LOGE("JNIGroupSynchronizationJoinGroupString: joinGroup failed!"); - } - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationJoinGroupString: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - } - env->ReleaseStringUTFChars(jResourceType, resourceTypePointer); - LOGI("JNIGroupSynchronizationJoinGroupString: Exit"); - return ocResult; -} - -JNIEXPORT jint JNICALL JNIGroupSynchronizationJoinGroupObject(JNIEnv *env, jobject interfaceObject, - jobject jResource, jobject jResourceHandle) -{ - LOGI("JNIGroupSynchronizationJoinGroupObject: Enter"); - - if ((!jResource) || (!jResourceHandle)) - { - LOGE("JNIGroupSynchronizationJoinGroupObject: jResource or jResourceHandle is NULL!"); - return OC_STACK_INVALID_PARAM; - } - - OCStackResult ocResult = OC_STACK_ERROR; - - std::shared_ptr ocResource; - JniOcResource *jniOcResource = JniOcResource::getJniOcResourcePtr(env, jResource); - if (jniOcResource) - { - ocResource = jniOcResource->getOCResource(); - } - - if (NULL == ocResource.get()) - { - LOGE("JNIGroupSynchronizationJoinGroupObject: Failed to get OCResource object!"); - return ocResult; - } - - JniOcResourceHandle *jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(env, - jResourceHandle); - - try - { - OCResourceHandle resHandle = jniOcResourceHandle->getOCResourceHandle(); - - ocResult = g_GroupSynchronization.joinGroup(ocResource, resHandle); - if (OC_STACK_OK != ocResult) - { - LOGE("JNIGroupSynchronizationJoinGroupObject: joinGroup failed!"); - return ocResult; - } - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationJoinGroupObject: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - return ocResult; - } - LOGI("JNIGroupSynchronizationJoinGroupObject: Exit"); - return ocResult; -} - -JNIEXPORT jint JNICALL JNIGroupSynchronizationLeaveGroup(JNIEnv *env, jobject interfaceObject, - jstring jResourceType, - jobject jResourceHandle) -{ - LOGI("JNIGroupSynchronizationLeaveGroup: Enter"); - - if ((!jResourceType) || (!jResourceHandle)) - { - LOGE("JNIGroupSynchronizationLeaveGroup: jResourceType or jResourceHandle is NULL!"); - return OC_STACK_INVALID_PARAM; - } - - OCStackResult ocResult = OC_STACK_ERROR; - - const char *resourceTypePointer = env->GetStringUTFChars(jResourceType, NULL); - if (NULL == resourceTypePointer) - { - LOGE("JNIGroupSynchronizationLeaveGroup: Failed to convert jstring to char string!"); - return OC_STACK_NO_MEMORY; - } - - std::string resourceType(resourceTypePointer); - JniOcResourceHandle *jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(env, - jResourceHandle); - - try - { - OCResourceHandle ocResourceHandle = jniOcResourceHandle->getOCResourceHandle(); - - ocResult = g_GroupSynchronization.leaveGroup(resourceType, ocResourceHandle); - if (OC_STACK_OK != ocResult) - { - LOGE("JNIGroupSynchronizationLeaveGroup: leaveGroup failed!"); - } - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationLeaveGroup: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - } - env->ReleaseStringUTFChars(jResourceType, resourceTypePointer); - LOGI("JNIGroupSynchronizationLeaveGroup: Exit"); - return ocResult; -} - -JNIEXPORT jint JNICALL JNIGroupSynchronizationLeaveGroupForResource(JNIEnv *env, - jobject interfaceObject, - jobject jResource, - jstring jResourceType, - jobject jResourceHandle) -{ - LOGI("JNIGroupSynchronizationLeaveGroupForResource: Enter"); - - if ((!jResource) || (!jResourceType) || (!jResourceHandle)) - { - LOGE("JNIGroupSynchronizationLeaveGroupForResource: jResourceType or jResourceHandle is NULL!"); - return OC_STACK_INVALID_PARAM; - } - - OCStackResult ocResult = OC_STACK_ERROR; - - JniOcResource *jniOcResource = JniOcResource::getJniOcResourcePtr(env, jResource); - if (NULL == jniOcResource) - { - LOGE("JNIGroupSynchronizationLeaveGroupForResource: Failed to get jni OcResource!"); - return ocResult; - } - - std::shared_ptr ocResource = jniOcResource->getOCResource(); - if (NULL == ocResource.get()) - { - LOGE("JNIGroupSynchronizationLeaveGroupForResource: Failed to get OCResource object!"); - return ocResult; - } - - const char *resourceTypePointer = env->GetStringUTFChars(jResourceType, NULL); - if (NULL == resourceTypePointer) - { - LOGE("JNIGroupSynchronizationLeaveGroupForResource: Failed to convert jstring to char string!"); - return OC_STACK_NO_MEMORY; - } - - std::string resourceType(resourceTypePointer); - JniOcResourceHandle *jniOcResourceHandle = JniOcResourceHandle::getJniOcResourceHandlePtr(env, - jResourceHandle); - - try - { - OCResourceHandle ocResourceHandle = jniOcResourceHandle->getOCResourceHandle(); - - ocResult = g_GroupSynchronization.leaveGroup(ocResource, resourceType, ocResourceHandle); - if (OC_STACK_OK != ocResult) - { - LOGE("JNIGroupSynchronizationLeaveGroupForResource: leaveGroup failed!"); - } - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationLeaveGroupForResource: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - } - - env->ReleaseStringUTFChars(jResourceType, resourceTypePointer); - LOGI("JNIGroupSynchronizationLeaveGroupForResource: Exit"); - return ocResult; -} - -JNIEXPORT void JNICALL JNIGroupSynchronizationDeleteGroup(JNIEnv *env, jobject interfaceObject, - jstring jcollectionResourceType) -{ - LOGI("JNIGroupSynchronizationDeleteGroup: Enter"); - - if (!jcollectionResourceType) - { - LOGE("JNIGroupSynchronizationDeleteGroup: jcollectionResourceType is NULL!"); - return; - } - - const char *collectionResourceTypePointer = env->GetStringUTFChars(jcollectionResourceType, NULL); - if (NULL == collectionResourceTypePointer) - { - LOGE("JNIGroupSynchronizationDeleteGroup: Failed to convert jstring to char string!"); - return; - } - - std::string collectionResourceType(collectionResourceTypePointer); - try - { - g_GroupSynchronization.deleteGroup(collectionResourceType); - } - catch (InitializeException &e) - { - LOGE("JNIGroupSynchronizationDeleteGroup: Exception occurred! %s, %d", e.reason().c_str(), - e.code()); - } - - env->ReleaseStringUTFChars(jcollectionResourceType, collectionResourceTypePointer); - LOGI("JNIGroupSynchronizationDeleteGroup: Exit"); -} - -JNIEXPORT jobject JNICALL JNIGroupSynchronizationGetGroupList(JNIEnv *env, jobject interfaceObject) -{ - LOGI("JNIGroupSynchronizationGetGroupList: Enter"); - - std::map< std::string, OCResourceHandle> groupListMap; - jobject jGroupListMap; - - groupListMap = g_GroupSynchronization.getGroupList(); - if (groupListMap.empty()) - { - LOGD("getGroupList Map is empty"); - return NULL; - } - - jclass clazz = env->FindClass("java/util/HashMap"); - jmethodID init = env->GetMethodID(clazz, "", "()V"); - jGroupListMap = env->NewObject(clazz, init); - jmethodID putMethod = env->GetMethodID(clazz, "put", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); - - for (auto it = groupListMap.begin(); it != groupListMap.end(); ++it) - { - jstring key = (*env).NewStringUTF( (*it).first.c_str() ); - JniOcResourceHandle *jniOcResourceHandle = new JniOcResourceHandle(((*it).second)); - jobject value = ocResourceHandleToJava(env, reinterpret_cast(jniOcResourceHandle)); - env->CallObjectMethod(jGroupListMap, putMethod, key, value); - } - - LOGI("JNIGroupSynchronizationGetGroupList: Exit"); - return jGroupListMap; -} - - diff --git a/service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization_callbacks.cpp b/service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization_callbacks.cpp deleted file mode 100644 index 867831b..0000000 --- a/service/things-manager/sdk/java/jni/tm/src/jni_group_synchronization_callbacks.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/* ***************************************************************** - * - * Copyright 2015 Samsung Electronics All Rights Reserved. - * - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - -#include "jni_group_synchronization_callbacks.h" -#include "JniOcResource.h" -#include "GroupSynchronization.h" -#include "jni_things_manager_jvm.h" -#include "jni_things_manager_util.h" -#include "jni_string.h" - -#define LOG_TAG "GroupSynchronizationCallbacks" - -#define METHOD_ONGROUP_FIND_CALLBACK "(" TM_SERVICE_OCRESOURCE_TYPE")V" - -void GroupSynchronizationCallbacks::onFoundGroup(std::shared_ptr groupResource) -{ - LOGI("FindGroup : Enter"); - - if (NULL == groupResource.get()) - { - LOGE("FindGroup : Invalid received GroupResource!"); - return; - } - - JNIEnv *env = ThingsManagerJVM::getEnv(); - if (env == NULL) - { - LOGE("FindGroup : Getting JNIEnv failed"); - return; - } - - // Get ThingsManagerCallback class reference - jclass groupSynchronizationCallbacks = GetJClass(TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_PATH); - if (NULL == groupSynchronizationCallbacks) - { - LOGE("FindGroup : GetJClass TMServiceCallbackInterface failed"); - ThingsManagerJVM::releaseEnv(); - return; - } - - // Get the ThingsManagerCallback class instance - jobject jobjectCallback = GetJObjectInstance(TM_SERVICE_GROUP_SYNCHRONIZATION_CLASS_PATH); - if (NULL == jobjectCallback) - { - LOGE("FindGroup: getInstance failed!"); - ThingsManagerJVM::releaseEnv(); - return; - } - - // Get onGroupFindCallback method reference - jmethodID method_id = env->GetMethodID(groupSynchronizationCallbacks, - "onGroupFindCallback", - METHOD_ONGROUP_FIND_CALLBACK); - if (NULL == method_id) - { - LOGE("FindGroup : GetMethodID failed"); - ThingsManagerJVM::releaseEnv(); - return; - } - - if ((env)->ExceptionCheck()) - { - LOGE("FindGroup : ExceptionCheck failed"); - ThingsManagerJVM::releaseEnv(); - return; - } - - JniOcResource *jniOcResource = new JniOcResource(groupResource); - if (!jniOcResource) - { - LOGE("FindGroup : groupResource is invalid!"); - ThingsManagerJVM::releaseEnv(); - return; - } - - jobject resource = OcResourceToJava(env, reinterpret_cast(jniOcResource)); - - env->CallVoidMethod(jobjectCallback, method_id, resource); - - if ((env)->ExceptionCheck()) - { - LOGE("FindGroup : CallVoidMethod failed"); - ThingsManagerJVM::releaseEnv(); - return; - } - - ThingsManagerJVM::releaseEnv(); - LOGI("FindGroup : Exit"); -} diff --git a/service/things-manager/sdk/java/src/org/iotivity/service/tm/GroupSynchronization.java b/service/things-manager/sdk/java/src/org/iotivity/service/tm/GroupSynchronization.java deleted file mode 100644 index 2d461bb..0000000 --- a/service/things-manager/sdk/java/src/org/iotivity/service/tm/GroupSynchronization.java +++ /dev/null @@ -1,283 +0,0 @@ -/* ***************************************************************** - * - * Copyright 2015 Samsung Electronics All Rights Reserved. - * - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - ******************************************************************/ - -/** - * @file - * This file contains class which provides functions - * related to Group Synchronization. - */ - -package org.iotivity.service.tm; - -import java.util.Map; -import java.util.Vector; - -import org.iotivity.base.OcException; -import org.iotivity.base.OcResource; -import org.iotivity.base.OcResourceHandle; - -import android.util.Log; - -/** - * This class provides a set of APIs relating to Group Synchronization. - */ -public class GroupSynchronization { - - private IFindGroupListener groupListener; - private final String LOG_TAG = this.getClass() - .getSimpleName(); - - private static GroupSynchronization s_groupSynchronizationInstance; - - // Native methods - private static native int nativeFindGroup( - Vector collectionResourceTypes); - - private static native int nativeCreateGroup(String collectionResourceType); - - private static native int nativeJoinGroupString( - String collectionResourceType, OcResourceHandle resourceHandle); - - private static native int nativeJoinGroupObject(OcResource resource, - OcResourceHandle resourceHandle); - - private static native int nativeLeaveGroup(String collectionResourceType, - OcResourceHandle resourceHandle); - - private static native int nativeLeaveGroupForResource(OcResource resource, - String collectionResourceType, OcResourceHandle resourceHandle); - - private static native void nativeDeleteGroup(String collectionResourceType); - - private static native Map nativeGetGroupList(); - - static { - System.loadLibrary("gnustl_shared"); - System.loadLibrary("oc_logger"); - System.loadLibrary("connectivity_abstraction"); - System.loadLibrary("ca-interface"); - System.loadLibrary("octbstack"); - System.loadLibrary("oc"); - System.loadLibrary("TGMSDKLibrary"); - System.loadLibrary("ocstack-jni"); - System.loadLibrary("things-manager-jni"); - } - - /** - * Function for Getting instance of GroupSynchronization object. - * - * @return GroupSynchronization instance. - */ - public static GroupSynchronization getInstance() { - if (null == s_groupSynchronizationInstance) { - s_groupSynchronizationInstance = new GroupSynchronization(); - } - return s_groupSynchronizationInstance; - } - - /** - * Provides interface for getting group discovery status. - */ - public interface IFindGroupListener { - /** - * This callback method will be called to notify whether group is found - * or not. - * - * @param resource - * URI of resource. - */ - public void onGroupFindCallback(OcResource resource); - } - - /** - * Set listener for receiving notification on whether the requested group is - * found or not. - * - * @param listener - * IFindGroupListener to receive group discovery status. - */ - public void setGroupListener(IFindGroupListener listener) { - groupListener = listener; - } - - /** - * API for finding a specific remote group when a resource tries to join a - * group. - *

- * IFindGroupListener::onGroupFindCallback will be called to notify whether - * requested group found or not. - *

- * - * @param resourceTypes - * resource types of a group to find and join - * - * @return OCStackResult - return value of this API. It returns OC_STACK_OK - * if success. - */ - public OCStackResult findGroup(Vector resourceTypes) { - OCStackResult result; - if (null == groupListener) { - result = OCStackResult.OC_STACK_ERROR; - } else { - int ordinal = nativeFindGroup(resourceTypes); - result = OCStackResult.conversion(ordinal); - } - return result; - } - - /** - * API for creating a new group. - * - * @param resourceType - * resource type of a group to create - * - * @return OCStackResult - return value of this API. It returns OC_STACK_OK - * if success. - */ - public OCStackResult createGroup(String resourceType) { - OCStackResult result; - int ordinal = nativeCreateGroup(resourceType); - result = OCStackResult.conversion(ordinal); - return result; - } - - /** - * API for joining a group. This API is used when a resource that has a - * group tries to find a specific remote resource and makes it join a group. - * - * @param resourceType - * resource type of a group to join. - * @param resourceHandle - * resource handle to join a group. - * - * @return OCStackResult - return value of this API. It returns OC_STACK_OK - * if success. - */ - public OCStackResult joinGroup(String resourceType, - OcResourceHandle resourceHandle) { - OCStackResult result; - - int ordinal = nativeJoinGroupString(resourceType, resourceHandle); - result = OCStackResult.conversion(ordinal); - - return result; - } - - /** - * API for joining a group. This API is used when a resource that doesn't - * have a group tries to find and join a specific remote group. - * - * @param resource - * group resource to join. - * @param resourceHandle - * resource handle to join a group. - * - * @return OCStackResult - return value of this API. It returns OC_STACK_OK - * if success. - */ - public OCStackResult joinGroup(OcResource resource, - OcResourceHandle resourceHandle) throws OcException { - - OCStackResult result; - int ordinal = nativeJoinGroupObject(resource, resourceHandle); - result = OCStackResult.conversion(ordinal); - - return result; - } - - /** - * API for leaving a joined group. - * - * @param resourceType - * resource type of a group to leave. - * @param resourceHandle - * resource handle to leave a group. - * - * @return OCStackResult - return value of this API. It returns OC_STACK_OK - * if success. - */ - public OCStackResult leaveGroup(String resourceType, - OcResourceHandle resourceHandle) { - - OCStackResult result; - int ordinal = nativeLeaveGroup(resourceType, resourceHandle); - result = OCStackResult.conversion(ordinal); - - return result; - } - - /** - * API for leaving a joined group. - * - * @param resource - * resource of a group to leave. - * @param resourceType - * resource type of a group to leave. - * @param resourceHandle - * resource handle to leave a group. - * - * @return OCStackResult - return value of this API. It returns OC_STACK_OK - * if success. - */ - public OCStackResult leaveGroup(OcResource resource, String resourceType, - OcResourceHandle resourceHandle) { - - OCStackResult result; - int ordinal = nativeLeaveGroupForResource(resource, resourceType, - resourceHandle); - result = OCStackResult.conversion(ordinal); - - return result; - } - - /** - * API for deleting a group. - * - * @param collectionResourceType - * resource type of a group to delete. - */ - public void deleteGroup(String collectionResourceType) { - nativeDeleteGroup(collectionResourceType); - } - - /** - * API for getting a list of joined groups. - * - * @return Returns group resource type and group resource handle as a map - * table. - */ - public Map getGroupList() { - return nativeGetGroupList(); - } - - // ******** JNI UTILITY FUNCTION **********// - - /* - * This callback method is called from JNI to notify whether group is found - * or not. - */ - public void onGroupFindCallback(OcResource resource) { - if (null != groupListener) { - Log.i("ThingsManagerCallback : onGroupFindCallback", - "Received Callback from JNI"); - groupListener.onGroupFindCallback(resource); - } - } -} -- 2.7.4