jclass g_cls_Message;\r
jclass g_cls_Provider;\r
jclass g_cls_SyncInfo;\r
+jclass g_cls_SyncType;\r
jclass g_cls_MediaContents;\r
jclass g_cls_TopicState;\r
jclass g_cls_Message_Type;\r
}\r
}\r
\r
-jobject getJavaMessageType(JNIEnv *env, OIC::Service::NSMessage::NSMessageType type)\r
+jobject getJavaResponse(JNIEnv *env, OIC::Service::NSResponse response)\r
{\r
- LOGD ("ConsumerService_getJavaMessageType - IN");\r
- switch (type)\r
+ LOGD ("ConsumerService_getJavaResponse - IN");\r
+ switch (response)\r
{\r
- case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_ALERT:\r
- {\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
- "ALERT", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
- return env->GetStaticObjectField(g_cls_Message, fieldID);\r
- }\r
- case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_NOTICE:\r
+ case OIC::Service::NSResponse::ALLOW:\r
{\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
- "NOTICE", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
- return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Response,\r
+ "ALLOW", "Lorg/iotivity/service/ns/consumer/ConsumerService$Response;");\r
+ return env->GetStaticObjectField(g_cls_Response, fieldID);\r
}\r
- case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_EVENT:\r
+ case OIC::Service::NSResponse::DENY:\r
{\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
- "EVENT", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
- return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Response,\r
+ "DENY", "Lorg/iotivity/service/ns/consumer/ConsumerService$Response;");\r
+ return env->GetStaticObjectField(g_cls_Response, fieldID);\r
}\r
- case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_INFO:\r
+ case OIC::Service::NSResponse::TOPIC:\r
{\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
- "INFO", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
- return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Response,\r
+ "TOPIC", "Lorg/iotivity/service/ns/consumer/ConsumerService$Response;");\r
+ return env->GetStaticObjectField(g_cls_Response, fieldID);\r
}\r
default:\r
return NULL;\r
}\r
- LOGD ("ConsumerService_getJavaMessageType - OUT");\r
+ LOGD ("ConsumerService_getJavaResponse - OUT");\r
return NULL;\r
}\r
\r
-jobject getJavaState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)\r
+jobject getJavaSyncType(JNIEnv *env, OIC::Service::NSSyncInfo::NSSyncType nsType)\r
+{\r
+ LOGD ("ConsumerService_getJavaSyncType - IN");\r
+\r
+ // SyncType\r
+ jclass cls_SyncType = (jclass) (env->NewLocalRef(g_cls_SyncType));\r
+ if (!cls_SyncType)\r
+ {\r
+ 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
+ }\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
+ }\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
+ }\r
+\r
+ }\r
+\r
+ if (syncType == NULL)\r
+ {\r
+ LOGD("Error: object of field Synctype is null");\r
+ }\r
+\r
+ env->DeleteLocalRef(cls_SyncType);\r
+ LOGD ("ConsumerService_getJavaSyncType - OUT");\r
+ return syncType;\r
+}\r
+\r
+jobject getJavaTopicState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)\r
{\r
- LOGD ("ConsumerService_getJavaState - IN");\r
+ LOGD ("ConsumerService_getJavaTopicState - IN");\r
\r
// TopicState\r
jclass cls_topicState = (jclass) (env->NewLocalRef(g_cls_TopicState));\r
if (!cls_topicState)\r
{\r
LOGE ("Failed to Get ObjectClass for TopicState Type");\r
- return nullptr;\r
+ return NULL;\r
}\r
\r
jobject obj_topicState;\r
}\r
if (obj_topicState == NULL)\r
{\r
- LOGE("Error: object of field TopicState is null");\r
- return NULL;\r
+ LOGD("Error: object of field TopicState is null");\r
}\r
\r
env->DeleteLocalRef(cls_topicState);\r
- LOGD ("ConsumerService_getJavaState - OUT");\r
+ LOGD ("ConsumerService_getJavaTopicState - OUT");\r
return obj_topicState;\r
}\r
\r
-\r
jobject getJavaTopicsList(JNIEnv *env, OIC::Service::NSTopicsList *topicList)\r
{\r
LOGD ("ConsumerService_getJavaTopicsList - IN");\r
return NULL;\r
}\r
jobject obj_topicList = env->NewObject(cls_topicList, mid_topicList);\r
- jmethodID mid_addTopic =\r
- env->GetMethodID(cls_topicList, "addTopic", "(Lorg/iotivity/service/ns/common/Topic;)V");\r
+ if (!obj_topicList)\r
+ {\r
+ LOGE ("Failed to Get object for TopicsList");\r
+ return NULL;\r
+ }\r
+ jmethodID mid_addTopic = env->GetMethodID(cls_topicList, "addTopic",\r
+ "(Ljava/lang/String;Lorg/iotivity/service/ns/common/Topic$TopicState;)V");\r
+ if (!mid_addTopic)\r
+ {\r
+ LOGE ("Failed to Get MethodID for addTopic");\r
+ return NULL;\r
+ }\r
for (auto it : topicList->getTopicsList())\r
{\r
- jobject jState = getJavaState(env, it->getState());\r
+ jobject jState = getJavaTopicState(env, it->getState());\r
std::string topicName = it->getTopicName();\r
jstring jTopicName = env->NewStringUTF(topicName.c_str());\r
env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);\r
return obj_topicList;\r
}\r
\r
-OIC::Service::NSTopic::NSTopicState getNativeState(JNIEnv *env, jobject jTopic)\r
+bool getNativeTopicState(JNIEnv *env, jobject jTopic , OIC::Service::NSTopic::NSTopicState &state )\r
{\r
- LOGD ("ConsumerService_getNativeState - IN");\r
+ LOGD ("ConsumerService_getNativeTopicState - IN");\r
\r
jclass cls_topic = env->GetObjectClass( jTopic);\r
// TopicState\r
if (!cls_TopicState)\r
{\r
LOGE ("Failed to Get ObjectClass for cls_TopicState Type");\r
- ThrowNSException(NS_ERROR, "TopicState class not found ");\r
- return OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED;\r
+ return false;\r
}\r
jmethodID mid = env->GetMethodID(cls_TopicState, "ordinal", "()I");\r
- jfieldID fid_state = env->GetFieldID( cls_TopicState, "mState",\r
+ jfieldID fid_state = env->GetFieldID( cls_topic, "mState",\r
"Lorg/iotivity/service/ns/common/Topic$TopicState;");\r
if (fid_state == NULL)\r
{\r
LOGE("Error: jfieldID for state type is null");\r
- ThrowNSException(NS_ERROR, "TopicState fid not found ");\r
- return OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED;\r
+ return false;\r
}\r
jobject jobj = env->GetObjectField( jTopic, fid_state);\r
if (jobj == NULL)\r
{\r
LOGE("Error: object of field state Type is null");\r
- ThrowNSException(NS_ERROR, "TopicState obj is null ");\r
- return OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED;\r
+ return false;\r
}\r
jint jState = env->CallIntMethod(jobj, mid);\r
- OIC::Service::NSTopic::NSTopicState state = (OIC::Service::NSTopic::NSTopicState) jState;\r
- LOGD ("ConsumerService_getNativeState - OUT");\r
- return state;\r
+ state = (OIC::Service::NSTopic::NSTopicState) jState;\r
+ LOGD ("ConsumerService_getNativeTopicState - OUT");\r
+ return true;\r
\r
}\r
\r
{\r
LOGD ("ConsumerService_getNativeTopicName - IN");\r
jclass cls_topic = env->GetObjectClass( jTopic);\r
- jfieldID fid_name = env->GetFieldID( cls_topic, "mTopicname",\r
- "Ljava/lang/String;");\r
+ if (cls_topic == NULL)\r
+ {\r
+ LOGE("Error: Class for Topic is null");\r
+ return nullptr;\r
+ }\r
+ jfieldID fid_name = env->GetFieldID( cls_topic, "mTopicName", "Ljava/lang/String;");\r
if (fid_name == NULL)\r
{\r
LOGE("Error: jfieldID for Topic Name is null");\r
LOGD ("ConsumerService_getNativeTopicsList - IN");\r
\r
jclass cls_topicList = env->GetObjectClass( jTopicList);\r
- jfieldID fid_list = env->GetFieldID( cls_topicList, "mTopicsList",\r
- "Ljava/util/Vector;");\r
+ if (cls_topicList == NULL)\r
+ {\r
+ LOGE("Error: Class for Topic List is null");\r
+ return nullptr;\r
+ }\r
+ jfieldID fid_list = env->GetFieldID( cls_topicList, "mTopicsList", "Ljava/util/Vector;");\r
if (fid_list == NULL)\r
{\r
LOGE("Error: jfieldID for Topic List is null");\r
return nullptr;\r
}\r
jclass cls_vec = env->FindClass("java/util/Vector");\r
- jmethodID sizeMethod = env->GetMethodID(cls_vec, "size", "()I;");\r
+ if (cls_vec == NULL)\r
+ {\r
+ LOGE("Error: Class for Vector not found");\r
+ return nullptr;\r
+ }\r
+ jmethodID sizeMethod = env->GetMethodID(cls_vec, "size", "()I");\r
+ if (sizeMethod == NULL)\r
+ {\r
+ LOGE("Error: MethodId for Vector Size not found");\r
+ return nullptr;\r
+ }\r
int size = env->CallIntMethod(jobj, sizeMethod);\r
jmethodID getMethod = env->GetMethodID(cls_vec, "get", "(I)Ljava/lang/Object;");\r
+ if (getMethod == NULL)\r
+ {\r
+ LOGE("Error: MethodId for Vector get not found");\r
+ return nullptr;\r
+ }\r
OIC::Service::NSTopicsList *nsTopicList = new OIC::Service::NSTopicsList();\r
for (int index = 0; index < size; index++)\r
{\r
jobject topicObj = env->CallObjectMethod(jobj, getMethod, index);\r
+ if (topicObj == NULL)\r
+ {\r
+ LOGE("Error: object of field Topic is null");\r
+ return nullptr;\r
+ }\r
const char *name = getNativeTopicName(env, topicObj);\r
+ if (name == nullptr)\r
+ {\r
+ LOGE("Error: Couldn't find topic Name");\r
+ return nullptr;\r
+ }\r
std::string topicName(name);\r
- OIC::Service::NSTopic::NSTopicState state = getNativeState(env, topicObj);\r
+ OIC::Service::NSTopic::NSTopicState state;\r
+ if (!getNativeTopicState(env, topicObj, state))\r
+ {\r
+ return nullptr;\r
+ }\r
nsTopicList->addTopic(topicName, state);\r
}\r
\r
return nsTopicList;\r
}\r
\r
-jobject getJavaResponse(JNIEnv *env, OIC::Service::NSResponse response)\r
-{\r
- LOGD ("ConsumerService_getJavaResponse - IN");\r
- switch (response)\r
- {\r
- case OIC::Service::NSResponse::ALLOW:\r
- {\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Response,\r
- "ALLOW", "Lorg/iotivity/service/ns/consumer/ConsumerService$Response;");\r
- return env->GetStaticObjectField(g_cls_Response, fieldID);\r
- }\r
- case OIC::Service::NSResponse::DENY:\r
- {\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Response,\r
- "DENY", "Lorg/iotivity/service/ns/consumer/ConsumerService$Response;");\r
- return env->GetStaticObjectField(g_cls_Response, fieldID);\r
- }\r
- case OIC::Service::NSResponse::TOPIC:\r
- {\r
- static jfieldID fieldID = env->GetStaticFieldID(g_cls_Response,\r
- "TOPIC", "Lorg/iotivity/service/ns/consumer/ConsumerService$Response;");\r
- return env->GetStaticObjectField(g_cls_Response, fieldID);\r
- }\r
- default:\r
- return NULL;\r
- }\r
- LOGD ("ConsumerService_getJavaResponse - OUT");\r
- return NULL;\r
-}\r
-\r
OIC::Service::NSProvider *getNativeProvider(JNIEnv *env, jobject jObj)\r
{\r
LOGD ("ConsumerService_getNativeProvider - IN");\r
return NULL;\r
}\r
jobject obj_provider = env->NewObject(cls_provider, mid_provider, jProviderId);\r
+ if (!obj_provider)\r
+ {\r
+ LOGE("Failed to create new Object for Provider");\r
+ return NULL;\r
+ }\r
\r
jfieldID nativeHandle = env->GetFieldID(cls_provider, "mNativeHandle", "J");\r
if (!nativeHandle)\r
env->SetLongField(obj_provider, nativeHandle, pProvider);\r
\r
jfieldID fid_topic = env->GetFieldID(cls_provider, "mTopicsList",\r
- "Lorg/iotivity/service/ns/common/TopicsList");\r
+ "Lorg/iotivity/service/ns/common/TopicsList;");\r
if (!fid_topic)\r
{\r
- LOGE("Failed to get nativeHandle for Provider");\r
+ LOGE("Failed to get TopicList for Provider");\r
return NULL;\r
}\r
jobject topicList = getJavaTopicsList(env, provider->getTopicList());\r
return obj_provider;\r
}\r
\r
+jobject getJavaMessageType(JNIEnv *env, OIC::Service::NSMessage::NSMessageType type)\r
+{\r
+ LOGD ("ConsumerService_getJavaMessageType - IN");\r
+ switch (type)\r
+ {\r
+ case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_ALERT:\r
+ {\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
+ "ALERT", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
+ return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ }\r
+ case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_NOTICE:\r
+ {\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
+ "NOTICE", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
+ return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ }\r
+ case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_EVENT:\r
+ {\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
+ "EVENT", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
+ return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ }\r
+ case OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_INFO:\r
+ {\r
+ static jfieldID fieldID = env->GetStaticFieldID(g_cls_Message,\r
+ "INFO", "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
+ return env->GetStaticObjectField(g_cls_Message, fieldID);\r
+ }\r
+ default:\r
+ return NULL;\r
+ }\r
+ LOGD ("ConsumerService_getJavaMessageType - OUT");\r
+ return NULL;\r
+}\r
\r
jobject getJavaMessage(JNIEnv *env, OIC::Service::NSMessage *message)\r
{\r
}\r
jobject obj_message = env->NewObject(cls_message, mid_message,\r
jTitle, jContentText, jSourceName);\r
-\r
+ if (!obj_message)\r
+ {\r
+ LOGE ("Failed to Get Java Object for Message");\r
+ return NULL;\r
+ }\r
jfieldID fid_nativeHandle = env->GetFieldID(cls_message, "mNativeHandle", "J");\r
if (!fid_nativeHandle)\r
{\r
}\r
\r
jobject jType = getJavaMessageType(env, message->getType());\r
- if (!jType)\r
- {\r
- LOGE("Failed to get Type value for Message");\r
- return NULL;\r
- }\r
- jfieldID fid_type = env->GetFieldID(cls_message, "mType",\r
- "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
- if (!fid_type)\r
+ if (jType)\r
{\r
- LOGE("Failed to get field Type for Message");\r
- return NULL;\r
+ jfieldID fid_type = env->GetFieldID(cls_message, "mType",\r
+ "Lorg/iotivity/service/ns/common/Message$MessageType;");\r
+ if (!fid_type)\r
+ {\r
+ LOGE("Failed to get field Type for Message");\r
+ return NULL;\r
+ }\r
+ env->SetObjectField(obj_message, fid_type, jType);\r
}\r
- env->SetObjectField(obj_message, fid_type, jType);\r
+\r
env->DeleteLocalRef(cls_message);\r
LOGD ("ConsumerService_getJavaMessage - OUT");\r
return obj_message;\r
\r
void onProviderChanged(OIC::Service::NSProvider *provider, OIC::Service::NSResponse response)\r
{\r
- LOGD ("ConsumerService_onSubscriptionAccepted -IN");\r
+ LOGD ("ConsumerService_onProviderChanged -IN");\r
\r
jint envRet;\r
JNIEnv *env = GetJNIEnv(&envRet);\r
\r
env->DeleteLocalRef(jAcceptListener);\r
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- LOGD ("ConsumerService_onSubscriptionAccepted -OUT");\r
+ LOGD ("ConsumerService_onProviderChanged -OUT");\r
return ;\r
\r
}\r
\r
jlong jMessageId = (jlong) sync->getMessageId();\r
jstring jProviderId = env->NewStringUTF(sync->getProviderId().c_str());\r
- jint jState = (jint) sync->getState();\r
-\r
- jclass cls_sync = (jclass) (env->NewLocalRef(g_cls_SyncInfo));\r
- if (!cls_sync)\r
+ jobject syncType = getJavaSyncType(env, sync->getState());\r
+ if (!syncType)\r
+ {\r
+ LOGE ("Failed to Get syncType for SyncInfo");\r
+ if (JNI_EDETACHED == envRet) g_jvm->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
return ;\r
}\r
- jmethodID mid_sync = env->GetMethodID(\r
- cls_sync, "<init>", "(JLjava/lang/String;I)V");\r
- if (!mid_sync)\r
+ jmethodID mid_syncInfo = env->GetMethodID(\r
+ cls_SyncInfo,\r
+ "<init>",\r
+ "(JLjava/lang/String;Lorg/iotivity/service/ns/common/SyncInfo$SyncType;)V");\r
+ if (!mid_syncInfo)\r
{\r
- LOGE ("Failed to Get MethodID for SyncInfo<init>");\r
+ LOGE ("Failed to Get MethodID for SyncInfo");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+\r
+ jobject obj_syncInfo = env->NewObject( cls_SyncInfo, mid_syncInfo,\r
+ jMessageId, jProviderId, syncType);\r
+ if (!obj_syncInfo)\r
+ {\r
+ LOGE ("Failed to Get Object for SyncInfo");\r
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
return ;\r
}\r
- jobject obj_sync = env->NewObject(cls_sync, mid_sync,\r
- jMessageId, jProviderId, jState);\r
\r
jclass cls = env->GetObjectClass(jSyncListener);\r
if (!cls)\r
return ;\r
}\r
\r
- env->CallVoidMethod(jSyncListener, mid, obj_sync);\r
+ env->CallVoidMethod(jSyncListener, mid, obj_syncInfo);\r
\r
env->DeleteLocalRef(jSyncListener);\r
- env->DeleteLocalRef(cls_sync);\r
+ env->DeleteLocalRef(cls_SyncInfo);\r
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
LOGD ("ConsumerService_onSyncInfoReceived - OUT");\r
return ;\r
}\r
\r
const char *providerId = env->GetStringUTFChars(jProviderId, 0);\r
+ LOGD ("java_ProviderId : %s\n", providerId);\r
\r
OIC::Service::NSProvider *provider =\r
OIC::Service::NSConsumerService::getInstance()->getProvider(std::string(providerId));\r
ThrowNSException(NS_ERROR, "Provider with Given Id doesn't exist");\r
return NULL;\r
}\r
-\r
- LOGD ("ProviderId : %s\n", provider->getProviderId().c_str());\r
+ LOGD ("native_ProviderId : %s\n", provider->getProviderId().c_str());\r
\r
jProviderId = env->NewStringUTF(provider->getProviderId().c_str());\r
jlong pProvider = (long)provider;\r
if (!cls_provider)\r
{\r
LOGE ("Failed to Get ObjectClass for Provider");\r
+ ThrowNSException(NS_ERROR, "Couldn't find objectClass for Provider");\r
return NULL;\r
}\r
jmethodID mid_provider = env->GetMethodID(\r
if (!mid_provider)\r
{\r
LOGE ("Failed to Get MethodID for Provider<init>");\r
+ ThrowNSException(NS_ERROR, "Couldn't find MethodID for Provider<init>");\r
return NULL;\r
}\r
jobject obj_provider = env->NewObject(cls_provider, mid_provider,\r
{\r
env->DeleteGlobalRef(g_obj_syncListener);\r
}\r
- g_obj_syncListener = NULL;\r
- g_obj_acceptListener = NULL;\r
g_obj_postListener = (jobject) env->NewGlobalRef(jPostListener);\r
g_obj_syncListener = (jobject) env->NewGlobalRef(jSyncListener);\r
\r
{\r
env->DeleteGlobalRef(g_obj_syncListener);\r
}\r
- g_obj_syncListener = NULL;\r
- g_obj_acceptListener = NULL;\r
g_obj_postListener = (jobject) env->NewGlobalRef(jPostListener);\r
g_obj_syncListener = (jobject) env->NewGlobalRef(jSyncListener);\r
\r
return JNI_ERR;\r
}\r
\r
+ jclass localSyncType = env->FindClass(\r
+ "org/iotivity/service/ns/common/SyncInfo$SyncType");\r
+ if (!localSyncType)\r
+ {\r
+ LOGE("Failed to get local SyncType enum");\r
+ return JNI_ERR;\r
+ }\r
+ g_cls_SyncType = (jclass) (env->NewGlobalRef(localSyncType));\r
+ if (!g_cls_SyncType)\r
+ {\r
+ LOGE("Failed to set Global SyncType reference");\r
+ return JNI_ERR;\r
+ }\r
+\r
jclass localMediaContents = env->FindClass(\r
"org/iotivity/service/ns/common/MediaContents");\r
if (!localMediaContents)\r
env->DeleteLocalRef(localMessage);\r
env->DeleteLocalRef(localProvider);\r
env->DeleteLocalRef(localSyncInfo);\r
+ env->DeleteLocalRef(localSyncType);\r
env->DeleteLocalRef(localMediaContents);\r
env->DeleteLocalRef(localTopicState);\r
env->DeleteLocalRef(localMessageType);\r
env->DeleteGlobalRef(g_cls_Message);\r
env->DeleteGlobalRef(g_cls_Provider);\r
env->DeleteGlobalRef(g_cls_SyncInfo);\r
+ env->DeleteGlobalRef(g_cls_SyncType);\r
env->DeleteGlobalRef(g_cls_MediaContents);\r
env->DeleteGlobalRef(g_cls_TopicState);\r
env->DeleteGlobalRef(g_cls_Message_Type);\r
}
LOGD("Message Source: %s\n", messageSource);
+ // Message Topic
+ jfieldID fid_topic = env->GetFieldID( cls, "mTopic", "Ljava/lang/String;");
+ if (fid_topic == NULL)
+ {
+ LOGE("Error: jfieldID for topic is null");
+ return nullptr;
+ }
+ jstring jtopic = (jstring)env->GetObjectField( jMsg, fid_topic);
+ const char *topic = "";
+ if (jtopic)
+ {
+ topic = env->GetStringUTFChars( jtopic, NULL);
+ }
+ else
+ {
+ LOGD("Info: topic is null");
+ }
+ LOGD("Topic : %s\n", topic);
+
// Message MediaContents
jfieldID fid_media = env->GetFieldID( cls, "mMediaContents",
"Lorg/iotivity/service/ns/common/MediaContents;");
nsMsg->setContentText(std::string(messageBody));
nsMsg->setSourceName(std::string(messageSource));
nsMsg->setMediaContents(media);
+ nsMsg->setTopic(std::string(topic));
env->DeleteLocalRef(cls_messageType);
env->DeleteLocalRef(cls_MediaContents);
{
env->ReleaseStringUTFChars(jmsgSource, messageSource);
}
+ if (jtopic)
+ {
+ env->ReleaseStringUTFChars(jtopic, topic);
+ }
if (jiconImage)
{
env->ReleaseStringUTFChars(jiconImage, iconImage);
}
-jobject getJavaState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)
+jobject getJavaTopicState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)
{
- LOGD("JNIProviderService: getJavaState - IN");
+ LOGD("JNIProviderService: getJavaTopicState - IN");
// TopicState
jclass cls_topicState = (jclass) (env->NewLocalRef(g_cls_TopicState));
if (!cls_topicState)
{
LOGE ("Failed to Get ObjectClass for TopicState Type");
- return nullptr;
+ return NULL;
}
jobject obj_topicState;
if (obj_topicState == NULL)
{
LOGE("Error: object of field TopicState is null");
- return NULL;
}
env->DeleteLocalRef(cls_topicState);
- LOGD("JNIProviderService: getJavaState - OUT");
+ LOGD("JNIProviderService: getJavaTopicState - OUT");
return obj_topicState;
}
return NULL;
}
jobject obj_topicList = env->NewObject(cls_topicList, mid_topicList);
- jmethodID mid_addTopic =
- env->GetMethodID(cls_topicList, "addTopic", "(Lorg/iotivity/service/ns/common/Topic;)V");
+ if (!obj_topicList)
+ {
+ LOGE ("Failed to Get object for TopicsList");
+ return NULL;
+ }
+ jmethodID mid_addTopic = env->GetMethodID(cls_topicList, "addTopic",
+ "(Ljava/lang/String;Lorg/iotivity/service/ns/common/Topic$TopicState;)V");
+ if (!mid_addTopic)
+ {
+ LOGE ("Failed to Get MethodID for addTopic");
+ return NULL;
+ }
for (auto it : topicList->getTopicsList())
{
- jobject jState = getJavaState(env, it->getState());
+ jobject jState = getJavaTopicState(env, it->getState());
std::string topicName = it->getTopicName();
jstring jTopicName = env->NewStringUTF(topicName.c_str());
env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);
return obj_topicList;
}
+jobject getJavaSyncType(JNIEnv *env, OIC::Service::NSSyncInfo::NSSyncType nsType)
+{
+ LOGD ("JNIProviderService: getJavaSyncType - IN");
+
+ // SyncType
+ jclass cls_SyncType = (jclass) (env->NewLocalRef(g_cls_SyncType));
+ if (!cls_SyncType)
+ {
+ 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);
+ }
+ 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);
+ }
+ 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);
+ }
+
+ }
+
+ if (syncType == NULL)
+ {
+ LOGE("Error: object of field Synctype is null");
+ }
+
+ env->DeleteLocalRef(cls_SyncType);
+ LOGD ("JNIProviderService: getJavaSyncType - OUT");
+ return syncType;
+}
+
+
void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
{
LOGD("JNIProviderService_onSubscribeListenerCb - IN");
jmethodID mid_consumer = env->GetMethodID(
cls_consumer,
"<init>",
- "(JLjava/lang/String;Lorg/iotivity/service/ns/provider/Consumer)V");
+ "(Ljava/lang/String;)V");
if (!mid_consumer)
{
LOGE ("Failed to Get MethodID for Consumer<init>");
jlong jMessageId = (long) sync->getMessageId();
jstring jProviderId = env->NewStringUTF(sync->getProviderId().c_str());
- jobject syncType;
-
- jclass cls_SyncType = (jclass) (env->NewLocalRef(g_cls_SyncType));
- if (!cls_SyncType)
+ jobject syncType = getJavaSyncType(env, sync->getState());
+ if (!syncType)
{
- LOGE ("Failed to Get ObjectClass for SyncType");
+ LOGE ("Failed to Get syncType for SyncInfo");
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
return ;
}
- switch (sync->getState())
- {
- 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);
- }
- 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);
- }
- 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);
- }
-
- }
-
jclass cls_SyncInfo = (jclass) (env->NewLocalRef(g_cls_SyncInfo));
if (!cls_SyncInfo)
{
jmethodID mid_syncInfo = env->GetMethodID(
cls_SyncInfo,
"<init>",
- "(JLjava/lang/String;Lorg/iotivity/service/ns/common/SyncInfo$SyncType)V");
+ "(JLjava/lang/String;Lorg/iotivity/service/ns/common/SyncInfo$SyncType;)V");
if (!mid_syncInfo)
{
LOGE ("Failed to Get MethodID for SyncInfo");
return ;
}
- jobject obj_syncInfo = env->NewObject( cls_SyncInfo, mid_syncInfo, jMessageId, jProviderId,
- syncType);
+ jobject obj_syncInfo = env->NewObject( cls_SyncInfo, mid_syncInfo,
+ jMessageId, jProviderId, syncType);
+ if (!obj_syncInfo)
+ {
+ LOGE ("Failed to Get Object for SyncInfo");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
jclass cls = env->GetObjectClass( jSyncListener);
if (!cls)
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
return;
}
- jmethodID mid = env->GetMethodID( cls, "onMessageSynchronized",
- "(Lorg/iotivity/service/ns/common/SyncInfo)V");
+ jmethodID mid = env->GetMethodID(
+ cls,
+ "onSyncInfoReceived",
+ "(Lorg/iotivity/service/ns/common/SyncInfo;)V");
if (!mid)
{
LOGE("Failed to Get MethodID");
env->DeleteLocalRef(jSyncListener);
env->DeleteLocalRef(cls_SyncInfo);
- env->DeleteLocalRef(cls_SyncType);
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
LOGD("JNIProviderService: OnSyncInfoListenerCb - OUT");
if (!jconId)
{
ThrowNSException(NS_ERROR, "ProviderId cannot be null");
- return (jint) OIC::Service::NSResult::ERROR;;
+ return (jint) OIC::Service::NSResult::ERROR;
}
const char *conId = env->GetStringUTFChars( jconId, NULL);
std::string consumerId(conId);
OIC::Service::NSConsumer *consumer =
OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
- int result = consumer->acceptSubscription(consumer, (bool)jAccepted);
- if (jAccepted)
- {
- LOGD("Subscription Accepted");
- }
- else
- {
- LOGD("Subscription Denied");
- }
+ if (consumer)
+ return (jint) consumer->acceptSubscription(consumer, (bool)jAccepted);
+ LOGE("Couldn't find consumer");
LOGD("JNIProviderService: nativeAcceptSubscription - OUT");
- return result;
+ return (jint) OIC::Service::NSResult::ERROR;
}
JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeSelectTopic
(JNIEnv *env, jobject jObj, jstring jConsumerId, jstring jTopicName)
ThrowNSException(NS_ERROR, "Consumer does exists");
return NULL;
}
+ env->ReleaseStringUTFChars(jConsumerId, id);
OIC::Service::NSTopicsList *topicList = nsConsumer->getConsumerTopics();
if (topicList == nullptr)
{
return NULL;
}
jobject obj_topicList = getJavaTopicsList(env, topicList);
-
- env->ReleaseStringUTFChars(jConsumerId, id);
LOGD("JNIProviderService: nativeGetConsumerTopics - OUT");
return obj_topicList;
}