private int type;
private MessageType(int type)
- {
- this.type = type;
- }
-
- public int getMessageType()
- {
- return this.type;
- }
+ {
+ this.type = type;
+ }
+
+ public int getMessageType()
+ {
+ return this.type;
+ }
};
public long mMessageId = 0;
public String mProviderId = null;
public String mTitle = null;
public String mContentText = null;
public MediaContents mMediaContents = null;
+ public String mTopic = null;
private long mNativeHandle = 0;
return mMediaContents;
}
+ public String getTopic()
+ {
+ return mTopic;
+ }
public void setSourceName (String sourceName)
{
mSourceName = sourceName;
{
mMediaContents = mediaContents;
}
+
+ public void setTopic(String topic)
+ {
+ mTopic = topic;
+ }
}
--- /dev/null
+//******************************************************************
+//
+// Copyright 2016 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+package org.iotivity.service.ns.common;
+import android.util.Log;
+/**
+ * @class Topic
+ * @brief This class provides implementation of Notification Topic object.
+ */
+public class Topic
+{
+ private static final String LOG_TAG = "NotificationService_Topic";
+
+ public enum TopicState
+ {
+ UNSUBSCRIBED (0),
+ SUBSCRIBED (1);
+ private int type;
+
+ private TopicState(int type)
+ {
+ this.type = type;
+ }
+
+ public int getTopicState()
+ {
+ return this.type;
+ }
+
+ };
+ public String mTopicName = null;
+ public TopicState mState = TopicState.UNSUBSCRIBED;
+
+ public Topic(String topicName, TopicState state)
+ {
+ Log.i (LOG_TAG, "Topic()");
+
+ mTopicName = topicName;
+ mState = state;
+ }
+
+ public String getTopicName()
+ {
+ return mTopicName;
+ }
+
+ public void setTopicName(String topicName)
+ {
+ mTopicName = topicName;
+ }
+
+ public TopicState getState()
+ {
+ return mState;
+ }
+
+ public void setState(TopicState state)
+ {
+ mState = state;
+ }
+
+}
--- /dev/null
+//******************************************************************
+//
+// Copyright 2016 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+package org.iotivity.service.ns.common;
+import android.util.Log;
+import java.util.Vector;
+import java.util.Iterator;
+/**
+ * @class TopicsList
+ * @brief This class provides implementation of Topics List
+ */
+public class TopicsList
+{
+ private static final String LOG_TAG = "NotificationService_TopicList";
+
+ public Vector<Topic> mTopicsList = new Vector<Topic>();
+
+ public void addTopic(String topicname, Topic.TopicState state)
+ {
+ mTopicsList.add(new Topic(topicname,state));
+ }
+
+ public void removeTopic(String topicName)
+ {
+ Iterator <Topic> it = getTopicsList().iterator();
+ while(it.hasNext())
+ {
+ if(it.next().getTopicName().equals(topicName))
+ {
+ mTopicsList.remove(it.next());
+ }
+ }
+ }
+
+ public Vector<Topic> getTopicsList()
+ {
+ return mTopicsList;
+ }
+
+}
+
import android.util.Log;
import org.iotivity.service.ns.common.*;
+import java.util.Vector;
/**
* @class ConsumerService
System.loadLibrary("notification_consumer_jni");
}
+ public enum Response
+ {
+ ALLOW(1),
+ DENY(2),
+ TOPIC(3);
+ private int type;
+
+ private Response(int type)
+ {
+ this.type = type;
+ }
+
+ public int getResponseType()
+ {
+ return this.type;
+ }
+ };
+
private static ConsumerService instance;
static
{
public void Start(
OnProviderDiscoveredListner onProviderDiscoveredListner,
- OnSubscriptionAcceptedListener onSubscriptionAcceptedListener
+ OnProviderChangedListener onProviderChangedListener
) throws NSException
{
- nativeStart(onProviderDiscoveredListner, onSubscriptionAcceptedListener);
+ nativeStart(onProviderDiscoveredListner, onProviderChangedListener);
}
public void Stop() throws NSException
return nativeGetProvider(providerId);
}
+ public Message GetMessage(long messageId) throws NSException
+ {
+ return nativeGetMessage(messageId);
+ }
+
public interface OnProviderDiscoveredListner
{
public void onProviderDiscovered(Provider provider);
}
- public interface OnSubscriptionAcceptedListener
+ public interface OnProviderChangedListener
{
- public void onSubscriptionAccepted(Provider provider);
+ public void onProviderChanged(Provider provider , Response response);
}
private native void nativeStart (
OnProviderDiscoveredListner onProviderDiscoveredListner,
- OnSubscriptionAcceptedListener onSubscriptionAcceptedListener
+ OnProviderChangedListener onProviderChangedListener
) throws NSException;
private native void nativeStop() throws NSException;
private native void nativeEnableRemoteService(String serverAddress) throws NSException;
private native void nativeRescanProvider() throws NSException;
private native Provider nativeGetProvider(String providerId) throws NSException;
+ private native Message nativeGetMessage(long messageId) throws NSException;
}
import android.util.Log;
import org.iotivity.service.ns.common.*;
+import java.util.Vector;
/**
* @class Provider
private static final String LOG_TAG = "ConsumerService_Provider";
public String mProviderId = null;
+ TopicsList mTopicsList = new TopicsList();
private long mNativeHandle = 0;
public Provider(String providerId)
return mProviderId ;
}
+ public TopicsList getTopicsList()
+ {
+ return mTopicsList ;
+ }
+
public void Subscribe() throws NSException
{
nativeSubscribe();
nativeSetListener(onMessageReceivedListner, onSyncInfoReceivedListner);
}
+ public int SelectInterestTopics(Vector<Topic> topicsList) throws NSException
+ {
+ return nativeSelectInterestTopics(topicsList);
+ }
+
public interface OnMessageReceivedListner
{
public void onMessageReceived(Message message);
OnMessageReceivedListner onMessageReceivedListner,
OnSyncInfoReceivedListner onSyncInfoReceivedListner
) throws NSException;
+ private native int nativeSelectInterestTopics(Vector<Topic> topicsList) throws NSException;
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
package org.iotivity.service.ns.provider;
import org.iotivity.service.ns.common.*;
+import java.util.Vector;
/**
* @class Consumer
* @brief This class provides implementation of Notification Consumer object.
*/
public class Consumer
{
- public native int nativeAcceptSubscription(Consumer consumer, boolean accepted);
- public String mConsumerId;
+ public String mConsumerId = null;
public Consumer(final String consumerId)
{
return -1;
}
+ public int SelectTopic(String topicName) throws NSException
+ {
+ return nativeSelectTopic(mConsumerId, topicName);
+ }
+ public int UnselectTopic(String topicName) throws NSException
+ {
+ return nativeUnselectTopic(mConsumerId, topicName);
+ }
+
+ public TopicsList GetConsumerTopics() throws NSException
+ {
+ return nativeGetConsumerTopics(mConsumerId);
+ }
+
+ public native int nativeAcceptSubscription(Consumer consumer, boolean accepted);
+ public native int nativeSelectTopic(String consumerId, String topicName);
+ public native int nativeUnselectTopic(String consumerId, String topicName);
+ public native TopicsList nativeGetConsumerTopics(String consumerId);
}
\ No newline at end of file
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
package org.iotivity.service.ns.provider;
import org.iotivity.service.ns.common.*;
+import java.util.Vector;
/**
* @class ProviderService
* @brief This class provides a set of Java APIs for Notification ProviderService.
System.loadLibrary("notification_provider_wrapper");
System.loadLibrary("notification_provider_jni");
}
- public native int nativeStart(boolean policy,
- OnSubscriptionListener subscriptionListener,
- OnSyncInfoListener syncInfoListener);
- public native int nativeStop();
- public native int nativeSendMessage(Message message);
- public native void nativeSendSyncInfo( long messageId , int type);
- public native int nativeEnableRemoteService(String servAdd);
- public native int nativeDisableRemoteService(String servAdd);
private static ProviderService instance;
OnSyncInfoListener syncInfoListener) throws NSException
{
- int result = nativeStart(policy, subscriptionListener, syncInfoListener);
- return result;
+ return nativeStart(policy, subscriptionListener, syncInfoListener);
}
public int Stop() throws NSException
{
- int result = nativeStop();
- return result;
+ return nativeStop();
}
public int SendMessage(Message message) throws NSException
{
- int result = nativeSendMessage(message);
- return result;
+ return nativeSendMessage(message);
}
public void SendSyncInfo ( long messageId , SyncInfo.SyncType syncType) throws NSException
{
nativeSendSyncInfo(messageId, syncType.ordinal());
- return ;
+ return;
}
public int EnableRemoteService(String servAdd) throws NSException
{
- int result = nativeEnableRemoteService(servAdd);
- return result;
+ return nativeEnableRemoteService(servAdd);
}
public int DisableRemoteService(String servAdd) throws NSException
{
- int result = nativeDisableRemoteService(servAdd);
- return result;
+ return nativeDisableRemoteService(servAdd);
}
+ public int AddTopic(String topicName) throws NSException
+ {
+ return nativeAddTopic(topicName);
+ }
+ public int DeleteTopic(String topicName) throws NSException
+ {
+ return nativeDeleteTopic(topicName);
+ }
+ public TopicsList GetTopics() throws NSException
+ {
+ return nativeGetTopics();
+ }
+
+ public native int nativeStart(boolean policy,
+ OnSubscriptionListener subscriptionListener,
+ OnSyncInfoListener syncInfoListener);
+ public native int nativeStop();
+ public native int nativeSendMessage(Message message);
+ public native void nativeSendSyncInfo( long messageId , int type);
+ public native int nativeEnableRemoteService(String servAdd);
+ public native int nativeDisableRemoteService(String servAdd);
+ public native int nativeAddTopic(String topicName);
+ public native int nativeDeleteTopic(String topicName);
+ public native TopicsList nativeGetTopics();
}
jclass g_cls_Provider;\r
jclass g_cls_SyncInfo;\r
jclass g_cls_MediaContents;\r
+jclass g_cls_TopicState;\r
+jclass g_cls_Message_Type;\r
+jclass g_cls_Response;\r
+jclass g_cls_Topic;\r
+jclass g_cls_TopicsList;\r
\r
static JNIEnv *GetJNIEnv(jint *ret)\r
{\r
}\r
}\r
\r
-void onDiscoverProvider(OIC::Service::NSProvider *provider)\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 getJavaState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)\r
{\r
- LOGD ("ConsumerService_onDiscoverProvider");\r
+ LOGD ("ConsumerService_getJavaState - IN");\r
\r
- jint envRet;\r
- JNIEnv *env = GetJNIEnv(&envRet);\r
- if (NULL == env) return ;\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
+ }\r
\r
- jobject jDiscoverListener = (jobject) env->NewLocalRef(g_obj_discoverListener);\r
- if (!jDiscoverListener)\r
+ jobject obj_topicState;\r
+ switch (nsState)\r
{\r
- LOGE ("Failed to Get jDiscoverListener");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ case OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED:\r
+ {\r
+ static jfieldID fieldID = env->GetStaticFieldID(cls_topicState,\r
+ "UNSUBSCRIBED", "Lorg/iotivity/service/ns/common/Topic$TopicState;");\r
+ obj_topicState = env->GetStaticObjectField(cls_topicState, fieldID);\r
+ }\r
+ case OIC::Service::NSTopic::NSTopicState::SUBSCRIBED:\r
+ {\r
+ static jfieldID fieldID = env->GetStaticFieldID(cls_topicState,\r
+ "SUBSCRIBED", "Lorg/iotivity/service/ns/common/Topic$TopicState;");\r
+ obj_topicState = env->GetStaticObjectField(cls_topicState, fieldID);\r
+ }\r
+\r
+ }\r
+ if (obj_topicState == NULL)\r
+ {\r
+ LOGE("Error: object of field TopicState is null");\r
+ return NULL;\r
}\r
\r
- LOGD ("ProviderId : %s\n", provider->getProviderId().c_str());\r
+ env->DeleteLocalRef(cls_topicState);\r
+ LOGD ("ConsumerService_getJavaState - OUT");\r
+ return obj_topicState;\r
+}\r
\r
- jstring jProviderId = env->NewStringUTF(provider->getProviderId().c_str());\r
- jlong pProvider = (long)provider;\r
\r
- jclass cls_provider = (jclass) (env->NewLocalRef(g_cls_Provider));\r
- if (!cls_provider)\r
+jobject getJavaTopicsList(JNIEnv *env, OIC::Service::NSTopicsList *topicList)\r
+{\r
+ LOGD ("ConsumerService_getJavaTopicsList - IN");\r
+ jclass cls_topicList = (jclass) (env->NewLocalRef(g_cls_TopicsList));\r
+ if (!cls_topicList)\r
{\r
- LOGE ("Failed to Get ObjectClass for Provider");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ LOGE ("Failed to Get ObjectClass for TopicsList");\r
+ return NULL;\r
}\r
- jmethodID mid_provider = env->GetMethodID(\r
- cls_provider, "<init>", "(Ljava/lang/String;)V");\r
- if (!mid_provider)\r
+ jmethodID mid_topicList = env->GetMethodID(cls_topicList, "<init>", "()V");\r
+ if (!mid_topicList)\r
{\r
- LOGE ("Failed to Get MethodID for Provider<init>");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ LOGE ("Failed to Get MethodID for TopicsList<init>");\r
+ return NULL;\r
}\r
- jobject obj_provider = env->NewObject(cls_provider, mid_provider,\r
- jProviderId);\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
+ for (auto it : topicList->getTopicsList())\r
+ {\r
+ jobject jState = getJavaState(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
+ }\r
+ env->DeleteLocalRef(cls_topicList);\r
+ LOGD ("ConsumerService_getJavaTopicsList - OUT");\r
+ return obj_topicList;\r
+}\r
\r
- jfieldID nativeHandle = env->GetFieldID(cls_provider, "mNativeHandle", "J");\r
- if (!nativeHandle)\r
+OIC::Service::NSTopic::NSTopicState getNativeState(JNIEnv *env, jobject jTopic)\r
+{\r
+ LOGD ("ConsumerService_getNativeState - IN");\r
+\r
+ jclass cls_topic = env->GetObjectClass( jTopic);\r
+ // TopicState\r
+ jclass cls_TopicState = (jclass) (env->NewLocalRef(g_cls_TopicState));\r
+ if (!cls_TopicState)\r
{\r
- LOGE("Failed to get nativeHandle for Provider");\r
- return;\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
}\r
- env->SetLongField(obj_provider, nativeHandle, pProvider);\r
+ jmethodID mid = env->GetMethodID(cls_TopicState, "ordinal", "()I");\r
+ jfieldID fid_state = env->GetFieldID( cls_TopicState, "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
+ }\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
+ }\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
\r
- jclass cls = env->GetObjectClass(jDiscoverListener);\r
- if (!cls)\r
+}\r
+\r
+const char *getNativeTopicName(JNIEnv *env, jobject jTopic)\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 (fid_name == NULL)\r
{\r
- LOGE ("Failed to Get ObjectClass for jDiscoverListener");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ LOGE("Error: jfieldID for Topic Name is null");\r
+ return nullptr;\r
}\r
- jmethodID mid = env->GetMethodID(\r
- cls,\r
- "onProviderDiscovered",\r
- "(Lorg/iotivity/service/ns/consumer/Provider;)V");\r
- if (!mid)\r
+ jstring jTopicName = (jstring) env->GetObjectField( jTopic, fid_name);\r
+ const char *topicName;\r
+ if (jTopicName)\r
{\r
- LOGE ("Failed to Get MethodID for onProviderDiscovered");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ topicName = env->GetStringUTFChars( jTopicName, NULL);\r
+ }\r
+ else\r
+ {\r
+ LOGI("Info: topicName is null");\r
}\r
+ LOGD ("ConsumerService_getNativeTopicName - OUT");\r
+ return topicName;\r
\r
- env->CallVoidMethod(jDiscoverListener, mid, obj_provider);\r
+}\r
\r
- env->DeleteLocalRef(jDiscoverListener);\r
- env->DeleteLocalRef(cls_provider);\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+OIC::Service::NSTopicsList *getNativeTopicsList(JNIEnv *env, jobject jTopicList)\r
+{\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 (fid_list == NULL)\r
+ {\r
+ LOGE("Error: jfieldID for Topic List is null");\r
+ return nullptr;\r
+ }\r
+ jobject jobj = env->GetObjectField( jTopicList, fid_list);\r
+ if (jobj == NULL)\r
+ {\r
+ LOGE("Error: object of field 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
+ int size = env->CallIntMethod(jobj, sizeMethod);\r
+ jmethodID getMethod = env->GetMethodID(cls_vec, "get", "(I)Ljava/lang/Object;");\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
+ const char *name = getNativeTopicName(env, topicObj);\r
+ std::string topicName(name);\r
+ OIC::Service::NSTopic::NSTopicState state = getNativeState(env, topicObj);\r
+ nsTopicList->addTopic(topicName, state);\r
+ }\r
+\r
+ env->DeleteLocalRef(cls_vec);\r
+ env->DeleteLocalRef(cls_topicList);\r
+ LOGD ("ConsumerService_getNativeTopicsList - OUT");\r
+ return nsTopicList;\r
}\r
\r
-void onProviderChanged(OIC::Service::NSProvider *provider,OIC::Service::NSResponse response)\r
+jobject getJavaResponse(JNIEnv *env, OIC::Service::NSResponse response)\r
{\r
- LOGD ("ConsumerService_onSubscriptionAccepted");\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
- jint envRet;\r
- JNIEnv *env = GetJNIEnv(&envRet);\r
- if (NULL == env) return ;\r
+OIC::Service::NSProvider *getNativeProvider(JNIEnv *env, jobject jObj)\r
+{\r
+ LOGD ("ConsumerService_getNativeProvider - IN");\r
+ jclass providerClass = env->GetObjectClass(jObj);\r
+ if (!providerClass)\r
+ {\r
+ ThrowNSException(NS_ERROR, "Failed to Get ObjectClass for Provider");\r
+ return NULL;\r
+ }\r
+ jfieldID jproviderId = env->GetFieldID(providerClass, "mProviderId", "Ljava/lang/String;");\r
+ if (!jproviderId)\r
+ {\r
+ ThrowNSException(NS_ERROR, "Failed to get providerId for Provider");\r
+ return NULL;\r
+ }\r
+ jstring jprovider_id = (jstring) env->GetObjectField(jObj, jproviderId);\r
+ if (!jprovider_id)\r
+ {\r
+ ThrowNSException(NS_ERROR, "ProviderId cannot be null");\r
+ return NULL;\r
+ }\r
\r
- jobject jAcceptListener = (jobject) env->NewLocalRef(g_obj_acceptListener);\r
- if (!jAcceptListener)\r
+ const char *providerId = env->GetStringUTFChars(jprovider_id, 0);\r
+ LOGD ("ProviderId : %s\n", providerId);\r
+\r
+ OIC::Service::NSProvider *provider =\r
+ OIC::Service::NSConsumerService::getInstance()->getProvider(std::string(providerId));\r
+ if (provider == nullptr)\r
{\r
- LOGE ("Failed to Get jAcceptListener");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ ThrowNSException(NS_ERROR, "Provider with Given Id doesn't exist");\r
+ return NULL;\r
}\r
+ env->ReleaseStringUTFChars(jprovider_id, providerId);\r
+ LOGD ("ConsumerService_getNativeProvider - OUT");\r
+ return provider;\r
+}\r
\r
+jobject getJavaProvider(JNIEnv *env, OIC::Service::NSProvider *provider)\r
+{\r
+ LOGD ("ConsumerService_getJavaProvider - IN");\r
LOGD ("ProviderId : %s\n", provider->getProviderId().c_str());\r
\r
jstring jProviderId = env->NewStringUTF(provider->getProviderId().c_str());\r
if (!cls_provider)\r
{\r
LOGE ("Failed to Get ObjectClass for Provider");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ return NULL;\r
}\r
jmethodID mid_provider = env->GetMethodID(\r
cls_provider, "<init>", "(Ljava/lang/String;)V");\r
if (!mid_provider)\r
{\r
LOGE ("Failed to Get MethodID for Provider<init>");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ return NULL;\r
}\r
- jobject obj_provider = env->NewObject(cls_provider, mid_provider,\r
- jProviderId);\r
+ jobject obj_provider = env->NewObject(cls_provider, mid_provider, jProviderId);\r
\r
jfieldID nativeHandle = env->GetFieldID(cls_provider, "mNativeHandle", "J");\r
if (!nativeHandle)\r
{\r
LOGE("Failed to get nativeHandle for Provider");\r
- return;\r
+ return NULL;\r
}\r
env->SetLongField(obj_provider, nativeHandle, pProvider);\r
\r
- jclass cls = env->GetObjectClass(jAcceptListener);\r
- if (!cls)\r
+ jfieldID fid_topic = env->GetFieldID(cls_provider, "mTopicsList",\r
+ "Lorg/iotivity/service/ns/common/TopicsList");\r
+ if (!fid_topic)\r
{\r
- LOGE ("Failed to Get ObjectClass for jAcceptListener");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
- }\r
- //TODO: Modify to call ProviderChanged Cb adding topic in Java\r
- jmethodID mid = env->GetMethodID(\r
- cls,\r
- "onSubscriptionAccepted",\r
- "(Lorg/iotivity/service/ns/consumer/Provider;)V");\r
- if (!mid)\r
- {\r
- LOGE ("Failed to Get MethodID for onSubscriptionAccepted");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ LOGE("Failed to get nativeHandle for Provider");\r
+ return NULL;\r
}\r
-\r
- env->CallVoidMethod(jAcceptListener, mid, obj_provider);\r
-\r
- env->DeleteLocalRef(jAcceptListener);\r
+ jobject topicList = getJavaTopicsList(env, provider->getTopicList());\r
+ env->SetObjectField(obj_provider, fid_topic, topicList);\r
env->DeleteLocalRef(cls_provider);\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
-\r
+ LOGD ("ConsumerService_getJavaProvider - OUT");\r
+ return obj_provider;\r
}\r
\r
-jobject getJavaMessageType(JNIEnv *env, OIC::Service::NSMessage::NSMessageType type)\r
-{\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
- return NULL;\r
-}\r
\r
-void onMessagePosted(OIC::Service::NSMessage *message)\r
+jobject getJavaMessage(JNIEnv *env, OIC::Service::NSMessage *message)\r
{\r
- LOGD ("ConsumerService_onMessagePosted");\r
-\r
- jint envRet;\r
- JNIEnv *env = GetJNIEnv(&envRet);\r
- if (NULL == env) return ;\r
-\r
- jobject jPostListener = (jobject) env->NewLocalRef(g_obj_postListener);\r
- if (!jPostListener)\r
- {\r
- LOGE ("Failed to Get jPostListener");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
- }\r
+ LOGD ("ConsumerService_getJavaMessage - IN");\r
\r
LOGD ("id : %llu\n", message->getMessageId());\r
LOGD ("title : %s\n", message->getTitle().c_str());\r
jstring jTitle = env->NewStringUTF(message->getTitle().c_str());\r
jstring jContentText = env->NewStringUTF(message->getContentText().c_str());\r
jstring jSourceName = env->NewStringUTF(message->getSourceName().c_str());\r
+ jstring jTopic = env->NewStringUTF(message->getTopic().c_str());\r
\r
jstring jTime = env->NewStringUTF(message->getTime().c_str());\r
jlong jTTL = (jlong) message->getTTL();\r
if (!cls_message)\r
{\r
LOGE ("Failed to Get ObjectClass for Message");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ return NULL ;\r
}\r
jmethodID mid_message = env->GetMethodID(\r
cls_message, "<init>",\r
if (!mid_message)\r
{\r
LOGE ("Failed to Get MethodID for Message<init>");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ return NULL;\r
}\r
jobject obj_message = env->NewObject(cls_message, mid_message,\r
jTitle, jContentText, jSourceName);\r
if (!fid_nativeHandle)\r
{\r
LOGE("Failed to get nativeHandle for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetLongField(obj_message, fid_nativeHandle, pMessage);\r
\r
if (!fid_messageId)\r
{\r
LOGE("Failed to get field MessageID for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetLongField(obj_message, fid_messageId, jMessageId);\r
\r
if (!fid_providerId)\r
{\r
LOGE("Failed to get field ProviderID for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetObjectField(obj_message, fid_providerId, jProviderId);\r
\r
if (!fid_time)\r
{\r
LOGE("Failed to get field Time for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetObjectField(obj_message, fid_time, jTime);\r
\r
if (!fid_ttl)\r
{\r
LOGE("Failed to get field TTL for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetLongField(obj_message, fid_ttl, jTTL);\r
\r
+ jfieldID fid_topic = env->GetFieldID(cls_message, "mTopic", "Ljava/lang/String;");\r
+ if (!fid_topic)\r
+ {\r
+ LOGE("Failed to get mTopic for Message");\r
+ return NULL;\r
+ }\r
+ env->SetObjectField(obj_message, fid_topic, jTopic);\r
+\r
OIC::Service::NSMediaContents *mediaCont = message->getMediaContents();\r
if (mediaCont != nullptr)\r
{\r
if (!cls_mediaContents)\r
{\r
LOGE ("Failed to Get ObjectClass for MediaContents");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ return NULL;\r
}\r
jmethodID mid_mediaContents = env->GetMethodID(\r
cls_mediaContents, "<init>", "(Ljava/lang/String;)V");\r
if (!mid_mediaContents)\r
{\r
LOGE ("Failed to Get MethodID for MediaContents<init>");\r
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
- return ;\r
+ return NULL;\r
}\r
jobject obj_mediaContents = env->NewObject(cls_mediaContents, mid_mediaContents,\r
jIconImage);\r
if (!fid_mediaContents)\r
{\r
LOGE("Failed to get field mediaContents for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetObjectField(obj_message, fid_mediaContents, obj_mediaContents);\r
\r
if (!jType)\r
{\r
LOGE("Failed to get Type value for Message");\r
- return;\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
{\r
LOGE("Failed to get field Type for Message");\r
- return;\r
+ return NULL;\r
}\r
env->SetObjectField(obj_message, fid_type, jType);\r
+ env->DeleteLocalRef(cls_message);\r
+ LOGD ("ConsumerService_getJavaMessage - OUT");\r
+ return obj_message;\r
+}\r
+\r
+void onDiscoverProvider(OIC::Service::NSProvider *provider)\r
+{\r
+ LOGD ("ConsumerService_onDiscoverProvider - IN");\r
+\r
+ jint envRet;\r
+ JNIEnv *env = GetJNIEnv(&envRet);\r
+ if (NULL == env) return ;\r
+\r
+ jobject jDiscoverListener = (jobject) env->NewLocalRef(g_obj_discoverListener);\r
+ if (!jDiscoverListener)\r
+ {\r
+ LOGE ("Failed to Get jDiscoverListener");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+\r
+ jobject obj_provider = getJavaProvider(env, provider);\r
+ if (!obj_provider)\r
+ {\r
+ LOGE ("Failed to Get Provider Object");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+\r
+ jclass cls = env->GetObjectClass(jDiscoverListener);\r
+ if (!cls)\r
+ {\r
+ LOGE ("Failed to Get ObjectClass for jDiscoverListener");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+ jmethodID mid = env->GetMethodID(\r
+ cls,\r
+ "onProviderDiscovered",\r
+ "(Lorg/iotivity/service/ns/consumer/Provider;)V");\r
+ if (!mid)\r
+ {\r
+ LOGE ("Failed to Get MethodID for onProviderDiscovered");\r
+ if (JNI_EDETACHED == envRet) g_jvm->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
+ LOGD ("ConsumerService_onDiscoverProvider - OUT");\r
+ return ;\r
+}\r
+\r
+void onProviderChanged(OIC::Service::NSProvider *provider, OIC::Service::NSResponse response)\r
+{\r
+ LOGD ("ConsumerService_onSubscriptionAccepted -IN");\r
+\r
+ jint envRet;\r
+ JNIEnv *env = GetJNIEnv(&envRet);\r
+ if (NULL == env) return ;\r
+\r
+ jobject jAcceptListener = (jobject) env->NewLocalRef(g_obj_acceptListener);\r
+ if (!jAcceptListener)\r
+ {\r
+ LOGE ("Failed to Get jAcceptListener");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+ jobject obj_provider = getJavaProvider(env, provider);\r
+ if (!obj_provider)\r
+ {\r
+ LOGE ("Failed to Get Provider Object");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+\r
+ jclass cls = env->GetObjectClass(jAcceptListener);\r
+ if (!cls)\r
+ {\r
+ LOGE ("Failed to Get ObjectClass for jAcceptListener");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+ jmethodID mid = env->GetMethodID(\r
+ cls,\r
+ "onProviderChanged",\r
+ "(Lorg/iotivity/service/ns/consumer/Provider;Lorg/iotivity/service/ns/consumer/ConsumerService$Response;)V");\r
+ if (!mid)\r
+ {\r
+ LOGE ("Failed to Get MethodID for onProviderChanged");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+ jobject obj_response = getJavaResponse(env, response);\r
+ env->CallVoidMethod(jAcceptListener, mid, obj_provider, obj_response);\r
+\r
+ env->DeleteLocalRef(jAcceptListener);\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ LOGD ("ConsumerService_onSubscriptionAccepted -OUT");\r
+ return ;\r
+\r
+}\r
+\r
+void onMessagePosted(OIC::Service::NSMessage *message)\r
+{\r
+ LOGD ("ConsumerService_onMessagePosted -IN");\r
\r
+ jint envRet;\r
+ JNIEnv *env = GetJNIEnv(&envRet);\r
+ if (NULL == env) return ;\r
\r
+ jobject jPostListener = (jobject) env->NewLocalRef(g_obj_postListener);\r
+ if (!jPostListener)\r
+ {\r
+ LOGE ("Failed to Get jPostListener");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
+\r
+ jobject obj_message = getJavaMessage( env, message);\r
+ if (!obj_message)\r
+ {\r
+ LOGE ("Failed to Get Message Object");\r
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ return ;\r
+ }\r
jclass cls = env->GetObjectClass(jPostListener);\r
if (!cls)\r
{\r
env->CallVoidMethod(jPostListener, mid, obj_message);\r
\r
env->DeleteLocalRef(jPostListener);\r
- env->DeleteLocalRef(cls_message);\r
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ LOGD ("ConsumerService_onMessagePosted -OUT");\r
return ;\r
}\r
\r
void onSyncInfoReceived(OIC::Service::NSSyncInfo *sync)\r
{\r
- LOGD ("ConsumerService_onSyncInfoReceived");\r
+ LOGD ("ConsumerService_onSyncInfoReceived - IN");\r
\r
jint envRet;\r
JNIEnv *env = GetJNIEnv(&envRet);\r
env->DeleteLocalRef(jSyncListener);\r
env->DeleteLocalRef(cls_sync);\r
if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();\r
+ LOGD ("ConsumerService_onSyncInfoReceived - OUT");\r
return ;\r
}\r
\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_ConsumerService_nativeStart\r
(JNIEnv *env, jobject jObj, jobject jDiscoverListener, jobject jAccpetListener)\r
{\r
- LOGD ("ConsumerService_StartConsumer");\r
+ LOGD ("ConsumerService_StartConsumer - IN");\r
if (!jDiscoverListener || !jAccpetListener)\r
{\r
ThrowNSException(NS_ERROR, "Listener cannot be null");\r
cfg.m_changedCb = onProviderChanged;\r
\r
OIC::Service::NSConsumerService::getInstance()->Start(cfg);\r
+ LOGD ("ConsumerService_StartConsumer - OUT");\r
+ return;\r
\r
}\r
\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_ConsumerService_nativeStop\r
(JNIEnv *env, jobject jObj)\r
{\r
- LOGD ("ConsumerService_StopConsumer");\r
+ LOGD ("ConsumerService_StopConsumer - IN");\r
\r
env->DeleteGlobalRef(g_obj_postListener);\r
env->DeleteGlobalRef(g_obj_discoverListener);\r
g_obj_syncListener = NULL;\r
g_obj_acceptListener = NULL;\r
OIC::Service::NSConsumerService::getInstance()->Stop();\r
+ LOGD ("ConsumerService_StopConsumer - OUT");\r
+ return;\r
}\r
\r
JNIEXPORT jint JNICALL\r
Java_org_iotivity_service_ns_consumer_ConsumerService_nativeEnableRemoteService\r
(JNIEnv *env, jobject jObj, jstring jServerAddress)\r
{\r
- LOGD ("ConsumerService_EnableRemoteService");\r
+ LOGD ("ConsumerService_EnableRemoteService - IN");\r
if (!jServerAddress)\r
{\r
ThrowNSException(NS_ERROR, "EnableRemoteService server address NULL");\r
OIC::Service::NSResult res =\r
OIC::Service::NSConsumerService::getInstance()->EnableRemoteService(std::string(serverAddress));\r
env->ReleaseStringUTFChars(jServerAddress, serverAddress);\r
+ LOGD ("ConsumerService_EnableRemoteService - OUT");\r
return (jint) res;\r
}\r
\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_ConsumerService_nativeRescanProvider\r
(JNIEnv *env, jobject jObj)\r
{\r
- LOGD ("ConsumerService_RescanProvider");\r
-\r
+ LOGD ("ConsumerService_RescanProvider - IN");\r
OIC::Service::NSConsumerService::getInstance()->RescanProvider();\r
+ LOGD ("ConsumerService_RescanProvider - OUT");\r
+ return;\r
+\r
}\r
\r
JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_consumer_ConsumerService_nativeGetProvider\r
(JNIEnv *env, jobject jObj, jstring jProviderId)\r
{\r
- LOGD ("ConsumerService_GetProvider");\r
+ LOGD ("ConsumerService_GetProvider - IN");\r
if (!jProviderId)\r
{\r
ThrowNSException(NS_ERROR, "ProviderId cannot be null");\r
\r
env->DeleteLocalRef(cls_provider);\r
env->ReleaseStringUTFChars(jProviderId, providerId);\r
-\r
+ LOGD ("ConsumerService_GetProvider - OUT");\r
return obj_provider;\r
}\r
\r
-OIC::Service::NSProvider *getNativeProvider(JNIEnv *env, jobject jObj)\r
+JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_consumer_ConsumerService_nativeGetMessage\r
+(JNIEnv *env, jobject jObj, jlong jMsgId)\r
{\r
- jclass providerClass = env->GetObjectClass(jObj);\r
- if (!providerClass)\r
- {\r
- ThrowNSException(NS_ERROR, "Failed to Get ObjectClass for Provider");\r
- return NULL;\r
- }\r
- jfieldID jproviderId = env->GetFieldID(providerClass, "mProviderId", "Ljava/lang/String;");\r
- if (!jproviderId)\r
- {\r
- ThrowNSException(NS_ERROR, "Failed to get providerId for Provider");\r
- return NULL;\r
- }\r
- jstring jprovider_id = (jstring) env->GetObjectField(jObj, jproviderId);\r
- if (!jprovider_id)\r
+ LOGI("JNIConsumerService: nativeGetMessage - IN");\r
+\r
+ OIC::Service::NSMessage *msg =\r
+ OIC::Service::NSConsumerService::getInstance()->getMessage((uint64_t)jMsgId);\r
+ if (msg == nullptr)\r
{\r
- ThrowNSException(NS_ERROR, "ProviderId cannot be null");\r
+ ThrowNSException(NS_ERROR, "Message doesn't exist");\r
return NULL;\r
}\r
\r
- const char *providerId = env->GetStringUTFChars(jprovider_id, 0);\r
- LOGD ("ProviderId : %s\n", providerId);\r
+ jobject obj_msg = getJavaMessage(env, msg);\r
\r
- OIC::Service::NSProvider *provider =\r
- OIC::Service::NSConsumerService::getInstance()->getProvider(std::string(providerId));\r
- if (provider == nullptr)\r
- {\r
- ThrowNSException(NS_ERROR, "Provider with Given Id doesn't exist");\r
- return NULL;\r
- }\r
- env->ReleaseStringUTFChars(jprovider_id, providerId);\r
- return provider;\r
+ LOGI("JNIConsumerService: nativeGetMessage - OUT");\r
+ return obj_msg;\r
}\r
-\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeSubscribe\r
(JNIEnv *env, jobject jObj)\r
{\r
- LOGD ("Provider_Subscribe");\r
+ LOGD ("Provider_Subscribe -IN");\r
jclass providerClass = env->GetObjectClass(jObj);\r
if (!providerClass)\r
{\r
LOGD ("calling subscribe on ProviderID");\r
provider->subscribe();\r
}\r
+ LOGD ("Provider_Subscribe -OUT");\r
+ return;\r
}\r
\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeUnsubscribe\r
(JNIEnv *env, jobject jObj)\r
{\r
- LOGD ("Provider_Unsubscribe");\r
+ LOGD ("Provider_Unsubscribe - IN");\r
\r
jclass providerClass = env->GetObjectClass(jObj);\r
if (!providerClass)\r
LOGD ("calling unSubscribe on ProviderID");\r
provider->unSubscribe();\r
}\r
+ LOGD ("Provider_Unsubscribe - IN");\r
+ return;\r
}\r
\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeSendSyncInfo\r
(JNIEnv *env, jobject jObj, jlong jMessageId, jint jSyncType)\r
{\r
- LOGD ("Provider_SendSyncInfo");\r
+ LOGD ("Provider_SendSyncInfo - IN");\r
if (!jMessageId)\r
{\r
ThrowNSException(NS_ERROR, "MessageId cannot be 0");\r
LOGD ("calling SendSyncInfo on ProviderID");\r
provider->SendSyncInfo(messageId, (OIC::Service::NSSyncInfo::NSSyncType)jSyncType);\r
}\r
+ LOGD ("Provider_SendSyncInfo - OUT");\r
+ return;\r
}\r
\r
+\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeSetListener\r
(JNIEnv *env, jobject jObj, jobject jPostListener, jobject jSyncListener)\r
{\r
- LOGD ("Provider_SetListener");\r
+ LOGD ("Provider_SetListener - IN");\r
if (!jPostListener || !jSyncListener)\r
{\r
ThrowNSException(NS_ERROR, "Listener cannot be null");\r
\r
provider->setListener(onMessagePosted, onSyncInfoReceived);\r
}\r
+ LOGD ("Provider_SetListener - OUT");\r
+ return;\r
}\r
\r
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeSelectInterestTopics\r
+(JNIEnv *env, jobject jObj, jobject jTopicsList)\r
+{\r
+ LOGD("Provider_SelectInterestTopics -IN");\r
+ if (!jTopicsList)\r
+ {\r
+ LOGI("Fail to select Interest Topics - Topic List is null");\r
+ ThrowNSException(NS_ERROR, "TopicList cannot be null");\r
+ return (jint) OIC::Service::NSResult::ERROR;\r
+ }\r
+ OIC::Service::NSTopicsList *nsTopicsList = getNativeTopicsList(env, jTopicsList);\r
+ if (nsTopicsList == nullptr)\r
+ {\r
+ ThrowNSException(NS_ERROR, "NSTopicList cannot be created ");\r
+ return (jint) OIC::Service::NSResult::ERROR;\r
+ }\r
+\r
+ jclass providerClass = env->GetObjectClass(jObj);\r
+ if (!providerClass)\r
+ {\r
+ ThrowNSException(NS_ERROR, "Failed to Get ObjectClass for Provider");\r
+ return (jint) OIC::Service::NSResult::ERROR;\r
+ }\r
+\r
+ jfieldID nativeHandle = env->GetFieldID(providerClass, "mNativeHandle", "J");\r
+ if (!nativeHandle)\r
+ {\r
+ ThrowNSException(NS_ERROR, "Failed to get nativeHandle for Provider");\r
+ return (jint) OIC::Service::NSResult::ERROR;\r
+ }\r
+ jlong jProvider = env->GetLongField(jObj, nativeHandle);\r
+ OIC::Service::NSResult result;\r
+ if (jProvider)\r
+ {\r
+ LOGD ("calling subscribe on mNativeHandle");\r
+ OIC::Service::NSProvider *provider = (OIC::Service::NSProvider *) (jProvider);\r
+ result = provider->selectInterestTopics(nsTopicsList);\r
+ }\r
+ else\r
+ {\r
+ OIC::Service::NSProvider *provider = getNativeProvider(env, jObj);\r
+ if (provider == nullptr)\r
+ {\r
+ ThrowNSException(NS_ERROR, "Provider with Given Id doesn't exist");\r
+ return (jint) OIC::Service::NSResult::ERROR;\r
+ }\r
+ LOGD ("calling subscribe on ProviderID");\r
+ result = provider->selectInterestTopics(nsTopicsList);\r
+ }\r
+ if (result != OIC::Service::NSResult::OK)\r
+ {\r
+ LOGI("Fail to select Interest Topics");\r
+ }\r
+ LOGD("Provider_SelectInterestTopics -OUT");\r
+ return (jint) result;\r
+}\r
// JNI OnLoad\r
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)\r
{\r
LOGE("Failed to set Global MediaContents reference");\r
return JNI_ERR;\r
}\r
+ jclass localTopicState = env->FindClass(\r
+ "org/iotivity/service/ns/common/Topic$TopicState");\r
+ if (!localTopicState)\r
+ {\r
+ LOGE("Failed to get local TopicState enum");\r
+ return JNI_ERR;\r
+ }\r
+ g_cls_TopicState = (jclass) (env->NewGlobalRef(localTopicState));\r
+ if (!g_cls_TopicState)\r
+ {\r
+ LOGE("Failed to set Global TopicState reference");\r
+ return JNI_ERR;\r
+ }\r
\r
+ jclass localTopic = env->FindClass(\r
+ "org/iotivity/service/ns/common/Topic");\r
+ if (!localTopic)\r
+ {\r
+ LOGE("Failed to get local TopicState enum");\r
+ return JNI_ERR;\r
+ }\r
+ g_cls_Topic = (jclass) (env->NewGlobalRef(localTopic));\r
+ if (!g_cls_Topic)\r
+ {\r
+ LOGE("Failed to set Global Topic reference");\r
+ return JNI_ERR;\r
+ }\r
+\r
+ jclass localMessageType = env->FindClass(\r
+ "org/iotivity/service/ns/common/Message$MessageType");\r
+ if (!localMessageType)\r
+ {\r
+ LOGE("Failed to get local Message Type class");\r
+ return JNI_ERR;\r
+ }\r
+ g_cls_Message_Type = (jclass) (env->NewGlobalRef(localMessageType));\r
+ if (!g_cls_Message_Type)\r
+ {\r
+ LOGE("Failed to set Global Message Type reference");\r
+ return JNI_ERR;\r
+ }\r
+\r
+ jclass localResponse = env->FindClass(\r
+ "org/iotivity/service/ns/consumer/ConsumerService$Response");\r
+ if (!localResponse)\r
+ {\r
+ LOGE("Failed to get localResponse Type class");\r
+ return JNI_ERR;\r
+ }\r
+ g_cls_Response = (jclass) (env->NewGlobalRef(localResponse));\r
+ if (!g_cls_Response)\r
+ {\r
+ LOGE("Failed to set Global Response Type reference");\r
+ return JNI_ERR;\r
+ }\r
+\r
+ jclass localTopicsList = env->FindClass(\r
+ "org/iotivity/service/ns/common/TopicsList");\r
+ if (!localTopicsList)\r
+ {\r
+ LOGE("Failed to get local Topic class");\r
+ return JNI_ERR;\r
+ }\r
+ g_cls_TopicsList = (jclass) (env->NewGlobalRef(localTopicsList));\r
+ if (!g_cls_TopicsList)\r
+ {\r
+ LOGE("Failed to set Global TopicsList reference");\r
+ return JNI_ERR;\r
+ }\r
env->DeleteLocalRef(localMessage);\r
env->DeleteLocalRef(localProvider);\r
env->DeleteLocalRef(localSyncInfo);\r
env->DeleteLocalRef(localMediaContents);\r
+ env->DeleteLocalRef(localTopicState);\r
+ env->DeleteLocalRef(localMessageType);\r
+ env->DeleteLocalRef(localResponse);\r
+ env->DeleteLocalRef(localTopic);\r
+ env->DeleteLocalRef(localTopicsList);\r
\r
return NSExceptionInit(env);\r
}\r
env->DeleteGlobalRef(g_cls_Provider);\r
env->DeleteGlobalRef(g_cls_SyncInfo);\r
env->DeleteGlobalRef(g_cls_MediaContents);\r
+ env->DeleteGlobalRef(g_cls_TopicState);\r
+ env->DeleteGlobalRef(g_cls_Message_Type);\r
+ env->DeleteGlobalRef(g_cls_Response);\r
+ env->DeleteGlobalRef(g_cls_Topic);\r
+ env->DeleteGlobalRef(g_cls_TopicsList);\r
}\r
/*\r
* Class: org_iotivity_service_ns_consumer_ConsumerService\r
* Method: nativeEnableRemoteService\r
- * Signature: (Ljava/lang/String;)jint\r
+ * Signature: (Ljava/lang/String;)I\r
*/\r
JNIEXPORT jint JNICALL\r
Java_org_iotivity_service_ns_consumer_ConsumerService_nativeEnableRemoteService\r
(JNIEnv *, jobject, jstring);\r
\r
/*\r
+ * Class: org_iotivity_service_ns_consumer_ConsumerService\r
+ * Method: nativeGetMessage\r
+ * Signature: (J)Lorg/iotivity/service/ns/common/Message;\r
+ */\r
+JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_consumer_ConsumerService_nativeGetMessage\r
+(JNIEnv *, jobject, jlong);\r
+\r
+/*\r
* Class: org_iotivity_service_ns_consumer_Provider\r
* Method: nativeSubscribe\r
* Signature: ()V\r
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeSetListener\r
(JNIEnv *, jobject, jobject, jobject);\r
\r
+/*\r
+ * Class: org_iotivity_service_ns_consumer_Provider\r
+ * Method: nativeSelectInterestTopics\r
+ * Signature: (Lorg/iotivity/service/ns/common/TopicsList;)I\r
+ */\r
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_consumer_Provider_nativeSelectInterestTopics\r
+(JNIEnv *, jobject, jobject);\r
+\r
#ifdef __cplusplus\r
}\r
#endif\r
jclass g_cls_SyncInfo;
jclass g_cls_SyncType;
jclass g_cls_MediaContents;
+jclass g_cls_Topic;
+jclass g_cls_TopicsList;
+jclass g_cls_TopicState;
static JNIEnv *GetJNIEnv(jint *ret)
{
}
}
-void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
-{
- LOGI("JNIProviderService_onSubscribeListenerCb - IN");
-
- jint envRet;
- JNIEnv *env = GetJNIEnv(&envRet);
- if (NULL == env) return ;
-
- jobject jSubscriptionListener = (jobject) env->NewLocalRef(g_obj_subscriptionListener);
- if (!jSubscriptionListener)
- {
- LOGE ("Failed to Get jSubscriptionListener");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return ;
- }
-
- LOGI("consumer ID : %s\n", consumer->getConsumerId().c_str());
-
- jstring jConsumerId = env->NewStringUTF( consumer->getConsumerId().c_str());
-
- jclass cls_consumer = (jclass) (env->NewLocalRef(g_cls_Consumer));
- if (!cls_consumer)
- {
- LOGE ("Failed to Get ObjectClass for Consumer");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return ;
- }
-
- jmethodID mid_consumer = env->GetMethodID(
- cls_consumer,
- "<init>",
- "(JLjava/lang/String;Lorg/iotivity/service/ns/provider/Consumer)V");
- if (!mid_consumer)
- {
- LOGE ("Failed to Get MethodID for Consumer<init>");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return ;
- }
- jobject obj_consumer = env->NewObject( cls_consumer, mid_consumer, jConsumerId);
-
- jclass cls = env->GetObjectClass( jSubscriptionListener);
- if (!cls)
- {
- LOGE("Failed to Get ObjectClass of jSubscriptionListener");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return;
- }
- jmethodID mid = env->GetMethodID(
- cls,
- "onConsumerSubscribed",
- "(Lorg/iotivity/service/ns/provider/Consumer;)V");
- if (!mid)
- {
- LOGE("Failed to Get MethodID of onConsumerSubscribed");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return;
- }
-
- env->CallVoidMethod( jSubscriptionListener, mid, obj_consumer);
- env->DeleteLocalRef(jSubscriptionListener);
- env->DeleteLocalRef(cls_consumer);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- LOGI("JNIProviderService_onSubscribeListenerCb - OUT");
- return;
-}
-
-void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
+OIC::Service::NSMessage *getNativeMessage(JNIEnv *env, jobject jMsg)
{
- LOGI("JNIProviderService_onSyncInfoListenerCb - IN");
-
- jint envRet;
- JNIEnv *env = GetJNIEnv(&envRet);
- if (NULL == env) return ;
-
- jobject jSyncListener = (jobject) env->NewLocalRef(g_obj_syncListener);
- if (!jSyncListener)
- {
- LOGE ("Failed to Get jSyncListener");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return ;
- }
-
- LOGI("Sync ID : %ld\n", (long) sync->getMessageId());
- LOGI("Sync STATE : %d\n", (int) sync->getState());
-
- 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)
- {
- LOGE ("Failed to Get ObjectClass for SyncType");
- 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)
- {
- LOGE ("Failed to Get ObjectClass for SyncInfo");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return ;
- }
- jmethodID mid_syncInfo = env->GetMethodID(
- cls_SyncInfo,
- "<init>",
- "(JLjava/lang/String;Lorg/iotivity/service/ns/common/SyncInfo$SyncType)V");
- if (!mid_syncInfo)
- {
- LOGE ("Failed to Get MethodID for SyncInfo");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return ;
- }
-
- jobject obj_syncInfo = env->NewObject( cls_SyncInfo, mid_syncInfo, jMessageId, jProviderId,
- syncType);
-
- jclass cls = env->GetObjectClass( jSyncListener);
- if (!cls)
- {
- LOGE("Failed to Get ObjectClass");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return;
- }
- jmethodID mid = env->GetMethodID( cls, "onMessageSynchronized",
- "(Lorg/iotivity/service/ns/common/SyncInfo)V");
- if (!mid)
- {
- LOGE("Failed to Get MethodID");
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
- return;
- }
- env->CallVoidMethod( jSyncListener, mid, obj_syncInfo);
-
- env->DeleteLocalRef(jSyncListener);
- env->DeleteLocalRef(cls_SyncInfo);
- env->DeleteLocalRef(cls_SyncType);
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
-
- LOGI("JNIProviderService: OnSyncInfoListenerCb - OUT");
- return;
-
-}
-
-OIC::Service::NSMessage *getMessage(JNIEnv *env, jobject jMsg)
-{
- LOGI("JNIProviderService: getMessage - IN");
+ LOGD("JNIProviderService: getMessage - IN");
jclass cls = env->GetObjectClass( jMsg);
jint jtype = env->CallIntMethod(jobj, mid);
OIC::Service::NSMessage::NSMessageType type = (OIC::Service::NSMessage::NSMessageType) jtype;
- LOGI("Message Type: %ld\n", (long )type);
+ LOGD("Message Type: %ld\n", (long )type);
// Message Time
jfieldID fid_tm = env->GetFieldID( cls, "mTime", "Ljava/lang/String;");
}
else
{
- LOGI("Info: messageTitle is null");
+ LOGD("Info: messageTitle is null");
}
- LOGI("Message Time: %s\n", time);
+ LOGD("Message Time: %s\n", time);
// Message TTL
jfieldID fid_ttl = env->GetFieldID( cls, "mTTL", "J");
jlong jttl = (jlong) env->GetObjectField( jMsg, fid_ttl);
uint64_t ttl = jttl;
- LOGI("Message ID: %lld\n", ttl);
+ LOGD("Message ID: %lld\n", ttl);
// Message Title
jfieldID fid_title = env->GetFieldID( cls, "mTitle", "Ljava/lang/String;");
}
else
{
- LOGI("Info: messageTitle is null");
+ LOGD("Info: messageTitle is null");
}
- LOGI("Message Title: %s\n", messageTitle);
+ LOGD("Message Title: %s\n", messageTitle);
// Message Content Text
jfieldID fid_body = env->GetFieldID( cls, "mContentText", "Ljava/lang/String;");
}
else
{
- LOGI("Info: messageBody is null");
+ LOGD("Info: messageBody is null");
}
- LOGI("Message Body: %s\n", messageBody);
+ LOGD("Message Body: %s\n", messageBody);
// Message Source
jfieldID fid_source = env->GetFieldID( cls, "mSourceName", "Ljava/lang/String;");
}
else
{
- LOGI("Info: messageSource is null");
+ LOGD("Info: messageSource is null");
}
- LOGI("Message Source: %s\n", messageSource);
+ LOGD("Message Source: %s\n", messageSource);
// Message MediaContents
jfieldID fid_media = env->GetFieldID( cls, "mMediaContents",
}
else
{
- LOGI("Info: iconImage is null");
+ LOGD("Info: iconImage is null");
}
- LOGI("iconImage: %s\n", iconImage);
+ 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();
env->DeleteLocalRef(cls_messageType);
env->DeleteLocalRef(cls_MediaContents);
- if (jtime)
+ if (jtime)
{
env->ReleaseStringUTFChars(jtime, time);
}
- if (jmsgTitle)
+ if (jmsgTitle)
{
env->ReleaseStringUTFChars(jmsgTitle, messageTitle);
}
- if (jmsgBody)
+ if (jmsgBody)
{
env->ReleaseStringUTFChars(jmsgBody, messageBody);
}
- if (jmsgSource)
+ if (jmsgSource)
{
env->ReleaseStringUTFChars(jmsgSource, messageSource);
}
env->ReleaseStringUTFChars(jiconImage, iconImage);
}
- LOGI("JNIProviderService: getMessage - OUT");
+ LOGD("JNIProviderService: getMessage - OUT");
return nsMsg;
}
+jobject getJavaState(JNIEnv *env, OIC::Service::NSTopic::NSTopicState nsState)
+{
+ LOGD("JNIProviderService: getJavaState - IN");
+
+ // TopicState
+ jclass cls_topicState = (jclass) (env->NewLocalRef(g_cls_TopicState));
+ if (!cls_topicState)
+ {
+ LOGE ("Failed to Get ObjectClass for TopicState Type");
+ return nullptr;
+ }
+
+ 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);
+ }
+ 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);
+ }
+
+ }
+ if (obj_topicState == NULL)
+ {
+ LOGE("Error: object of field TopicState is null");
+ return NULL;
+ }
+ env->DeleteLocalRef(cls_topicState);
+ LOGD("JNIProviderService: getJavaState - OUT");
+ return obj_topicState;
+}
+
+jobject getJavaTopicsList(JNIEnv *env, OIC::Service::NSTopicsList *topicList)
+{
+ LOGD("JNIProviderService: getJavaTopicsList - IN");
+ jclass cls_topicList = (jclass) (env->NewLocalRef(g_cls_TopicsList));
+ if (!cls_topicList)
+ {
+ LOGE ("Failed to Get ObjectClass for TopicsList");
+ return NULL;
+ }
+ jmethodID mid_topicList = env->GetMethodID(cls_topicList, "<init>", "()V");
+ if (!mid_topicList)
+ {
+ LOGE ("Failed to Get MethodID for TopicsList<init>");
+ 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");
+ for (auto it : topicList->getTopicsList())
+ {
+ jobject jState = getJavaState(env, it->getState());
+ std::string topicName = it->getTopicName();
+ jstring jTopicName = env->NewStringUTF(topicName.c_str());
+ env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);
+ }
+ env->DeleteLocalRef(cls_topicList);
+ LOGD("JNIProviderService: getJavaTopicsList - OUT");
+ return obj_topicList;
+}
+
+void onSubscribeListenerCb(OIC::Service::NSConsumer *consumer)
+{
+ LOGD("JNIProviderService_onSubscribeListenerCb - IN");
+
+ jint envRet;
+ JNIEnv *env = GetJNIEnv(&envRet);
+ if (NULL == env) return ;
+
+ jobject jSubscriptionListener = (jobject) env->NewLocalRef(g_obj_subscriptionListener);
+ if (!jSubscriptionListener)
+ {
+ LOGE ("Failed to Get jSubscriptionListener");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
+
+ LOGD("consumer ID : %s\n", consumer->getConsumerId().c_str());
+
+ jstring jConsumerId = env->NewStringUTF( consumer->getConsumerId().c_str());
+
+ jclass cls_consumer = (jclass) (env->NewLocalRef(g_cls_Consumer));
+ if (!cls_consumer)
+ {
+ LOGE ("Failed to Get ObjectClass for Consumer");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
+
+ jmethodID mid_consumer = env->GetMethodID(
+ cls_consumer,
+ "<init>",
+ "(JLjava/lang/String;Lorg/iotivity/service/ns/provider/Consumer)V");
+ if (!mid_consumer)
+ {
+ LOGE ("Failed to Get MethodID for Consumer<init>");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
+ jobject obj_consumer = env->NewObject( cls_consumer, mid_consumer, jConsumerId);
+
+ jclass cls = env->GetObjectClass( jSubscriptionListener);
+ if (!cls)
+ {
+ LOGE("Failed to Get ObjectClass of jSubscriptionListener");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return;
+ }
+ jmethodID mid = env->GetMethodID(
+ cls,
+ "onConsumerSubscribed",
+ "(Lorg/iotivity/service/ns/provider/Consumer;)V");
+ if (!mid)
+ {
+ LOGE("Failed to Get MethodID of onConsumerSubscribed");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return;
+ }
+
+ env->CallVoidMethod( jSubscriptionListener, mid, obj_consumer);
+ env->DeleteLocalRef(jSubscriptionListener);
+ env->DeleteLocalRef(cls_consumer);
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ LOGD("JNIProviderService_onSubscribeListenerCb - OUT");
+ return;
+}
+
+void onSyncInfoListenerCb(OIC::Service::NSSyncInfo *sync)
+{
+ LOGD("JNIProviderService_onSyncInfoListenerCb - IN");
+
+ jint envRet;
+ JNIEnv *env = GetJNIEnv(&envRet);
+ if (NULL == env) return ;
+
+ jobject jSyncListener = (jobject) env->NewLocalRef(g_obj_syncListener);
+ if (!jSyncListener)
+ {
+ LOGE ("Failed to Get jSyncListener");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
+
+ LOGD("Sync ID : %ld\n", (long) sync->getMessageId());
+ LOGD("Sync STATE : %d\n", (int) sync->getState());
+
+ 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)
+ {
+ LOGE ("Failed to Get ObjectClass for SyncType");
+ 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)
+ {
+ LOGE ("Failed to Get ObjectClass for SyncInfo");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
+ jmethodID mid_syncInfo = env->GetMethodID(
+ cls_SyncInfo,
+ "<init>",
+ "(JLjava/lang/String;Lorg/iotivity/service/ns/common/SyncInfo$SyncType)V");
+ if (!mid_syncInfo)
+ {
+ LOGE ("Failed to Get MethodID for SyncInfo");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return ;
+ }
+
+ jobject obj_syncInfo = env->NewObject( cls_SyncInfo, mid_syncInfo, jMessageId, jProviderId,
+ syncType);
+
+ jclass cls = env->GetObjectClass( jSyncListener);
+ if (!cls)
+ {
+ LOGE("Failed to Get ObjectClass");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return;
+ }
+ jmethodID mid = env->GetMethodID( cls, "onMessageSynchronized",
+ "(Lorg/iotivity/service/ns/common/SyncInfo)V");
+ if (!mid)
+ {
+ LOGE("Failed to Get MethodID");
+ if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ return;
+ }
+ env->CallVoidMethod( jSyncListener, mid, obj_syncInfo);
+
+ env->DeleteLocalRef(jSyncListener);
+ env->DeleteLocalRef(cls_SyncInfo);
+ env->DeleteLocalRef(cls_SyncType);
+ if (JNI_EDETACHED == envRet) g_jvm->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)
{
- LOGI("JNIProviderService: nativeStart - IN");
+ LOGD("JNIProviderService: nativeStart - IN");
if (!jSubscriptionListener || !jSyncListener)
{
LOGE("Fail to set listeners");
}
- LOGI("JNIProviderService: nativeStart - OUT");
+ LOGD("JNIProviderService: nativeStart - OUT");
return (jint) result;
}
JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeStop(
JNIEnv *env, jobject jObj)
{
- LOGI("JNIProviderService: nativeStop - IN");
+ LOGD("JNIProviderService: nativeStop - IN");
OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->Stop();
if (result != OIC::Service::NSResult::OK)
{
- LOGI("Fail to stop NSProvider service");
+ LOGD("Fail to stop NSProvider service");
return (jint) result;
}
g_obj_subscriptionListener = NULL;
g_obj_syncListener = NULL;
- LOGI("JNIProviderService: nativeStop - OUT");
+ LOGD("JNIProviderService: nativeStop - OUT");
return (jint) result;
}
JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeSendMessage(
JNIEnv *env, jobject jObj, jobject jMsg)
{
- LOGI("JNIProviderService: nativeSendMessage - IN");
+ LOGD("JNIProviderService: nativeSendMessage - IN");
if (!jMsg)
{
- LOGI("Fail to send notification - Message is null");
+ LOGD("Fail to send notification - Message is null");
ThrowNSException(NS_ERROR, "Message cannot be null");
return (jint) OIC::Service::NSResult::ERROR;
}
- OIC::Service::NSMessage *nsMsg = getMessage(env, jMsg);
+ OIC::Service::NSMessage *nsMsg = getNativeMessage(env, jMsg);
if (nsMsg == nullptr)
{
ThrowNSException(NS_ERROR, "Message didn't have a field ID ");
OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->SendMessage(nsMsg);
if (result != OIC::Service::NSResult::OK)
{
- LOGI("Fail to send NSProvider Message");
+ LOGD("Fail to send NSProvider Message");
}
- LOGI("JNIProviderService: nativeSendMessage - OUT");
+ LOGD("JNIProviderService: nativeSendMessage - OUT");
return (jint) result;
}
JNIEXPORT void JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeSendSyncInfo(
JNIEnv *env, jobject jObj, jlong messageId , jint syncState)
{
- LOGI("JNIProviderService: nativeSendSyncInfo - IN");
+ LOGD("JNIProviderService: nativeSendSyncInfo - IN");
OIC::Service::NSProviderService::getInstance()->SendSyncInfo( messageId,
(OIC::Service::NSSyncInfo::NSSyncType) syncState);
- LOGI("JNIProviderService: nativeSendSyncInfo - OUT");
+ LOGD("JNIProviderService: nativeSendSyncInfo - OUT");
return;
}
Java_org_iotivity_service_ns_provider_ProviderService_nativeEnableRemoteService(JNIEnv *env,
jobject jObj, jstring jstr)
{
- LOGI("JNIProviderService: nativeEnableRemoteService - IN");
+ LOGD("JNIProviderService: nativeEnableRemoteService - IN");
if (!jstr)
{
ThrowNSException(NS_ERROR, "Server Address Can't be NULL");
const char *address = env->GetStringUTFChars( jstr, NULL);
std::string servAddress(address);
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->EnableRemoteService(
- servAddress);
+ OIC::Service::NSResult result =
+ OIC::Service::NSProviderService::getInstance()->EnableRemoteService(
+ servAddress);
if (result != OIC::Service::NSResult::OK)
{
LOGE("Fail to Enable Remote Service");
}
env->ReleaseStringUTFChars(jstr, address);
- LOGI("JNIProviderService: nativeEnableRemoteService - OUT");
+ LOGD("JNIProviderService: nativeEnableRemoteService - OUT");
return (jint) result;
}
Java_org_iotivity_service_ns_provider_ProviderService_nativeDisableRemoteService(JNIEnv *env,
jobject jObj, jstring jstr)
{
- LOGI("JNIProviderService: nativeDisableRemoteService - IN");
+ LOGD("JNIProviderService: nativeDisableRemoteService - IN");
if (!jstr)
{
ThrowNSException(NS_ERROR, "Server Address Can't be NULL");
const char *address = env->GetStringUTFChars( jstr, NULL);
std::string servAddress(address);
- OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->DisableRemoteService(
- servAddress);
+ OIC::Service::NSResult result =
+ OIC::Service::NSProviderService::getInstance()->DisableRemoteService(
+ servAddress);
if (result != OIC::Service::NSResult::OK)
{
LOGE("Fail to Disable Remote Service");
}
env->ReleaseStringUTFChars(jstr, address);
- LOGI("JNIProviderService: nativeDisableRemoteService - OUT");
+ LOGD("JNIProviderService: nativeDisableRemoteService - OUT");
return (jint) result;
}
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeAddTopic
+(JNIEnv *env, jobject jObj, jstring jTopicName)
+{
+ LOGD("JNIProviderService: nativeAddTopic - IN");
+ if (!jTopicName)
+ {
+ ThrowNSException(NS_ERROR, "Topic Name Can't be NULL");
+ return (jint) OIC::Service::NSResult::ERROR;
+ }
+ const char *name = env->GetStringUTFChars( jTopicName, NULL);
+ std::string topicName(name);
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->AddTopic(
+ topicName);
+ if (result != OIC::Service::NSResult::OK)
+ {
+ LOGE("Fail to Add Topic");
+ }
+ env->ReleaseStringUTFChars(jTopicName, name);
+ LOGD("JNIProviderService: nativeAddTopic - OUT");
+ return (jint) result;
+}
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeDeleteTopic
+(JNIEnv *env, jobject jObj, jstring jTopicName)
+{
+ LOGD("JNIProviderService: nativeDeleteTopic - IN");
+ if (!jTopicName)
+ {
+ ThrowNSException(NS_ERROR, "Topic Name Can't be NULL");
+ return (jint) OIC::Service::NSResult::ERROR;
+ }
+ const char *name = env->GetStringUTFChars( jTopicName, NULL);
+ std::string topicName(name);
+ OIC::Service::NSResult result = OIC::Service::NSProviderService::getInstance()->DeleteTopic(
+ topicName);
+ if (result != OIC::Service::NSResult::OK)
+ {
+ LOGE("Fail to Add Topic");
+ }
+ env->ReleaseStringUTFChars(jTopicName, name);
+ LOGD("JNIProviderService: nativeDeleteTopic - OUT");
+ return (jint) result;
+}
+
+JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_ProviderService_nativeGetTopics
+(JNIEnv *env, jobject jObj)
+{
+ LOGD("JNIProviderService: nativeGetTopics - IN");
+
+ OIC::Service::NSTopicsList *topicList =
+ OIC::Service::NSProviderService::getInstance()->GetTopics();
+ if (topicList == nullptr)
+ {
+ ThrowNSException(NS_ERROR, "Topic List doesn't exist");
+ return NULL;
+ }
+
+ jobject obj_topicList = getJavaTopicsList(env, topicList);
+
+ LOGD("JNIProviderService: nativeGetTopics - 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, jobject jConsumer, jboolean jAccepted)
{
LOGD("JNIProviderService: nativeAcceptSubscription - IN");
}
jstring jconId = (jstring)env->GetObjectField( jConsumer, fid_id);
- const char *conId = "";
- if (conId)
+ if (!jconId)
{
- conId = env->GetStringUTFChars( jconId, NULL);
- }
- else
- {
- LOGI("Info: Consumer Id is null");
+ ThrowNSException(NS_ERROR, "ProviderId cannot be null");
+ return (jint) OIC::Service::NSResult::ERROR;;
}
+ const char *conId = env->GetStringUTFChars( jconId, NULL);
std::string consumerId(conId);
env->ReleaseStringUTFChars(jconId, conId);
- LOGI("Consumer ID: %s\n", consumerId.c_str());
+ LOGD("Consumer ID: %s\n", consumerId.c_str());
- OIC::Service::NSConsumer *consumer = new OIC::Service::NSConsumer(consumerId);
+ OIC::Service::NSConsumer *consumer =
+ OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
int result = consumer->acceptSubscription(consumer, (bool)jAccepted);
if (jAccepted)
{
- LOGI("Subscription Accepted");
+ LOGD("Subscription Accepted");
}
else
{
- LOGI("Subscription Denied");
+ LOGD("Subscription Denied");
}
LOGD("JNIProviderService: nativeAcceptSubscription - OUT");
return result;
}
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeSelectTopic
+(JNIEnv *env, jobject jObj, jstring jConsumerId, jstring jTopicName)
+{
+ LOGD("JNIProviderService: nativeSelectTopic - IN");
+ if (!jConsumerId || !jTopicName)
+ {
+ ThrowNSException(NS_ERROR, "Topic Name or ConsumerId Can't be NULL");
+ return (jint) OIC::Service::NSResult::ERROR;
+ }
+ const char *name = env->GetStringUTFChars( jTopicName, NULL);
+ const char *id = env->GetStringUTFChars( jConsumerId, NULL);
+ std::string topicName(name);
+ std::string consumerId(id);
+ OIC::Service::NSConsumer *nsConsumer =
+ OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
+ if (!nsConsumer)
+ {
+ ThrowNSException(NS_ERROR, "Consumer does exists");
+ return (jint) OIC::Service::NSResult::ERROR;
+ }
+ OIC::Service::NSResult result = nsConsumer->selectTopic(topicName);
+
+ if (result != OIC::Service::NSResult::OK)
+ {
+ LOGD("Fail to Select Topic");
+ }
+ env->ReleaseStringUTFChars(jTopicName, name);
+ env->ReleaseStringUTFChars(jConsumerId, id);
+ LOGD("JNIProviderService: nativeSelectTopic - OUT");
+ return (jint) result;
+}
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeUnselectTopic
+(JNIEnv *env, jobject jObj, jstring jConsumerId, jstring jTopicName)
+{
+ LOGD("JNIProviderService: nativeUnselectTopic - IN");
+ if (!jConsumerId || !jTopicName)
+ {
+ ThrowNSException(NS_ERROR, "Topic Name or ConsumerId Can't be NULL");
+ return (jint) OIC::Service::NSResult::ERROR;
+ }
+ const char *name = env->GetStringUTFChars( jTopicName, NULL);
+ const char *id = env->GetStringUTFChars( jConsumerId, NULL);
+ std::string topicName(name);
+ std::string consumerId(id);
+ OIC::Service::NSConsumer *nsConsumer =
+ OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
+ if (!nsConsumer)
+ {
+ ThrowNSException(NS_ERROR, "Consumer does exists");
+ return (jint) OIC::Service::NSResult::ERROR;
+ }
+ OIC::Service::NSResult result = nsConsumer->unselectTopic(topicName);
+
+ if (result != OIC::Service::NSResult::OK)
+ {
+ LOGE("Fail to Unselect Topic");
+ }
+ env->ReleaseStringUTFChars(jTopicName, name);
+ env->ReleaseStringUTFChars(jConsumerId, id);
+ LOGD("JNIProviderService: nativeUnselectTopic - OUT");
+ return (jint) result;
+}
+
+JNIEXPORT jobject JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeGetConsumerTopics
+(JNIEnv *env, jobject jObj, jstring jConsumerId)
+{
+ LOGD("JNIProviderService: nativeGetConsumerTopics - IN");
+ if (!jConsumerId)
+ {
+ ThrowNSException(NS_ERROR, "Topic Name or ConsumerId Can't be NULL");
+ return NULL;
+ }
+ const char *id = env->GetStringUTFChars( jConsumerId, NULL);
+ std::string consumerId(id);
+ OIC::Service::NSConsumer *nsConsumer =
+ OIC::Service::NSProviderService::getInstance()->getConsumer(consumerId);
+ if (!nsConsumer)
+ {
+ ThrowNSException(NS_ERROR, "Consumer does exists");
+ return NULL;
+ }
+ OIC::Service::NSTopicsList *topicList = nsConsumer->getConsumerTopics();
+ if (topicList == nullptr)
+ {
+ ThrowNSException(NS_ERROR, "Topic List doesn't exist");
+ return NULL;
+ }
+ jobject obj_topicList = getJavaTopicsList(env, topicList);
+
+ env->ReleaseStringUTFChars(jConsumerId, id);
+ LOGD("JNIProviderService: nativeGetConsumerTopics - OUT");
+ return obj_topicList;
+}
// JNI OnLoad
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
return JNI_ERR;
}
+ jclass localTopic = env->FindClass(
+ "org/iotivity/service/ns/common/Topic");
+ if (!localTopic)
+ {
+ LOGE("Failed to get local Topic class");
+ return JNI_ERR;
+ }
+ g_cls_Topic = (jclass) (env->NewGlobalRef(localTopic));
+ if (!g_cls_Topic)
+ {
+ LOGE("Failed to set Global Topic reference");
+ return JNI_ERR;
+ }
+
+ jclass localTopicsList = env->FindClass(
+ "org/iotivity/service/ns/common/TopicsList");
+ if (!localTopicsList)
+ {
+ LOGE("Failed to get local Topic class");
+ return JNI_ERR;
+ }
+ g_cls_TopicsList = (jclass) (env->NewGlobalRef(localTopicsList));
+ if (!g_cls_TopicsList)
+ {
+ LOGE("Failed to set Global TopicsList reference");
+ return JNI_ERR;
+ }
+
+ jclass localTopicState = env->FindClass(
+ "org/iotivity/service/ns/common/Topic$TopicState");
+ if (!localTopicState)
+ {
+ LOGE("Failed to get local TopicState enum");
+ return JNI_ERR;
+ }
+ g_cls_TopicState = (jclass) (env->NewGlobalRef(localTopicState));
+ if (!g_cls_TopicState)
+ {
+ LOGE("Failed to set Global TopicState reference");
+ return JNI_ERR;
+ }
+
env->DeleteLocalRef(localMessage);
env->DeleteLocalRef(localMessageType);
env->DeleteLocalRef(localConsumer);
env->DeleteLocalRef(localSyncInfo);
env->DeleteLocalRef(localSyncType);
env->DeleteLocalRef(localMediaContents);
+ env->DeleteLocalRef(localTopic);
+ env->DeleteLocalRef(localTopicsList);
+ env->DeleteLocalRef(localTopicState);
return NSExceptionInit(env);
}
JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *jvm, void *reserved)
{
- LOGI("ProviderService_JNI_OnUnload");
+ LOGD("ProviderService_JNI_OnUnload");
JNIEnv *env;
if (jvm->GetEnv((void **)&env, JNI_CURRENT_VERSION) != JNI_OK)
env->DeleteGlobalRef(g_cls_SyncType);
env->DeleteGlobalRef(g_cls_MediaContents);
env->DeleteGlobalRef(g_cls_Message_Type);
+ env->DeleteGlobalRef(g_cls_Topic);
+ env->DeleteGlobalRef(g_cls_TopicsList);
+ env->DeleteGlobalRef(g_cls_TopicState);
}
(JNIEnv *, jobject, jstring);
/*
+ * Class: org_iotivity_service_ns_provider_ProviderService
+ * Method: nativeAddTopic
+ * Signature: (Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeAddTopic
+(JNIEnv *, jobject, jstring);
+
+/*
+ * Class: org_iotivity_service_ns_provider_ProviderService
+ * Method: nativeDeleteTopic
+ * Signature: (Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeDeleteTopic
+(JNIEnv *, jobject, jstring);
+
+/*
+ * Class: org_iotivity_service_ns_provider_ProviderService
+ * Method: nativeGetTopics
+ * Signature: ()Lorg/iotivity/service/ns/common/TopicsList;
+ */
+JNIEXPORT jobject JNICALL
+Java_org_iotivity_service_ns_provider_ProviderService_nativeGetTopics
+(JNIEnv *, jobject);
+
+/*
* Class: org_iotivity_service_ns_provider_Consumer
* Method: nativeAcceptSubscription
* Signature: (Lorg/iotivity/service/ns/provider/Consumer;Z)I
JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeAcceptSubscription
(JNIEnv *, jobject, jobject, jboolean);
+/*
+ * Class: org_iotivity_service_ns_provider_Consumer
+ * Method: nativeSelectTopic
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeSelectTopic
+(JNIEnv *, jobject, jstring, jstring);
+
+/*
+ * Class: org_iotivity_service_ns_provider_Consumer
+ * Method: nativeUnselectTopic
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_org_iotivity_service_ns_provider_Consumer_nativeUnselectTopic
+(JNIEnv *, jobject, jstring, jstring);
+
+/*
+ * Class: org_iotivity_service_ns_provider_Consumer
+ * Method: nativeGetConsumerTopics
+ * Signature: (Ljava/lang/String;)Lorg/iotivity/service/ns/common/TopicsList;
+ */
+JNIEXPORT jobject JNICALL
+Java_org_iotivity_service_ns_provider_Consumer_nativeGetConsumerTopics
+(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
topicsNode = topicsNode->next;
}
- topicsNode = topics;
- while (topicsNode != nullptr)
- {
- topics = topics->next;
- if (topicsNode->topicName)
- OICFree(topicsNode->topicName);
- OICFree(topicsNode);
- topicsNode = topics;
- }
}
NSTopicsList::~NSTopicsList()
return NULL;\r
}\r
\r
- NSMessage *getMessage(uint64_t messageId)\r
+ NSMessage *NSConsumerService::getMessage(uint64_t messageId)\r
{\r
NS_LOG(DEBUG, "getMessage - IN");\r
::NSMessage *message = NSConsumerGetMessage(messageId);\r