fix issues relates to wrong syncInfo received
authornikhil.a <nikhil.a7@samsung.com>
Wed, 19 Oct 2016 12:33:32 +0000 (18:03 +0530)
committerUze Choi <uzchoi@samsung.com>
Thu, 20 Oct 2016 00:24:40 +0000 (00:24 +0000)
Change-Id: I77f9ce5d0fa3e7c40e0fe390b42f210e5a188a50
Signed-off-by: nikhil.a <nikhil.a7@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13451
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
(cherry picked from commit 5c7427328a1757f9555be3b4f0a6292c53ac933c)
Reviewed-on: https://gerrit.iotivity.org/gerrit/13457
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
service/notification/android/notification-service/src/main/jni/consumer/JniNotificationConsumer.cpp
service/notification/android/notification-service/src/main/jni/provider/JniNotificationProvider.cpp

index 78352efd87903829b7c34558a2849999029ea8b9..ce49ec30e4f0f48987ebd703103ec74e205b0d9f 100755 (executable)
@@ -116,38 +116,32 @@ jobject getJavaSyncType(JNIEnv *env, OIC::Service::NSSyncInfo::NSSyncType nsType
         LOGE ("Failed to Get ObjectClass for SyncType");\r
         return NULL;\r
     }\r
-    jobject syncType;\r
     switch (nsType)\r
     {\r
         case OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_UNREAD:\r
             {\r
                 static jfieldID fieldID = env->GetStaticFieldID(cls_SyncType,\r
                                           "UNREAD", "Lorg/iotivity/service/ns/common/SyncInfo$SyncType;");\r
-                syncType = env->GetStaticObjectField(cls_SyncType, fieldID);\r
+                return env->GetStaticObjectField(cls_SyncType, fieldID);\r
             }\r
         case OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ :\r
             {\r
                 static jfieldID fieldID = env->GetStaticFieldID(cls_SyncType,\r
                                           "READ", "Lorg/iotivity/service/ns/common/SyncInfo$SyncType;");\r
-                syncType = env->GetStaticObjectField(cls_SyncType, fieldID);\r
+                return env->GetStaticObjectField(cls_SyncType, fieldID);\r
             }\r
         case OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_DELETED :\r
             {\r
                 static jfieldID fieldID = env->GetStaticFieldID(cls_SyncType,\r
                                           "DELETED", "Lorg/iotivity/service/ns/common/SyncInfo$SyncType;");\r
-                syncType = env->GetStaticObjectField(cls_SyncType, fieldID);\r
+                return env->GetStaticObjectField(cls_SyncType, fieldID);\r
             }\r
-\r
-    }\r
-\r
-    if (syncType == NULL)\r
-    {\r
-        LOGD("Error: object of field  Synctype  is null");\r
+        default:\r
+            return NULL;\r
     }\r
 \r
-    env->DeleteLocalRef(cls_SyncType);\r
     LOGD ("ConsumerService_getJavaSyncType - OUT");\r
-    return syncType;\r
+    return NULL;\r
 }\r
 \r
 jobject getJavaTopicState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)\r
@@ -610,7 +604,7 @@ jobject getJavaMessage(JNIEnv *env, OIC::Service::NSMessage *message)
         }\r
         env->SetObjectField(obj_message, fid_type, jType);\r
     }\r
-    \r
+\r
     LOGD("Reading OCRepresentation Object from Native");\r
 \r
     OC::OCRepresentation *ocRepresentation = new OC::OCRepresentation(message->getExtraInfo());\r
@@ -636,7 +630,7 @@ jobject getJavaMessage(JNIEnv *env, OIC::Service::NSMessage *message)
     }\r
     LOGD ("setting extraInfo field");\r
     env->SetObjectField(obj_message, fid_extraInfo, jRepresentation);\r
-    \r
+\r
     env->DeleteLocalRef(cls_message);\r
     LOGD ("ConsumerService_getJavaMessage - OUT");\r
     return obj_message;\r
index bbe00939185e88234d95e8d764b457dd4d9f7e7d..91c4fc50e4c5c1eda433c5a180a46fce227427b5 100755 (executable)
@@ -127,7 +127,7 @@ OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
 
     jlong jttl = (jlong) env->GetLongField( jMsg, fid_ttl);
     uint64_t  ttl = jttl;
-    LOGD("Message ID: %lld\n", ttl);
+    LOGD("TTL: %d\n", ttl);
 
     // Message Title
     jfieldID fid_title = env->GetFieldID( cls, "mTitle", "Ljava/lang/String;");
@@ -271,7 +271,23 @@ OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
         }
     }
     OIC::Service::NSMediaContents *media = new OIC::Service::NSMediaContents(std::string(iconImage));
-    OIC::Service::NSMessage *nsMsg = OIC::Service::NSProviderService::getInstance()->createMessage();
+    OIC::Service::NSMessage *nsMsg;
+    jfieldID nativeHandle = env->GetFieldID(cls, "mNativeHandle", "J");
+    if (!nativeHandle)
+    {
+        LOGE("Error: fieldID for mNativeHandle is null");
+        return nullptr;
+    }
+    jlong jMessage = env->GetLongField(jMsg, nativeHandle);
+    if (jMessage)
+    {
+        LOGD ("calling sendMessage on mNativeHandle");
+        nsMsg = (OIC::Service::NSMessage *) (jMessage);
+    }
+    else
+    {
+        nsMsg = OIC::Service::NSProviderService::getInstance()->createMessage();
+    }
 
     nsMsg->setType(type);
     nsMsg->setTime(std::string(time));
@@ -608,38 +624,32 @@ jobject getJavaSyncType(JNIEnv *env, OIC::Service::NSSyncInfo::NSSyncType nsType
         LOGE ("Failed to Get ObjectClass for SyncType");
         return NULL;
     }
-    jobject syncType;
     switch (nsType)
     {
         case OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_UNREAD:
             {
                 static jfieldID fieldID = env->GetStaticFieldID(cls_SyncType,
                                           "UNREAD", "Lorg/iotivity/service/ns/common/SyncInfo$SyncType;");
-                syncType = env->GetStaticObjectField(cls_SyncType, fieldID);
+                return env->GetStaticObjectField(cls_SyncType, fieldID);
             }
         case OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ :
             {
                 static jfieldID fieldID = env->GetStaticFieldID(cls_SyncType,
                                           "READ", "Lorg/iotivity/service/ns/common/SyncInfo$SyncType;");
-                syncType = env->GetStaticObjectField(cls_SyncType, fieldID);
+                return env->GetStaticObjectField(cls_SyncType, fieldID);
             }
         case OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_DELETED :
             {
                 static jfieldID fieldID = env->GetStaticFieldID(cls_SyncType,
                                           "DELETED", "Lorg/iotivity/service/ns/common/SyncInfo$SyncType;");
-                syncType = env->GetStaticObjectField(cls_SyncType, fieldID);
+                return env->GetStaticObjectField(cls_SyncType, fieldID);
             }
-
-    }
-
-    if (syncType == NULL)
-    {
-        LOGE("Error: object of field  Synctype  is null");
+        default:
+            return NULL;
     }
 
-    env->DeleteLocalRef(cls_SyncType);
     LOGD ("JNIProviderService: getJavaSyncType - OUT");
-    return syncType;
+    return NULL;
 }