Added ExtraInfo representation to the Notification Service Message
authorabitha.s <abitha.s@samsung.com>
Thu, 22 Sep 2016 09:32:57 +0000 (15:02 +0530)
committerUze Choi <uzchoi@samsung.com>
Wed, 28 Sep 2016 12:31:42 +0000 (12:31 +0000)
1. Modified the required changes for ExtraInfo in C++ layer
2. Modified the JNI for extraInfo conversions
3. Added a feature to create NonSecure resources while building with Secured option

Patch 2 : updated the review comments

Change-Id: I54f13ec9de564b52dbe86f2b2731a32350175223
Signed-off-by: abitha.s <abitha.s@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/12157
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
18 files changed:
service/notification/SConscript
service/notification/android/notification-service/src/main/java/org/iotivity/service/ns/common/Message.java
service/notification/android/notification-service/src/main/java/org/iotivity/service/ns/provider/ProviderService.java
service/notification/android/notification-service/src/main/jni/Android.mk
service/notification/android/notification-service/src/main/jni/common/JniNotificationCommon.cpp
service/notification/android/notification-service/src/main/jni/common/JniNotificationCommon.h
service/notification/android/notification-service/src/main/jni/consumer/JniNotificationConsumer.cpp
service/notification/android/notification-service/src/main/jni/provider/JniNotificationProvider.cpp [changed mode: 0644->0755]
service/notification/android/notification-service/src/main/jni/provider/JniNotificationProvider.h
service/notification/cpp-wrapper/common/NSMessage.cpp
service/notification/cpp-wrapper/common/NSMessage.h
service/notification/cpp-wrapper/common/NSUtils.h
service/notification/cpp-wrapper/consumer/SConscript
service/notification/cpp-wrapper/examples/linux/SConscript
service/notification/cpp-wrapper/provider/SConscript
service/notification/cpp-wrapper/provider/inc/NSProviderService.h
service/notification/cpp-wrapper/provider/src/NSProviderService.cpp
service/notification/examples/android/NotiProviderExample/app/src/main/java/com/sec/notiproviderexample/ProviderSample.java [changed mode: 0644->0755]

index 5eb4b77..d93276d 100755 (executable)
@@ -122,9 +122,5 @@ if target_os == 'linux':
 # Go to build sample apps
 SConscript('examples/SConscript')
 
-# Go to build jni
-if target_os == 'android':
-    SConscript('android/SConscript')
-
 # Go to build c++ wrapper
 SConscript('cpp-wrapper/SConscript')
index 6f6f505..4d2f2cd 100755 (executable)
@@ -21,6 +21,7 @@
 package org.iotivity.service.ns.common;
 
 import android.util.Log;
+import org.iotivity.base.OcRepresentation;
 
 /**
   * @class   Message
@@ -58,7 +59,8 @@ public class Message
     public String mTitle                       = null;
     public String mContentText                 = null;
     public MediaContents mMediaContents        = null;
-    public String mTopic                  = null;
+    public String mTopic                       = null;
+    public OcRepresentation mExtraInfo         = null;
 
     private long mNativeHandle                 = 0;
 
@@ -120,6 +122,12 @@ public class Message
     {
         return mTopic;
     }
+
+    public OcRepresentation getExtraInfo()
+    {
+        return mExtraInfo;
+    }
+
     public void setSourceName (String sourceName)
     {
         mSourceName = sourceName;
@@ -159,4 +167,9 @@ public class Message
     {
         mTopic = topic;
     }
+
+    public void setExtraInfo(OCRepresentation extraInfo)
+    {
+        mExtraInfo = extraInfo;
+    }
 }
index 428b022..7f69d2f 100644 (file)
@@ -55,9 +55,11 @@ public class ProviderService
 
     public int start(OnConsumerSubscribedListener  subscribedListener,
                      OnMessageSynchronizedListener  messageSynchronized,
-                     boolean subControllability, String userInfo) throws NSException
+                     boolean subControllability, String userInfo, 
+                     boolean resourceSecurity) throws NSException
     {
-        return nativeStart(subscribedListener, messageSynchronized,subControllability,userInfo);
+        return nativeStart(subscribedListener, messageSynchronized,
+                            subControllability, userInfo, resourceSecurity);
     }
 
     public int stop() throws NSException
@@ -115,9 +117,10 @@ public class ProviderService
         public void onMessageSynchronized(SyncInfo syncInfo);
     }
 
-    public native int  nativeStart(OnConsumerSubscribedListener    subscribedListener,
-                                                 OnMessageSynchronizedListener   messageSynchronized,
-                                                 boolean subControllability, String userInfo) throws NSException;
+    public native int  nativeStart(OnConsumerSubscribedListener subscribedListener,
+                                                 OnMessageSynchronizedListener messageSynchronized,
+                                                 boolean subControllability, String userInfo, 
+                                                 boolean resourceSecurity) throws NSException;
     public native int  nativeStop() throws NSException;
     public native int  nativeSendMessage(Message message) throws NSException;
     public native void  nativeSendSyncInfo( long messageId , int type) throws NSException;
index 13a1dfb..7dbcb90 100755 (executable)
@@ -36,6 +36,8 @@ LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/c_common
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/c_common/oic_string/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/oc_logger/include
+LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/extlibs/boost/boost_1_58_0
+LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/android/android_api/base/jni
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/service/notification/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/service/notification/src/common
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/service/notification/src/consumer
@@ -84,6 +86,8 @@ LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/c_common
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/c_common/oic_string/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/resource/oc_logger/include
+LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/extlibs/boost/boost_1_58_0
+LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/android/android_api/base/jni
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/service/notification/include
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/service/notification/src/common
 LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/service/notification/src/provider
@@ -96,4 +100,4 @@ LOCAL_C_INCLUDES += $(OIC_SRC_DIR)/extlibs/
 LOCAL_SRC_FILES := provider/JniNotificationProvider.cpp
 LOCAL_SRC_FILES += common/JniNotificationCommon.cpp
 
-include $(BUILD_SHARED_LIBRARY)
\ No newline at end of file
+include $(BUILD_SHARED_LIBRARY)
index 2852195..595d355 100755 (executable)
 extern "C" {\r
 #endif\r
 \r
-#define  LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)\r
-#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)\r
-#define  LOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__)\r
-#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)\r
-\r
 #define JNI_EXCEPTION 1000\r
 #define JNI_NO_NATIVE_POINTER 1001\r
 #define JNI_INVALID_VALUE 1002\r
index 2b85992..78352ef 100755 (executable)
@@ -20,8 +20,9 @@
 \r
 #include "JniNotificationConsumer.h"\r
 #include "NSConsumerService.h"\r
+#include "JniOcRepresentation.h"\r
 \r
-static JavaVM *g_jvm = NULL;\r
+static JavaVM *g_jvm_consumer = NULL;\r
 \r
 static jobject g_obj_postListener = NULL;\r
 static jobject g_obj_syncListener = NULL;\r
@@ -38,18 +39,20 @@ jclass g_cls_Message_Type;
 jclass g_cls_ProviderState;\r
 jclass g_cls_Topic;\r
 jclass g_cls_TopicsList;\r
+jclass g_cls_OcRepresentation;\r
+jmethodID g_mid_OcRepresentation_N_ctor_bool = NULL;\r
 \r
 static JNIEnv *GetJNIEnv(jint *ret)\r
 {\r
     JNIEnv *env = NULL;\r
 \r
-    *ret = g_jvm->GetEnv((void **) &env, JNI_CURRENT_VERSION);\r
+    *ret = g_jvm_consumer->GetEnv((void **) &env, JNI_CURRENT_VERSION);\r
     switch (*ret)\r
     {\r
         case JNI_OK:\r
             return env;\r
         case JNI_EDETACHED:\r
-            if (g_jvm->AttachCurrentThread(&env, NULL) != JNI_OK)\r
+            if (g_jvm_consumer->AttachCurrentThread(&env, NULL) != JNI_OK)\r
             {\r
                 LOGE ("Failed to get the environment");\r
                 return NULL;\r
@@ -607,7 +610,33 @@ jobject getJavaMessage(JNIEnv *env, OIC::Service::NSMessage *message)
         }\r
         env->SetObjectField(obj_message, fid_type, jType);\r
     }\r
+    \r
+    LOGD("Reading OCRepresentation Object from Native");\r
 \r
+    OC::OCRepresentation *ocRepresentation = new OC::OCRepresentation(message->getExtraInfo());\r
+    jlong handle = reinterpret_cast<jlong>(ocRepresentation);\r
+    jobject jRepresentation = env->NewObject(g_cls_OcRepresentation, g_mid_OcRepresentation_N_ctor_bool,\r
+                              handle, true);\r
+    if (!jRepresentation)\r
+    {\r
+        LOGE("Failed to create OcRepresentation");\r
+        delete ocRepresentation;\r
+    }\r
+    else\r
+    {\r
+        LOGD("Created OCRepresentation Object from Native");\r
+    }\r
+    jfieldID fid_extraInfo = env->GetFieldID(cls_message, "mExtraInfo",\r
+                             "Lorg/iotivity/base/OcRepresentation;");\r
+    if (!fid_extraInfo)\r
+    {\r
+        LOGE("Failed to get mExtraInfo for Message");\r
+        delete ocRepresentation;\r
+        return NULL;\r
+    }\r
+    LOGD ("setting extraInfo field");\r
+    env->SetObjectField(obj_message, fid_extraInfo, jRepresentation);\r
+    \r
     env->DeleteLocalRef(cls_message);\r
     LOGD ("ConsumerService_getJavaMessage - OUT");\r
     return obj_message;\r
@@ -625,7 +654,7 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!jDiscoverListener)\r
     {\r
         LOGE ("Failed to Get jDiscoverListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -633,7 +662,7 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!obj_provider)\r
     {\r
         LOGE ("Failed to Get Provider Object");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -641,7 +670,7 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jDiscoverListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -651,14 +680,14 @@ void onDiscoverProvider(OIC::Service::NSProvider *provider)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onProviderDiscovered");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
     env->CallVoidMethod(jDiscoverListener, mid, obj_provider);\r
 \r
     env->DeleteLocalRef(jDiscoverListener);\r
-    if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
     LOGD ("ConsumerService_onDiscoverProvider - OUT");\r
     return ;\r
 }\r
@@ -675,14 +704,14 @@ void onProviderState( OIC::Service::NSProviderState state)
     if (!jAcceptListener)\r
     {\r
         LOGE ("Failed to Get jAcceptListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jobject obj_state = getJavaProviderState(env, state);\r
     if (!obj_state)\r
     {\r
         LOGE ("Failed to Get ProviderState Object");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -690,7 +719,7 @@ void onProviderState( OIC::Service::NSProviderState state)
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jAcceptListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -700,13 +729,13 @@ void onProviderState( OIC::Service::NSProviderState state)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onProviderState");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     env->CallVoidMethod(jAcceptListener, mid, obj_state);\r
 \r
     env->DeleteLocalRef(jAcceptListener);\r
-    if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
     LOGD ("ConsumerService_onProviderState -OUT");\r
     return ;\r
 \r
@@ -724,7 +753,7 @@ void onMessagePosted(OIC::Service::NSMessage *message)
     if (!jPostListener)\r
     {\r
         LOGE ("Failed to Get jPostListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -732,14 +761,14 @@ void onMessagePosted(OIC::Service::NSMessage *message)
     if (!obj_message)\r
     {\r
         LOGE ("Failed to Get Message Object");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jclass cls = env->GetObjectClass(jPostListener);\r
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jPostListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -749,14 +778,14 @@ void onMessagePosted(OIC::Service::NSMessage *message)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onMessageReceived");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
     env->CallVoidMethod(jPostListener, mid, obj_message);\r
 \r
     env->DeleteLocalRef(jPostListener);\r
-    if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
     LOGD ("ConsumerService_onMessagePosted -OUT");\r
     return ;\r
 }\r
@@ -773,7 +802,7 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!jSyncListener)\r
     {\r
         LOGE ("Failed to Get jSyncListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -787,14 +816,14 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!syncType)\r
     {\r
         LOGE ("Failed to Get syncType for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jclass cls_SyncInfo = (jclass) (env->NewLocalRef(g_cls_SyncInfo));\r
     if (!cls_SyncInfo)\r
     {\r
         LOGE ("Failed to Get ObjectClass for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jmethodID mid_syncInfo = env->GetMethodID(\r
@@ -804,7 +833,7 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!mid_syncInfo)\r
     {\r
         LOGE ("Failed to Get MethodID for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -813,7 +842,7 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!obj_syncInfo)\r
     {\r
         LOGE ("Failed to Get Object for SyncInfo");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -821,7 +850,7 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!cls)\r
     {\r
         LOGE ("Failed to Get ObjectClass for jSyncListener");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
     jmethodID mid = env->GetMethodID(\r
@@ -831,7 +860,7 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
     if (!mid)\r
     {\r
         LOGE ("Failed to Get MethodID for onSyncInfoReceived");\r
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+        if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
         return ;\r
     }\r
 \r
@@ -839,7 +868,7 @@ void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)
 \r
     env->DeleteLocalRef(jSyncListener);\r
     env->DeleteLocalRef(cls_SyncInfo);\r
-    if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+    if (JNI_EDETACHED == envRet) g_jvm_consumer->DetachCurrentThread();\r
     LOGD ("ConsumerService_onSyncInfoReceived - OUT");\r
     return ;\r
 }\r
@@ -1219,7 +1248,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeG
         LOGD ("calling getProviderState on ProviderID");\r
         state = provider->getProviderState();\r
     }\r
-    jobject obj_state = getJavaProviderState(env,state);\r
+    jobject obj_state = getJavaProviderState(env, state);\r
 \r
     LOGD("Provider_nativeGetProviderState - OUT");\r
     return obj_state;\r
@@ -1266,7 +1295,7 @@ JNIEXPORT jboolean JNICALL Java_org_iotivity_service_ns_consumer_Provider_native
 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)\r
 {\r
     LOGD("ConsumerService_JNI_OnLoad");\r
-    g_jvm = jvm;\r
+    g_jvm_consumer = jvm;\r
 \r
     JNIEnv *env;\r
     if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)\r
@@ -1387,7 +1416,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
     }\r
 \r
     jclass localProviderState = env->FindClass(\r
-                               "org/iotivity/service/ns/consumer/Provider$ProviderState");\r
+                                    "org/iotivity/service/ns/consumer/Provider$ProviderState");\r
     if (!localProviderState)\r
     {\r
         LOGE("Failed to get localProviderState  Type class");\r
@@ -1413,6 +1442,27 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
         LOGE("Failed to set Global TopicsList reference");\r
         return JNI_ERR;\r
     }\r
+    //OcRepresentation\r
+    jclass localOcRepresentation = env->FindClass("org/iotivity/base/OcRepresentation");\r
+    if (!localOcRepresentation)\r
+    {\r
+        LOGE("Failed to get local OcRepresentation class");\r
+        return JNI_ERR;\r
+    }\r
+    g_cls_OcRepresentation = (jclass) env->NewGlobalRef(localOcRepresentation);\r
+    if (!g_cls_OcRepresentation)\r
+    {\r
+        LOGE("Failed to set Global OcRepresentation reference");\r
+        return JNI_ERR;\r
+    }\r
+\r
+    g_mid_OcRepresentation_N_ctor_bool = env->GetMethodID(g_cls_OcRepresentation, "<init>", "(JZ)V");\r
+    if (!g_mid_OcRepresentation_N_ctor_bool)\r
+    {\r
+        LOGE("Failed to get Global OcRepresentation Constructor reference");\r
+        return JNI_ERR;\r
+    }\r
+\r
     env->DeleteLocalRef(localMessage);\r
     env->DeleteLocalRef(localProvider);\r
     env->DeleteLocalRef(localSyncInfo);\r
@@ -1423,6 +1473,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
     env->DeleteLocalRef(localProviderState);\r
     env->DeleteLocalRef(localTopic);\r
     env->DeleteLocalRef(localTopicsList);\r
+    env->DeleteLocalRef(localOcRepresentation);\r
 \r
     return NSExceptionInit(env);\r
 }\r
@@ -1448,4 +1499,5 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserved)
     env->DeleteGlobalRef(g_cls_ProviderState);\r
     env->DeleteGlobalRef(g_cls_Topic);\r
     env->DeleteGlobalRef(g_cls_TopicsList);\r
+    env->DeleteGlobalRef(g_cls_OcRepresentation);\r
 }\r
old mode 100644 (file)
new mode 100755 (executable)
index f1a744a..bfe78db
@@ -20,8 +20,9 @@
 
 #include "JniNotificationProvider.h"
 #include "NSProviderService.h"
+#include "JniOcRepresentation.h"
 
-static JavaVM *g_jvm = NULL;
+static JavaVM *g_jvm_provider = NULL;
 
 static jobject g_obj_subscriptionListener = NULL;
 static jobject g_obj_syncListener = NULL;
@@ -35,18 +36,20 @@ jclass g_cls_MediaContents;
 jclass g_cls_Topic;
 jclass g_cls_TopicsList;
 jclass g_cls_TopicState;
+jclass g_cls_OcRepresentation;
+jmethodID g_mid_OcRepresentation_N_ctor_bool = NULL;
 
 static JNIEnv *GetJNIEnv(jint *ret)
 {
     JNIEnv *env = NULL;
 
-    *ret = g_jvm->GetEnv((void **) &env, JNI_CURRENT_VERSION);
+    *ret = g_jvm_provider->GetEnv((void **) &env, JNI_CURRENT_VERSION);
     switch (*ret)
     {
         case JNI_OK:
             return env;
         case JNI_EDETACHED:
-            if (g_jvm->AttachCurrentThread(&env, NULL) != JNI_OK)
+            if (g_jvm_provider->AttachCurrentThread(&env, NULL) != JNI_OK)
             {
                 LOGE ("Failed to get the environment");
                 return NULL;
@@ -241,6 +244,32 @@ OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
 
     LOGD("iconImage: %s\n", iconImage);
 
+    // Message ExtraInfo
+    jfieldID fid_extraInfo = env->GetFieldID( cls, "mExtraInfo",
+                             "Lorg/iotivity/base/OcRepresentation;");
+    if (fid_extraInfo == NULL)
+    {
+        LOGE("Error: jfieldID for mExtraInfo is null");
+        return nullptr;
+    }
+    jobject jExtraInfo = env->GetObjectField( jMsg, fid_extraInfo);
+    OC::OCRepresentation *representation = nullptr;
+    if (jExtraInfo == NULL)
+    {
+        LOGE("Error: jExtraInfo object of Message is null");
+    }
+    else
+    {
+        representation = GetHandle<OC::OCRepresentation>(env, jExtraInfo);
+        if (env->ExceptionCheck())
+        {
+            LOGE("Failed to get native handle from OcRepresentation");
+        }
+        if (!representation)
+        {
+            LOGE("Failed to get native object OcRepresentation");
+        }
+    }
     OIC::Service::NSMediaContents *media = new OIC::Service::NSMediaContents(std::string(iconImage));
     OIC::Service::NSMessage *nsMsg = OIC::Service::NSProviderService::getInstance()->createMessage();
 
@@ -252,6 +281,10 @@ OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
     nsMsg->setSourceName(std::string(messageSource));
     nsMsg->setMediaContents(media);
     nsMsg->setTopic(std::string(topic));
+    if (representation != nullptr)
+    {
+        nsMsg->setExtraInfo(*representation);
+    }
 
     env->DeleteLocalRef(cls_messageType);
     env->DeleteLocalRef(cls_MediaContents);
@@ -456,6 +489,31 @@ jobject getJavaMessage(JNIEnv *env, OIC::Service::NSMessage *message)
         env->SetObjectField(obj_message, fid_type, jType);
     }
 
+    LOGD("Reading OCRepresentation Object from Native");
+    OC::OCRepresentation *ocRepresentation = new OC::OCRepresentation(message->getExtraInfo());
+    jlong handle = reinterpret_cast<jlong>(ocRepresentation);
+    jobject jRepresentation = env->NewObject(g_cls_OcRepresentation, g_mid_OcRepresentation_N_ctor_bool,
+                              handle, true);
+    if (!jRepresentation)
+    {
+        LOGE("Failed to create OcRepresentation");
+        delete ocRepresentation;
+    }
+    else
+    {
+        LOGD("Created OCRepresentation Object from Native");
+    }
+    jfieldID fid_extraInfo = env->GetFieldID(cls_message, "mExtraInfo",
+                             "Lorg/iotivity/base/OcRepresentation;");
+    if (!fid_extraInfo)
+    {
+        LOGE("Failed to get mExtraInfo for Message");
+        delete ocRepresentation;
+        return NULL;
+    }
+    LOGD ("setting extraInfo field");
+    env->SetObjectField(obj_message, fid_extraInfo, jRepresentation);
+
     env->DeleteLocalRef(cls_message);
     LOGD ("JNIProviderService: getJavaMessage - OUT");
     return obj_message;
@@ -597,7 +655,7 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!jSubscriptionListener)
     {
         LOGE ("Failed to Get jSubscriptionListener");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
 
@@ -609,7 +667,7 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!cls_consumer)
     {
         LOGE ("Failed to Get ObjectClass for Consumer");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
 
@@ -620,7 +678,7 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!mid_consumer)
     {
         LOGE ("Failed to Get MethodID for Consumer<init>");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
     jobject obj_consumer = env->NewObject( cls_consumer, mid_consumer, jConsumerId);
@@ -629,7 +687,7 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!cls)
     {
         LOGE("Failed to Get ObjectClass of jSubscriptionListener");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return;
     }
     jmethodID mid = env->GetMethodID(
@@ -639,14 +697,14 @@ void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
     if (!mid)
     {
         LOGE("Failed to Get MethodID of onConsumerSubscribed");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return;
     }
 
     env->CallVoidMethod( jSubscriptionListener, mid, obj_consumer);
     env->DeleteLocalRef(jSubscriptionListener);
     env->DeleteLocalRef(cls_consumer);
-    if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+    if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
     LOGD("JNIProviderService_onSubscribeListenerCb - OUT");
     return;
 }
@@ -663,7 +721,7 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!jSyncListener)
     {
         LOGE ("Failed to Get jSyncListener");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
 
@@ -676,14 +734,14 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!syncType)
     {
         LOGE ("Failed to Get syncType for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
     jclass cls_SyncInfo = (jclass) (env->NewLocalRef(g_cls_SyncInfo));
     if (!cls_SyncInfo)
     {
         LOGE ("Failed to Get ObjectClass for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
     jmethodID mid_syncInfo = env->GetMethodID(
@@ -693,7 +751,7 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!mid_syncInfo)
     {
         LOGE ("Failed to Get MethodID for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
 
@@ -702,7 +760,7 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!obj_syncInfo)
     {
         LOGE ("Failed to Get Object for SyncInfo");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return ;
     }
 
@@ -710,7 +768,7 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!cls)
     {
         LOGE("Failed to Get ObjectClass");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return;
     }
     jmethodID mid = env->GetMethodID(
@@ -720,14 +778,14 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
     if (!mid)
     {
         LOGE("Failed to Get MethodID");
-        if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+        if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
         return;
     }
     env->CallVoidMethod( jSyncListener, mid, obj_syncInfo);
 
     env->DeleteLocalRef(jSyncListener);
     env->DeleteLocalRef(cls_SyncInfo);
-    if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+    if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
 
     LOGD("JNIProviderService: OnSyncInfoListenerCb - OUT");
     return;
@@ -735,7 +793,8 @@ void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
 }
 
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeStart
-(JNIEnv *env, jobject jObj, jobject jSubscriptionListener, jobject jSyncListener, jboolean jPolicy, jstring jUserInfo)
+(JNIEnv *env, jobject jObj, jobject jSubscriptionListener, jobject jSyncListener,
+ jboolean jPolicy, jstring jUserInfo, jboolean jResourceSecurity)
 {
     LOGD("JNIProviderService: nativeStart - IN");
     if (!jSubscriptionListener || !jSyncListener)
@@ -769,6 +828,7 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nat
         std::string userInfo(info);
         cfg.userInfo = userInfo;
     }
+    cfg.resourceSecurity = (bool) jResourceSecurity;
 
     OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->start(cfg);
     if (result != OIC::Service::NSResult::OK)
@@ -842,15 +902,15 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_
 (JNIEnv *env, jobject jObj)
 {
     LOGD("JNIProviderService: nativeCreateMessage - IN");
-    OIC::Service::NSMessagemessage =
-                      OIC::Service::NSProviderService::getInstance()->createMessage();
-    if(message == nullptr)
+    OIC::Service::NSMessage *message =
+        OIC::Service::NSProviderService::getInstance()->createMessage();
+    if (message == nullptr)
     {
         ThrowNSException(NS_ERROR, "Couldn't get Native Message");
         return NULL;
     }
     jobject jMsg =  getJavaMessage(env, message);
-    if(!jMsg)
+    if (!jMsg)
     {
         ThrowNSException(NS_ERROR, "Couldn't create Java Message");
         return NULL;
@@ -859,8 +919,9 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_
     return jMsg;
 }
 
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeEnableRemoteService
-(JNIEnv *env,jobject jObj, jstring jstr)
+JNIEXPORT jint JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeEnableRemoteService
+(JNIEnv *env, jobject jObj, jstring jstr)
 {
     LOGD("JNIProviderService: nativeEnableRemoteService - IN");
     if (!jstr)
@@ -883,8 +944,9 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nat
     return (jint) result;
 }
 
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeDisableRemoteService
-(JNIEnv *env,jobject jObj, jstring jstr)
+JNIEXPORT jint JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeDisableRemoteService
+(JNIEnv *env, jobject jObj, jstring jstr)
 {
     LOGD("JNIProviderService: nativeDisableRemoteService - IN");
     if (!jstr)
@@ -950,7 +1012,8 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nat
     return (jint) result;
 }
 
-JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeGetRegisteredTopicList
+JNIEXPORT jobject JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeGetRegisteredTopicList
 (JNIEnv *env, jobject jObj)
 {
     LOGD("JNIProviderService: nativeGetRegisteredTopicList - IN");
@@ -1088,7 +1151,7 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeG
 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
 {
     LOGD("ProviderService_JNI_OnLoad");
-    g_jvm = jvm;
+    g_jvm_provider = jvm;
 
     JNIEnv *env;
     if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)
@@ -1223,6 +1286,27 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
         return JNI_ERR;
     }
 
+    //OcRepresentation
+    jclass localOcRepresentation = env->FindClass("org/iotivity/base/OcRepresentation");
+    if (!localOcRepresentation)
+    {
+        LOGE("Failed to get local OcRepresentation class");
+        return JNI_ERR;
+    }
+    g_cls_OcRepresentation = (jclass) env->NewGlobalRef(localOcRepresentation);
+    if (!g_cls_OcRepresentation)
+    {
+        LOGE("Failed to set Global OcRepresentation reference");
+        return JNI_ERR;
+    }
+
+    g_mid_OcRepresentation_N_ctor_bool = env->GetMethodID(g_cls_OcRepresentation, "<init>", "(JZ)V");
+    if (!g_mid_OcRepresentation_N_ctor_bool)
+    {
+        LOGE("Failed to get Global OcRepresentation Constructor reference");
+        return JNI_ERR;
+    }
+
     env->DeleteLocalRef(localMessage);
     env->DeleteLocalRef(localMessageType);
     env->DeleteLocalRef(localConsumer);
@@ -1232,6 +1316,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
     env->DeleteLocalRef(localTopic);
     env->DeleteLocalRef(localTopicsList);
     env->DeleteLocalRef(localTopicState);
+    env->DeleteLocalRef(localOcRepresentation);
 
     return NSExceptionInit(env);
 }
@@ -1256,4 +1341,5 @@ JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserved)
     env->DeleteGlobalRef(g_cls_Topic);
     env->DeleteGlobalRef(g_cls_TopicsList);
     env->DeleteGlobalRef(g_cls_TopicState);
+    env->DeleteGlobalRef(g_cls_OcRepresentation);
 }
index 64b7b8b..d3a1a50 100644 (file)
@@ -30,10 +30,10 @@ extern "C" {
 /*
  * Class:     org_iotivity_service_ns_provider_ProviderService
  * Method:    nativeStart
- * Signature: (Lorg/iotivity/service/ns/provider/ProviderService/OnConsumerSubscribedListener;Lorg/iotivity/service/ns/provider/ProviderService/OnMessageSynchronizedListener;ZLjava/lang/String;)I
+ * Signature: (Lorg/iotivity/service/ns/provider/ProviderService/OnConsumerSubscribedListener;Lorg/iotivity/service/ns/provider/ProviderService/OnMessageSynchronizedListener;ZLjava/lang/String;Z)I
  */
 JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeStart
-(JNIEnv *, jobject, jobject, jobject, jboolean, jstring);
+(JNIEnv *, jobject, jobject, jobject, jboolean, jstring, jboolean);
 
 /*
  * Class:     org_iotivity_service_ns_provider_ProviderService
@@ -72,7 +72,8 @@ JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_
  * Method:    nativeEnableRemoteService
  * Signature: (Ljava/lang/String;)I
  */
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeEnableRemoteService
+JNIEXPORT jint JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeEnableRemoteService
 (JNIEnv *, jobject, jstring);
 
 /*
@@ -80,7 +81,8 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nat
  * Method:    nativeDisableRemoteService
  * Signature: (Ljava/lang/String;)I
  */
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeDisableRemoteService
+JNIEXPORT jint JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeDisableRemoteService
 (JNIEnv *, jobject, jstring);
 
 /*
@@ -104,7 +106,8 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nat
  * Method:    nativeGetRegisteredTopicList
  * Signature: ()Lorg/iotivity/service/ns/common/TopicsList;
  */
-JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeGetRegisteredTopicList
+JNIEXPORT jobject JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeGetRegisteredTopicList
 (JNIEnv *, jobject);
 
 /*
index 2f58fc4..b5da51b 100755 (executable)
@@ -62,6 +62,24 @@ namespace OIC
                 if ((msg->topic != nullptr) && strlen(msg->topic))\r
                     m_topic.assign(msg->topic, strlen(msg->topic));\r
 \r
+                if (msg->extraInfo != nullptr)\r
+                {\r
+                    OC::MessageContainer info;\r
+                    info.setPayload(msg->extraInfo);\r
+                    const std::vector<OC::OCRepresentation> &reps = info.representations();\r
+                    if (reps.size() > 0)\r
+                    {\r
+                        std::vector<OC::OCRepresentation>::const_iterator itr = reps.begin();\r
+                        std::vector<OC::OCRepresentation>::const_iterator back = reps.end();\r
+                        m_extraInfo = *itr;\r
+                        ++itr;\r
+\r
+                        for (; itr != back; ++itr)\r
+                        {\r
+                            m_extraInfo.addChild(*itr);\r
+                        }\r
+                    }\r
+                }\r
             }\r
         }\r
 \r
@@ -82,6 +100,7 @@ namespace OIC
             else\r
                 m_mediaContents = new NSMediaContents();\r
             m_topic = msg.getTopic();\r
+            m_extraInfo = OC::OCRepresentation(msg.getExtraInfo());\r
         }\r
 \r
         NSMessage &NSMessage::operator=(const NSMessage &msg)\r
@@ -101,6 +120,7 @@ namespace OIC
             else\r
                 this->m_mediaContents = new NSMediaContents();\r
             this->m_topic = msg.getTopic();\r
+            this->m_extraInfo = OC::OCRepresentation(msg.getExtraInfo());\r
             return *this;\r
         }\r
 \r
@@ -199,5 +219,15 @@ namespace OIC
         {\r
             m_topic = topic;\r
         }\r
+\r
+        OC::OCRepresentation NSMessage::getExtraInfo() const\r
+        {\r
+            return OC::OCRepresentation(m_extraInfo);\r
+        }\r
+\r
+        void NSMessage::setExtraInfo(const OC::OCRepresentation &extraInfo)\r
+        {\r
+            m_extraInfo = OC::OCRepresentation(extraInfo);\r
+        }\r
     }\r
 }\r
index f29c607..5eb9694 100755 (executable)
@@ -29,6 +29,7 @@
 \r
 #include <string>\r
 #include "NSMediaContents.h"\r
+#include "OCRepresentation.h"\r
 \r
 namespace OIC\r
 {\r
@@ -54,7 +55,7 @@ namespace OIC
                         * Constructor of NSMessage.\r
                         */\r
                 NSMessage(): m_messageId(0), m_type(NSMessageType::NS_MESSAGE_ALERT), m_ttl(0),\r
-                    m_mediaContents(new NSMediaContents) { }\r
+                    m_mediaContents(new NSMediaContents), m_extraInfo(OC::OCRepresentation()) { }\r
 \r
                 /**\r
                         * Constructor of NSMessage.\r
@@ -209,6 +210,20 @@ namespace OIC
                      */\r
                 void setTopic(const std::string &topic);\r
 \r
+                /**\r
+                     * This method is for getting extraInfo from the Notification service Message.\r
+                     *\r
+                     * @return extraInfo as OCRepresentation.\r
+                     */\r
+                OC::OCRepresentation getExtraInfo() const;\r
+\r
+                /**\r
+                     * This method is for setting extraInfo for the Notification service Message.\r
+                     *\r
+                     * @return extraInfo as OCRepresentation.\r
+                     */\r
+                void setExtraInfo(const OC::OCRepresentation &extraInfo);\r
+\r
             private:\r
                 uint64_t m_messageId;\r
                 std::string m_providerId;\r
@@ -221,6 +236,7 @@ namespace OIC
                 std::string m_sourceName;\r
                 NSMediaContents *m_mediaContents;\r
                 std::string m_topic;\r
+                OC::OCRepresentation m_extraInfo;\r
 \r
         };\r
     }\r
index 2c1ea66..88d440e 100755 (executable)
@@ -53,7 +53,7 @@ namespace OIC
             TOPIC = 3,
             STOPPED = 12
         };
-        
+
         /**
              * NSProviderSubscribedState of notification service
              */
index e476623..ec46434 100755 (executable)
@@ -51,6 +51,7 @@ notification_env.AppendUnique(CPPPATH = ['../../src/common'])
 
 notification_env.PrependUnique(LIBS = [
        'oc_logger',
+       'oc',
        'notification_consumer'
        ])
 
@@ -77,8 +78,10 @@ if env.get('WITH_CLOUD') == True:
        notification_env.AppendUnique(CPPDEFINES = ['WITH_CLOUD'])
 
 ######################################################################
-# Source files and Targets
+# Source files and Targets for Consumer
 ######################################################################
+notification_jni_consumer_env = notification_env.Clone()
+
 Import('notificationCommonStaticObjs')
 Import('notificationCommonSharedObjs')
 
@@ -95,3 +98,24 @@ notification_consumer_src = [
 consumersdk = notification_env.StaticLibrary('notification_consumer_wrapper', notification_consumer_src)
 notification_env.InstallTarget(consumersdk, 'libnotification_consumer_wrapper')
 notification_env.UserInstallTargetLib(consumersdk, 'libnotification_consumer_wrapper')
+
+######################################################################
+# Source files and Targets for Consumer Jni
+######################################################################
+if target_os == 'android':
+       notification_jni_consumer_env.AppendUnique(CPPPATH = ['../../../../extlibs/boost/boost_1_58_0'])
+       notification_jni_consumer_env.AppendUnique(CPPPATH = ['../../../../android/android_api/base/jni'])
+       notification_jni_consumer_env.AppendUnique(CPPPATH = ['../../android/notification-service/src/main/jni/common'])
+       notification_jni_consumer_env.AppendUnique(CPPPATH = ['../../android/notification-service/src/main/jni/consumer'])
+
+       notification_jni_consumer_env.PrependUnique(LIBS = [
+               'notification_consumer_wrapper'
+               ])
+
+       notification_consumer_jni_src = [
+               env.Glob('../../android/notification-service/src/main/jni/consumer/*.cpp'),
+               env.Glob('../../android/notification-service/src/main/jni/common/*.cpp')]
+
+       consumerJni = notification_jni_consumer_env.SharedLibrary('notification_consumer_jni', notification_consumer_jni_src)
+       notification_jni_consumer_env.InstallTarget(consumerJni, 'libnotification_consumer_jni')
+       notification_jni_consumer_env.UserInstallTargetLib(consumerJni, 'libnotification_consumer_jni')
index 9c8891a..bff7f1c 100755 (executable)
@@ -43,6 +43,7 @@ notification_sample_env.AppendUnique(CPPPATH = ['../../../src/common'])
 notification_sample_env.PrependUnique(LIBS = [
        'liboctbstack',
        'oc_logger',
+       'oc',
        'connectivity_abstraction',
        'libcoap'
        ])
index 040dd21..c64765f 100755 (executable)
@@ -51,6 +51,7 @@ notification_env.AppendUnique(CPPPATH = ['../../src/common'])
 
 notification_env.PrependUnique(LIBS = [
        'oc_logger',
+       'oc',
        'notification_provider'
        ])
 notification_env.AppendUnique(CXXFLAGS = ['-std=c++0x','-frtti'])
@@ -76,8 +77,10 @@ if env.get('WITH_CLOUD') == True:
        notification_env.AppendUnique(CPPDEFINES = ['WITH_CLOUD'])
 
 ######################################################################
-# Source files and Targets
+# Source files and Targets for Provider
 ######################################################################
+notification_jni_provider_env = notification_env.Clone()
+
 notificationCommonStaticObjs = [
        notification_env.Object('../common/NSMediaContents.cpp'),
        notification_env.Object('../common/NSMessage.cpp'),
@@ -108,3 +111,24 @@ notification_env.UserInstallTargetLib(providersdk, 'libnotification_provider_wra
 
 Export('notificationCommonStaticObjs')
 Export('notificationCommonSharedObjs')
+
+######################################################################
+# Source files and Targets for Provider Jni
+######################################################################
+if target_os == 'android':
+       notification_jni_provider_env.AppendUnique(CPPPATH = ['../../../../extlibs/boost/boost_1_58_0'])
+       notification_jni_provider_env.AppendUnique(CPPPATH = ['../../../../android/android_api/base/jni'])
+       notification_jni_provider_env.AppendUnique(CPPPATH = ['../../android/notification-service/src/main/jni/common'])
+       notification_jni_provider_env.AppendUnique(CPPPATH = ['../../android/notification-service/src/main/jni/provider'])
+
+       notification_jni_provider_env.PrependUnique(LIBS = [
+               'notification_provider_wrapper'
+               ])
+
+       notification_provider_jni_src = [
+               env.Glob('../../android/notification-service/src/main/jni/provider/*.cpp'),
+               env.Glob('../../android/notification-service/src/main/jni/common/*.cpp')]
+
+       providerJni = notification_jni_provider_env.SharedLibrary('notification_provider_jni', notification_provider_jni_src)
+       notification_jni_provider_env.InstallTarget(providerJni, 'libnotification_provider_jni')
+       notification_jni_provider_env.UserInstallTargetLib(providerJni, 'libnotification_provider_jni')
index 033b7e3..1eb69bb 100755 (executable)
@@ -78,6 +78,8 @@ namespace OIC
                     bool subControllability;\r
                     /** userInfo - user defined information */\r
                     std::string userInfo;\r
+                    /* Set on/off with SECURED build option */\r
+                    bool resourceSecurity;\r
                 } ProviderConfig;\r
 \r
                 /**\r
index 8b1364b..29a9366 100755 (executable)
@@ -26,6 +26,7 @@
 #include "NSConsumer.h"\r
 #include "NSSyncInfo.h"\r
 #include "NSConstants.h"\r
+#include "OCRepresentation.h"\r
 #include "oic_string.h"\r
 #include "oic_malloc.h"\r
 \r
@@ -77,6 +78,7 @@ namespace OIC
                 nsMsg->mediaContents->iconImage = OICStrdup(msg->getMediaContents()->getIconImage().c_str());\r
             else\r
                 nsMsg->mediaContents->iconImage = nullptr;\r
+            nsMsg->extraInfo = msg->getExtraInfo().getPayload();\r
             return nsMsg;\r
         }\r
 \r
@@ -105,6 +107,7 @@ namespace OIC
             nsConfig.syncInfoCallback = onMessageSynchronizedCallback;\r
             nsConfig.subControllability = config.subControllability;\r
             nsConfig.userInfo = OICStrdup(config.userInfo.c_str());\r
+            nsConfig.resourceSecurity = config.resourceSecurity;\r
 \r
             NSResult result = (NSResult) NSStartProvider(nsConfig);\r
             NS_LOG(DEBUG, "start - OUT");\r
old mode 100644 (file)
new mode 100755 (executable)
index 0502d0e..55dcb1d
@@ -101,7 +101,7 @@ public class ProviderSample
         configurePlatform();
         gAcceptor = policy;
         try{
-            int result =  ioTNotification.start(this, this, policy, "Info");
+            int result =  ioTNotification.start(this, this, policy, "Info", false);
             Log.i(TAG, "Notification Start: " + result);
         }
         catch(Exception e){