#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;
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;
LOGE("Error: jfieldID for message ttl is null");
return nullptr;
}
- jlong jttl = (jlong) env->GetObjectField( jMsg, fid_ttl);
- uint64_t ttl = jttl;
- LOGD("Message ID: %lld\n", ttl);
+ jlong jttl = (jlong) env->GetLongField( jMsg, fid_ttl);
+ uint64_t ttl = jttl;
+ LOGD("TTL: %d\n", ttl);
// Message Title
jfieldID fid_title = env->GetFieldID( cls, "mTitle", "Ljava/lang/String;");
return nullptr;
}
jobject jmedia = env->GetObjectField( jMsg, fid_media);
+ OIC::Service::NSMediaContents *media = nullptr;
if (jmedia == NULL)
{
- LOGE("Error: jmedia object of MediaContents inside Message is null");
- return nullptr;
+ LOGD("Info: jmedia object of MediaContents inside Message is null");
}
- jclass cls_MediaContents = (jclass) (env->NewLocalRef(g_cls_MediaContents));
- if (!cls_MediaContents)
+ else
{
- LOGE ("Failed to Get ObjectClass for class MediaContents");
- return nullptr;
+ jclass cls_MediaContents = (jclass) (env->NewLocalRef(g_cls_MediaContents));
+ if (!cls_MediaContents)
+ {
+ LOGE ("Failed to Get ObjectClass for class MediaContents");
+ return nullptr;
+ }
+ jfieldID fid_icon = env->GetFieldID( cls_MediaContents, "mIconImage", "Ljava/lang/String;");
+ if (fid_icon == NULL)
+ {
+ LOGE("Error: jfieldID for iconImage is null");
+ return nullptr;
+ }
+ jstring jiconImage = (jstring)env->GetObjectField( jmedia, fid_icon);
+ const char *iconImage = "";
+ if (jiconImage)
+ {
+ iconImage = env->GetStringUTFChars( jiconImage, NULL);
+ media = new OIC::Service::NSMediaContents(std::string(iconImage));
+ env->ReleaseStringUTFChars(jiconImage, iconImage);
+ }
+ else
+ {
+ LOGD("Info: iconImage is null");
+ }
+ env->DeleteLocalRef(cls_MediaContents);
+ LOGD("iconImage: %s\n", iconImage);
}
- jfieldID fid_icon = env->GetFieldID( cls_MediaContents, "mIconImage", "Ljava/lang/String;");
- if (fid_icon == NULL)
+
+ // Message ExtraInfo
+ jfieldID fid_extraInfo = env->GetFieldID( cls, "mExtraInfo",
+ "Lorg/iotivity/base/OcRepresentation;");
+ if (fid_extraInfo == NULL)
{
- LOGE("Error: jfieldID for iconImage is null");
+ LOGE("Error: jfieldID for mExtraInfo is null");
return nullptr;
}
- jstring jiconImage = (jstring)env->GetObjectField( jmedia, fid_icon);
- const char *iconImage = "";
- if (jiconImage)
+ jobject jExtraInfo = env->GetObjectField( jMsg, fid_extraInfo);
+ OC::OCRepresentation *representation = nullptr;
+ if (jExtraInfo == NULL)
{
- iconImage = env->GetStringUTFChars( jiconImage, NULL);
+ LOGE("Error: jExtraInfo object of Message is null");
}
else
{
- LOGD("Info: iconImage is null");
+ 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");
+ }
}
- LOGD("iconImage: %s\n", iconImage);
-
- 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));
nsMsg->setTitle(std::string(messageTitle));
nsMsg->setContentText(std::string(messageBody));
nsMsg->setSourceName(std::string(messageSource));
- nsMsg->setMediaContents(media);
+ if(media != nullptr)
+ {
+ nsMsg->setMediaContents(media);
+ }
nsMsg->setTopic(std::string(topic));
+ if (representation != nullptr)
+ {
+ nsMsg->setExtraInfo(*representation);
+ }
env->DeleteLocalRef(cls_messageType);
- env->DeleteLocalRef(cls_MediaContents);
if (jtime)
{
{
env->ReleaseStringUTFChars(jtopic, topic);
}
- if (jiconImage)
- {
- env->ReleaseStringUTFChars(jiconImage, iconImage);
- }
LOGD("JNIProviderService: getMessage - OUT");
return nsMsg;
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;
return NULL;
}
- jobject obj_topicState;
switch (nsState)
{
case OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED:
{
static jfieldID fieldID = env->GetStaticFieldID(cls_topicState,
"UNSUBSCRIBED", "Lorg/iotivity/service/ns/common/Topic$TopicState;");
- obj_topicState = env->GetStaticObjectField(cls_topicState, fieldID);
+ return env->GetStaticObjectField(cls_topicState, fieldID);
}
case OIC::Service::NSTopic::NSTopicState::SUBSCRIBED:
{
static jfieldID fieldID = env->GetStaticFieldID(cls_topicState,
"SUBSCRIBED", "Lorg/iotivity/service/ns/common/Topic$TopicState;");
- obj_topicState = env->GetStaticObjectField(cls_topicState, fieldID);
+ return env->GetStaticObjectField(cls_topicState, fieldID);
}
+ default:
+ return NULL;
}
- if (obj_topicState == NULL)
- {
- LOGE("Error: object of field TopicState is null");
- }
- env->DeleteLocalRef(cls_topicState);
+
LOGD("JNIProviderService: getJavaTopicState - OUT");
- return obj_topicState;
+ return NULL;
}
jobject getJavaTopicsList(JNIEnv *env, OIC::Service::NSTopicsList *topicList)
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;
}
if (!jSubscriptionListener)
{
LOGE ("Failed to Get jSubscriptionListener");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
return ;
}
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 ;
}
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);
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(
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;
}
if (!jSyncListener)
{
LOGE ("Failed to Get jSyncListener");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet) g_jvm_provider->DetachCurrentThread();
return ;
}
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(
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 ;
}
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 ;
}
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(
cls,
- "onSyncInfoReceived",
+ "onMessageSynchronized",
"(Lorg/iotivity/service/ns/common/SyncInfo;)V");
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;
}
JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeStart
-(JNIEnv *env, jobject jObj, jboolean jPolicy, jobject jSubscriptionListener, jobject jSyncListener)
+(JNIEnv *env, jobject jObj, jobject jSubscriptionListener, jobject jSyncListener,
+ jboolean jPolicy, jstring jUserInfo, jboolean jResourceSecurity)
{
LOGD("JNIProviderService: nativeStart - IN");
if (!jSubscriptionListener || !jSyncListener)
OIC::Service::NSProviderService::ProviderConfig cfg;
cfg.m_subscribeRequestCb = onSubscribeListenerCb;
cfg.m_syncInfoCb = onSyncInfoListenerCb;
- cfg.policy = (bool) jPolicy;
+ cfg.subControllability = (bool) jPolicy;
+ if (!jUserInfo)
+ {
+ const char *info = env->GetStringUTFChars( jUserInfo, NULL);
+ std::string userInfo(info);
+ cfg.userInfo = userInfo;
+ }
+ cfg.resourceSecurity = (bool) jResourceSecurity;
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->Start(cfg);
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->start(cfg);
if (result != OIC::Service::NSResult::OK)
{
LOGE("Fail to start NSProviderService");
{
LOGD("JNIProviderService: nativeStop - IN");
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->Stop();
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->stop();
if (result != OIC::Service::NSResult::OK)
{
LOGD("Fail to stop NSProvider service");
return (jint) OIC::Service::NSResult::ERROR;
}
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->SendMessage(nsMsg);
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->sendMessage(nsMsg);
if (result != OIC::Service::NSResult::OK)
{
LOGD("Fail to send NSProvider Message");
(JNIEnv *env, jobject jObj, jlong messageId , jint syncState)
{
LOGD("JNIProviderService: nativeSendSyncInfo - IN");
- OIC::Service::NSProviderService::getInstance()->SendSyncInfo( messageId,
+ OIC::Service::NSProviderService::getInstance()->sendSyncInfo( messageId,
(OIC::Service::NSSyncInfo::NSSyncType) syncState);
LOGD("JNIProviderService: nativeSendSyncInfo - OUT");
return;
(JNIEnv *env, jobject jObj)
{
LOGD("JNIProviderService: nativeCreateMessage - IN");
- OIC::Service::NSMessage* message =
- 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;
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)
const char *address = env->GetStringUTFChars( jstr, NULL);
std::string servAddress(address);
OIC::Service::NSResult result =
- OIC::Service::NSProviderService::getInstance()->EnableRemoteService(
+ OIC::Service::NSProviderService::getInstance()->enableRemoteService(
servAddress);
if (result != OIC::Service::NSResult::OK)
{
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)
const char *address = env->GetStringUTFChars( jstr, NULL);
std::string servAddress(address);
OIC::Service::NSResult result =
- OIC::Service::NSProviderService::getInstance()->DisableRemoteService(
+ OIC::Service::NSProviderService::getInstance()->disableRemoteService(
servAddress);
if (result != OIC::Service::NSResult::OK)
{
return (jint) result;
}
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeAddTopic
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeRegisterTopic
(JNIEnv *env, jobject jObj, jstring jTopicName)
{
- LOGD("JNIProviderService: nativeAddTopic - IN");
+ LOGD("JNIProviderService: nativeRegisterTopic - IN");
if (!jTopicName)
{
ThrowNSException(NS_ERROR, "Topic Name Can't be NULL");
}
const char *name = env->GetStringUTFChars( jTopicName, NULL);
std::string topicName(name);
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->AddTopic(
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->registerTopic(
topicName);
if (result != OIC::Service::NSResult::OK)
{
- LOGE("Fail to Add Topic");
+ LOGE("Fail to Register Topic");
}
env->ReleaseStringUTFChars(jTopicName, name);
- LOGD("JNIProviderService: nativeAddTopic - OUT");
+ LOGD("JNIProviderService: nativeRegisterTopic - OUT");
return (jint) result;
}
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeDeleteTopic
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeUnregisterTopic
(JNIEnv *env, jobject jObj, jstring jTopicName)
{
- LOGD("JNIProviderService: nativeDeleteTopic - IN");
+ LOGD("JNIProviderService: nativeUnregisterTopic - IN");
if (!jTopicName)
{
ThrowNSException(NS_ERROR, "Topic Name Can't be NULL");
}
const char *name = env->GetStringUTFChars( jTopicName, NULL);
std::string topicName(name);
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->DeleteTopic(
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->unregisterTopic(
topicName);
if (result != OIC::Service::NSResult::OK)
{
- LOGE("Fail to Add Topic");
+ LOGE("Fail to Unregister Topic");
}
env->ReleaseStringUTFChars(jTopicName, name);
- LOGD("JNIProviderService: nativeDeleteTopic - OUT");
+ LOGD("JNIProviderService: nativeUnregisterTopic - OUT");
return (jint) result;
}
-JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeGetTopics
+JNIEXPORT jobject JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeGetRegisteredTopicList
(JNIEnv *env, jobject jObj)
{
- LOGD("JNIProviderService: nativeGetTopics - IN");
+ LOGD("JNIProviderService: nativeGetRegisteredTopicList - IN");
OIC::Service::NSTopicsList *topicList =
- OIC::Service::NSProviderService::getInstance()->GetTopics();
+ OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (topicList == nullptr)
{
ThrowNSException(NS_ERROR, "Topic List doesn't exist");
jobject obj_topicList = getJavaTopicsList(env, topicList);
- LOGD("JNIProviderService: nativeGetTopics - OUT");
+ LOGD("JNIProviderService: nativeGetRegisteredTopicList - OUT");
return obj_topicList;
}
JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeAcceptSubscription
-(JNIEnv *env, jobject jObj, jobject jConsumer, jboolean jAccepted)
+(JNIEnv *env, jobject jObj, jstring jConsumerId, jboolean jAccepted)
{
LOGD("JNIProviderService: nativeAcceptSubscription - IN");
-
- jclass consumerClass = env->GetObjectClass( jConsumer);
- if (!consumerClass)
- {
- ThrowNSException(NS_ERROR, "Failed to Get ObjectClass for Consumer");
- return (jint) OIC::Service::NSResult::ERROR;
- }
-
- // Consumer ID
- jfieldID fid_id = env->GetFieldID(consumerClass, "mConsumerId", "Ljava/lang/String;");
- if (fid_id == NULL)
- {
- LOGE("Error: jfieldID for mConsumerId is null");
- ThrowNSException(NS_ERROR, "ConsumerId not found");
- return (jint) OIC::Service::NSResult::ERROR;
- }
-
- jstring jconId = (jstring)env->GetObjectField( jConsumer, fid_id);
- if (!jconId)
+ if (!jConsumerId)
{
- ThrowNSException(NS_ERROR, "ProviderId cannot be null");
+ ThrowNSException(NS_ERROR, "ConsumerId Can't be NULL");
return (jint) OIC::Service::NSResult::ERROR;
}
- const char *conId = env->GetStringUTFChars( jconId, NULL);
- std::string consumerId(conId);
- env->ReleaseStringUTFChars(jconId, conId);
-
+ const char *id = env->GetStringUTFChars( jConsumerId, NULL);
+ std::string consumerId(id);
LOGD("Consumer ID: %s\n", consumerId.c_str());
OIC::Service::NSConsumer *consumer =
OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
if (consumer)
- return (jint) consumer->acceptSubscription(consumer, (bool)jAccepted);
+ return (jint) consumer->acceptSubscription((bool)jAccepted);
LOGE("Couldn't find consumer");
LOGD("JNIProviderService: nativeAcceptSubscription - OUT");
return (jint) OIC::Service::NSResult::ERROR;
}
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeSelectTopic
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeSetConsumerTopic
(JNIEnv *env, jobject jObj, jstring jConsumerId, jstring jTopicName)
{
- LOGD("JNIProviderService: nativeSelectTopic - IN");
+ LOGD("JNIProviderService: nativeSetConsumerTopic - IN");
if (!jConsumerId || !jTopicName)
{
ThrowNSException(NS_ERROR, "Topic Name or ConsumerId Can't be NULL");
ThrowNSException(NS_ERROR, "Consumer does exists");
return (jint) OIC::Service::NSResult::ERROR;
}
- OIC::Service::NSResult result = nsConsumer->selectTopic(topicName);
+ OIC::Service::NSResult result = nsConsumer->setTopic(topicName);
if (result != OIC::Service::NSResult::OK)
{
}
env->ReleaseStringUTFChars(jTopicName, name);
env->ReleaseStringUTFChars(jConsumerId, id);
- LOGD("JNIProviderService: nativeSelectTopic - OUT");
+ LOGD("JNIProviderService: nativeSetConsumerTopic - OUT");
return (jint) result;
}
-JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeUnselectTopic
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeUnsetConsumerTopic
(JNIEnv *env, jobject jObj, jstring jConsumerId, jstring jTopicName)
{
- LOGD("JNIProviderService: nativeUnselectTopic - IN");
+ LOGD("JNIProviderService: nativeUnsetConsumerTopic - IN");
if (!jConsumerId || !jTopicName)
{
ThrowNSException(NS_ERROR, "Topic Name or ConsumerId Can't be NULL");
ThrowNSException(NS_ERROR, "Consumer does exists");
return (jint) OIC::Service::NSResult::ERROR;
}
- OIC::Service::NSResult result = nsConsumer->unselectTopic(topicName);
+ OIC::Service::NSResult result = nsConsumer->unsetTopic(topicName);
if (result != OIC::Service::NSResult::OK)
{
}
env->ReleaseStringUTFChars(jTopicName, name);
env->ReleaseStringUTFChars(jConsumerId, id);
- LOGD("JNIProviderService: nativeUnselectTopic - OUT");
+ LOGD("JNIProviderService: nativeUnsetConsumerTopic - OUT");
return (jint) result;
}
-JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeGetConsumerTopics
+JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeGetConsumerTopicList
(JNIEnv *env, jobject jObj, jstring jConsumerId)
{
- LOGD("JNIProviderService: nativeGetConsumerTopics - IN");
+ LOGD("JNIProviderService: nativeGetConsumerTopicList - IN");
if (!jConsumerId)
{
ThrowNSException(NS_ERROR, "Topic Name or ConsumerId Can't be NULL");
return NULL;
}
env->ReleaseStringUTFChars(jConsumerId, id);
- OIC::Service::NSTopicsList *topicList = nsConsumer->getConsumerTopics();
+ OIC::Service::NSTopicsList *topicList = nsConsumer->getConsumerTopicList();
if (topicList == nullptr)
{
ThrowNSException(NS_ERROR, "Topic List doesn't exist");
return NULL;
}
jobject obj_topicList = getJavaTopicsList(env, topicList);
- LOGD("JNIProviderService: nativeGetConsumerTopics - OUT");
+ LOGD("JNIProviderService: nativeGetConsumerTopicList - OUT");
return obj_topicList;
}
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)
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);
env->DeleteLocalRef(localTopic);
env->DeleteLocalRef(localTopicsList);
env->DeleteLocalRef(localTopicState);
+ env->DeleteLocalRef(localOcRepresentation);
return NSExceptionInit(env);
}
env->DeleteGlobalRef(g_cls_Topic);
env->DeleteGlobalRef(g_cls_TopicsList);
env->DeleteGlobalRef(g_cls_TopicState);
+ env->DeleteGlobalRef(g_cls_OcRepresentation);
}