+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: discoveryMQTopicsImpl
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcPlatform/OnResourceFoundListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_discoveryMQTopicsImpl
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_discoveryMQTopicsImpl");
+
+#ifdef WITH_MQ
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "listener cannot be null");
+ return;
+ }
+
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->discoveryMQTopics(
+ env,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_discoveryMQTopicsImpl");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: createMQTopicImpl
+* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/String;Ljava/util/Map
+* ;Lorg/iotivity/base/OcPlatform/OnMQTopicCreatedListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_createMQTopicImpl
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jstring jUri,
+ jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_createMQTopicImpl");
+
+#ifdef WITH_MQ
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "listener cannot be null");
+ return;
+ }
+
+ if (!jRepresentation)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "representation null");
+ return;
+ }
+
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ std::string targetUri;
+ if (jUri)
+ {
+ targetUri = env->GetStringUTFChars(jUri, nullptr);
+ }
+
+ OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env,
+ jRepresentation);
+ if (!representation)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->createMQTopic(
+ env,
+ *representation,
+ targetUri,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_createMQTopicImpl");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: subscribeMQTopic
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnObserveListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_subscribeMQTopicImpl
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_subscribeMQTopicImpl");
+#ifdef MQ_SUBSCRIBER
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
+ return;
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->subscribeMQTopic(
+ env,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_subscribeMQTopicImpl");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: unsubscribeMQTopicImpl
+* Signature: (I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsubscribeMQTopicImpl
+(JNIEnv *env, jobject thiz, jint jQoS)
+{
+ LOGD("OcResource_unsubscribeMQTopicImpl");
+#ifdef MQ_SUBSCRIBER
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ try
+ {
+ OCStackResult result = resource->unsubscribeMQTopic(
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_unsubscribeMQTopicImpl");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: requestMQPublishImpl
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_requestMQPublishImpl
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_requestMQPublishImpl");
+#ifdef MQ_SUBSCRIBER
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
+ return;
+ }
+
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->requestMQPublish(
+ env,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_requestMQPublishImpl");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: publishMQTopicImpl
+* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
+* Lorg/iotivity/base/OcResource/OnPostListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_publishMQTopicImpl
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
+ jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_publishMQTopicImpl");
+#ifdef MQ_PUBLISHER
+ if (!jRepresentation)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
+ return;
+ }
+
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
+ return;
+ }
+
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env,
+ jRepresentation);
+ if (!representation)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->publishMQTopic(
+ env,
+ *representation,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_publishMQTopicImpl");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
+}