#include "JniOcRepresentation.h"
#include "JniUtils.h"
-JniOcResource::JniOcResource(std::shared_ptr<OCResource> resource)
- : m_sharedResource(resource)
-{}
-
-JniOcResource::~JniOcResource()
-{
- LOGD("~JniOcResource()");
+class JniOcResourceImpl : public std::enable_shared_from_this<JniOcResourceImpl>
+{
+public:
+ typedef std::shared_ptr<JniOcResourceImpl> Ptr;
+
+ JniOcResourceImpl(std::shared_ptr<OCResource> &resource);
+ ~JniOcResourceImpl();
+
+ OCStackResult get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener);
+ OCStackResult get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
+ QualityOfService QoS);
+ OCStackResult get(JNIEnv* env, const std::string &resourceType, const std::string &resourceInterface,
+ const QueryParamsMap &queryParametersMap, jobject jListener);
+ OCStackResult get(JNIEnv* env, const std::string &resourceType, const std::string &resourceInterface,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS);
+
+ OCStackResult put(JNIEnv* env, const OCRepresentation &representation, const QueryParamsMap &queryParametersMap,
+ jobject jListener);
+ OCStackResult put(JNIEnv* env, const OCRepresentation &representation, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+ OCStackResult put(JNIEnv* env, const std::string &resourceType, const std::string &resourceInterface,
+ const OCRepresentation &representation, const QueryParamsMap &queryParametersMap, jobject jListener);
+ OCStackResult put(JNIEnv* env, const std::string &resourceType, const std::string &resourceInterface,
+ const OCRepresentation &representation, const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS);
+
+ OCStackResult post(JNIEnv* env, const OCRepresentation &representation, const QueryParamsMap &queryParametersMap,
+ jobject jListener);
+ OCStackResult post(JNIEnv* env, const OCRepresentation &representation, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+ OCStackResult post(JNIEnv* env, const std::string &resourceType, const std::string &resourceInterface,
+ const OCRepresentation &representation, const QueryParamsMap &queryParametersMap, jobject jListener);
+ OCStackResult post(JNIEnv* env, const std::string &resourceType, const std::string &resourceInterface,
+ const OCRepresentation &representation, const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS);
+
+ OCStackResult deleteResource(JNIEnv* env, jobject jListener);
+ OCStackResult deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS);
+
+ OCStackResult observe(JNIEnv* env, ObserveType observeType, const QueryParamsMap &queryParametersMap,
+ jobject jListener);
+ OCStackResult observe(JNIEnv* env, ObserveType observeType, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService qos);
+
+ OCStackResult cancelObserve(JNIEnv* env);
+ OCStackResult cancelObserve(JNIEnv* env, QualityOfService qos);
+
+ void setHeaderOptions(const HeaderOptions &headerOptions);
+ void unsetHeaderOptions();
+ std::string host();
+ std::string uri();
+ OCConnectivityType connectivityType() const;
+ bool isObservable();
+ std::vector< std::string > getResourceTypes() const;
+ std::vector< std::string > getResourceInterfaces(void) const;
+ OCResourceIdentifier uniqueIdentifier() const;
+ std::string sid() const;
+ std::string deviceName() const;
+
+ JniOnGetListener* addOnGetListener(JNIEnv* env, jobject jListener);
+ JniOnPutListener* addOnPutListener(JNIEnv* env, jobject jListener);
+ JniOnPostListener* addOnPostListener(JNIEnv* env, jobject jListener);
+ JniOnDeleteListener* addOnDeleteListener(JNIEnv* env, jobject jListener);
+ JniOnObserveListener* addOnObserveListener(JNIEnv* env, jobject jListener);
+
+ void removeOnGetListener(JNIEnv* env, jobject jListener);
+ void removeOnPutListener(JNIEnv* env, jobject jListener);
+ void removeOnPostListener(JNIEnv* env, jobject jListener);
+ void removeOnDeleteListener(JNIEnv* env, jobject jListener);
+ void removeOnObserveListener(JNIEnv* env, jobject jListener);
+
+ std::shared_ptr<OCResource> getOCResource();
+
+#ifdef WITH_MQ
+ JniOnMQTopicFoundListener* addOnTopicFoundListener(JNIEnv* env, jobject jListener);
+ void removeOnTopicFoundListener(JNIEnv* env, jobject jListener);
+
+ JniOnMQSubscribeListener* addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener);
+ void removeOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener);
+
+ OCStackResult discoveryMQTopics(JNIEnv* env, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+ OCStackResult createMQTopic(JNIEnv* env, const OCRepresentation &representation,
+ const std::string &targetUri,
+ const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+#endif
+#ifdef MQ_SUBSCRIBER
+ OCStackResult subscribeMQTopic(JNIEnv* env, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+ OCStackResult unsubscribeMQTopic(QualityOfService QoS);
+ OCStackResult requestMQPublish(JNIEnv* env, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+#endif
+#ifdef MQ_PUBLISHER
+ OCStackResult publishMQTopic(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS);
+#endif
+
+private:
+
+ static void onGetCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, JniOnGetListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef);
+
+ static void onPutCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, JniOnPutListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef);
+
+ static void onPostCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, JniOnPostListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef);
+
+ static void onDeleteCallback(const HeaderOptions& opts,
+ const int eCode, JniOnDeleteListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef);
+
+ static void onObserveCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, const int& sequenceNumber,
+ JniOnObserveListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef);
+
+
+ JniListenerManager<JniOnGetListener> m_onGetManager;
+ JniListenerManager<JniOnPutListener> m_onPutManager;
+ JniListenerManager<JniOnPostListener> m_onPostManager;
+ JniListenerManager<JniOnDeleteListener> m_onDeleteManager;
+ JniListenerManager<JniOnObserveListener> m_onObserveManager;
+#ifdef WITH_MQ
+ JniListenerManager<JniOnMQTopicFoundListener> m_onFoundTopicResourceManager;
+ JniListenerManager<JniOnMQSubscribeListener> m_onSubcribeTopicManager;
+#endif
+
+ std::shared_ptr<OCResource> m_sharedResource;
+};
+
+JniOcResourceImpl::JniOcResourceImpl(std::shared_ptr<OCResource> &resource)
+ : m_sharedResource(resource) {}
+
+JniOcResourceImpl::~JniOcResourceImpl()
+{
+ LOGD("~JniOcResourceImpl()");
m_sharedResource = nullptr;
- jint envRet;
+ jint envRet = JNI_ERR;
JNIEnv *env = GetJNIEnv(envRet);
- if (nullptr == env) return;
+ if (nullptr == env)
+ {
+ return;
+ }
m_onGetManager.removeAllListeners(env);
m_onPutManager.removeAllListeners(env);
m_onPostManager.removeAllListeners(env);
m_onDeleteManager.removeAllListeners(env);
m_onObserveManager.removeAllListeners(env);
+#ifdef WITH_MQ
+ m_onFoundTopicResourceManager.removeAllListeners(env);
+ m_onSubcribeTopicManager.removeAllListeners(env);
+#endif
- if (JNI_EDETACHED == envRet) g_jvm->DetachCurrentThread();
+ if (JNI_EDETACHED == envRet)
+ {
+ g_jvm->DetachCurrentThread();
+ }
}
-OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
+void JniOcResourceImpl::onGetCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, JniOnGetListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
+{
+ auto obj = weakRef.lock();
+ if (!obj)
+ {
+ LOGD("Get callback called on deleted object\n");
+ return;
+ }
+
+ listener->onGetCallback(opts, rep, eCode);
+}
+
+OCStackResult JniOcResourceImpl::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
{
JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
- GetCallback getCallback = [onGetListener](
- const HeaderOptions& opts,
- const OCRepresentation& rep,
- const int eCode)
- {
- onGetListener->onGetCallback(opts, rep, eCode);
- };
+ GetCallback getCallback = std::bind(JniOcResourceImpl::onGetCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onGetListener,
+ shared_from_this());
return m_sharedResource->get(queryParametersMap, getCallback);
}
-OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
+OCStackResult JniOcResourceImpl::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
QualityOfService QoS)
{
JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
- GetCallback getCallback = [onGetListener](const HeaderOptions& opts, const OCRepresentation& rep,
- const int eCode)
- {
- onGetListener->onGetCallback(opts, rep, eCode);
- };
+ GetCallback getCallback = std::bind(JniOcResourceImpl::onGetCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onGetListener,
+ shared_from_this());
return m_sharedResource->get(queryParametersMap, getCallback, QoS);
}
-OCStackResult JniOcResource::get(
+OCStackResult JniOcResourceImpl::get(
JNIEnv* env,
const std::string &resourceType,
const std::string &resourceInterface,
{
JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
- GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onGetListener->onGetCallback(opts, rep, eCode);
- };
+ GetCallback getCallback = std::bind(JniOcResourceImpl::onGetCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onGetListener,
+ shared_from_this());
return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
getCallback);
}
-OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,
+OCStackResult JniOcResourceImpl::get(JNIEnv* env, const std::string &resourceType,
const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,
jobject jListener, QualityOfService QoS)
{
JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
- GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onGetListener->onGetCallback(opts, rep, eCode);
- };
+ GetCallback getCallback = std::bind(JniOcResourceImpl::onGetCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onGetListener,
+ shared_from_this());
return m_sharedResource->get(resourceType, resourceInterface, queryParametersMap,
getCallback, QoS);
}
-OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
+void JniOcResourceImpl::onPutCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, JniOnPutListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
+{
+ auto obj = weakRef.lock();
+ if (!obj)
+ {
+ LOGD("Put callback called on deleted object\n");
+ return;
+ }
+
+ listener->onPutCallback(opts, rep, eCode);
+}
+
+OCStackResult JniOcResourceImpl::put(JNIEnv* env, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener)
{
JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
- PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPutListener->onPutCallback(opts, rep, eCode);
- };
+ PutCallback putCallback = std::bind(JniOcResourceImpl::onPutCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPutListener,
+ shared_from_this());
return m_sharedResource->put(representation, queryParametersMap, putCallback);
}
-OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
+OCStackResult JniOcResourceImpl::put(JNIEnv* env, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
- PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPutListener->onPutCallback(opts, rep, eCode);
- };
+ PutCallback putCallback = std::bind(JniOcResourceImpl::onPutCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPutListener,
+ shared_from_this());
return m_sharedResource->put(representation, queryParametersMap, putCallback, QoS);
}
-OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
+OCStackResult JniOcResourceImpl::put(JNIEnv* env, const std::string &resourceType,
const std::string &resourceInterface, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener)
{
JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
- PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPutListener->onPutCallback(opts, rep, eCode);
- };
+ PutCallback putCallback = std::bind(JniOcResourceImpl::onPutCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPutListener,
+ shared_from_this());
return m_sharedResource->put(resourceType, resourceInterface, representation,
queryParametersMap, putCallback);
}
-OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
+OCStackResult JniOcResourceImpl::put(JNIEnv* env, const std::string &resourceType,
const std::string &resourceInterface, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
JniOnPutListener *onPutListener = addOnPutListener(env, jListener);
- PutCallback putCallback = [onPutListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPutListener->onPutCallback(opts, rep, eCode);
- };
+ PutCallback putCallback = std::bind(JniOcResourceImpl::onPutCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPutListener,
+ shared_from_this());
return m_sharedResource->put(resourceType, resourceInterface, representation,
queryParametersMap, putCallback, QoS);
}
-OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
+void JniOcResourceImpl::onPostCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, JniOnPostListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
+{
+ auto obj = weakRef.lock();
+ if (!obj)
+ {
+ LOGD("Post callback called on deleted object\n");
+ return;
+ }
+
+ listener->onPostCallback(opts, rep, eCode);
+}
+
+OCStackResult JniOcResourceImpl::post(JNIEnv* env, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener)
{
JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
- PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPostListener->onPostCallback(opts, rep, eCode);
- };
+ PostCallback postCallback = std::bind(JniOcResourceImpl::onPostCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPostListener,
+ shared_from_this());
return m_sharedResource->post(representation, queryParametersMap, postCallback);
}
-OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
+OCStackResult JniOcResourceImpl::post(JNIEnv* env, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
- PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPostListener->onPostCallback(opts, rep, eCode);
- };
+ PostCallback postCallback = std::bind(JniOcResourceImpl::onPostCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPostListener,
+ shared_from_this());
return m_sharedResource->post(representation, queryParametersMap, postCallback, QoS);
}
-OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
+OCStackResult JniOcResourceImpl::post(JNIEnv* env, const std::string &resourceType,
const std::string &resourceInterface, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener)
{
JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
- PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPostListener->onPostCallback(opts, rep, eCode);
- };
+ PostCallback postCallback = std::bind(JniOcResourceImpl::onPostCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPostListener,
+ shared_from_this());
return m_sharedResource->post(resourceType, resourceInterface, representation,
queryParametersMap, postCallback);
}
-OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
+OCStackResult JniOcResourceImpl::post(JNIEnv* env, const std::string &resourceType,
const std::string &resourceInterface, const OCRepresentation &representation,
const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
- PostCallback postCallback = [onPostListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onPostListener->onPostCallback(opts, rep, eCode);
- };
+ PostCallback postCallback = std::bind(JniOcResourceImpl::onPostCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPostListener,
+ shared_from_this());
return m_sharedResource->post(resourceType, resourceInterface, representation,
queryParametersMap, postCallback, QoS);
}
-OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)
+void JniOcResourceImpl::onDeleteCallback(const HeaderOptions& opts,
+ const int eCode, JniOnDeleteListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
+{
+ auto obj = weakRef.lock();
+ if (!obj)
+ {
+ LOGD("Delete callback called on deleted object\n");
+ return;
+ }
+
+ listener->onDeleteCallback(opts, eCode);
+}
+
+OCStackResult JniOcResourceImpl::deleteResource(JNIEnv* env, jobject jListener)
{
JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
- DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts,
- const int eCode)
- {
- onDeleteListener->onDeleteCallback(opts, eCode);
- };
+ DeleteCallback deleteCallback = std::bind(JniOcResourceImpl::onDeleteCallback, std::placeholders::_1,
+ std::placeholders::_2, onDeleteListener,
+ shared_from_this());
return m_sharedResource->deleteResource(deleteCallback);
}
-OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
+OCStackResult JniOcResourceImpl::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
{
JniOnDeleteListener *onDeleteListener = addOnDeleteListener(env, jListener);
- DeleteCallback deleteCallback = [onDeleteListener](const HeaderOptions& opts, const int eCode)
- {
- onDeleteListener->onDeleteCallback(opts, eCode);
- };
+ DeleteCallback deleteCallback = std::bind(JniOcResourceImpl::onDeleteCallback, std::placeholders::_1,
+ std::placeholders::_2, onDeleteListener,
+ shared_from_this());
return m_sharedResource->deleteResource(deleteCallback, QoS);
}
-OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
+void JniOcResourceImpl::onObserveCallback(const HeaderOptions& opts, const OCRepresentation& rep,
+ const int eCode, const int& sequenceNumber,
+ JniOnObserveListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
+{
+ auto obj = weakRef.lock();
+ if (!obj)
+ {
+ LOGD("Observe callback called on deleted object\n");
+ return;
+ }
+
+ listener->onObserveCallback(opts, rep, eCode, sequenceNumber);
+}
+
+OCStackResult JniOcResourceImpl::observe(JNIEnv* env, ObserveType observeType,
const QueryParamsMap &queryParametersMap, jobject jListener)
{
JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
- ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
- {
- onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
- };
+ ObserveCallback observeCallback = std::bind(JniOcResourceImpl::onObserveCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3,
+ std::placeholders::_4, onObserveListener,
+ shared_from_this());
return m_sharedResource->observe(observeType, queryParametersMap, observeCallback);
}
-OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
+OCStackResult JniOcResourceImpl::observe(JNIEnv* env, ObserveType observeType,
const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
JniOnObserveListener *onObserveListener = addOnObserveListener(env, jListener);
- ObserveCallback observeCallback = [onObserveListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int& eCode, const int& sequenceNumber)
- {
- onObserveListener->onObserveCallback(opts, rep, eCode, sequenceNumber);
- };
+ ObserveCallback observeCallback = std::bind(JniOcResourceImpl::onObserveCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3,
+ std::placeholders::_4, onObserveListener,
+ shared_from_this());
return m_sharedResource->observe(observeType, queryParametersMap, observeCallback, QoS);
}
-OCStackResult JniOcResource::cancelObserve(JNIEnv* env)
-{
- this->m_onObserveManager.removeAllListeners(env);
- return m_sharedResource->cancelObserve();
-}
-
-OCStackResult JniOcResource::cancelObserve(JNIEnv* env, QualityOfService qos)
+OCStackResult JniOcResourceImpl::cancelObserve(JNIEnv* env, QualityOfService qos)
{
- //TODO confirm behavior
- //add removal of java listeners by qos
- this->m_onObserveManager.removeAllListeners(env);
+ // In Low case, after delete the callback and send empty message when client receive the notify.
+ // But TCP does not support EMPTY message.
+ if ((CT_ADAPTER_IP & connectivityType()) && QualityOfService::HighQos != qos)
+ {
+ this->m_onObserveManager.removeAllListeners(env);
+ }
return m_sharedResource->cancelObserve(qos);
}
-void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)
+void JniOcResourceImpl::setHeaderOptions(const HeaderOptions &headerOptions)
{
m_sharedResource->setHeaderOptions(headerOptions);
}
-void JniOcResource::unsetHeaderOptions()
+void JniOcResourceImpl::unsetHeaderOptions()
{
m_sharedResource->unsetHeaderOptions();
}
-std::string JniOcResource::host()
+std::string JniOcResourceImpl::host()
{
return m_sharedResource->host();
}
-std::string JniOcResource::uri()
+std::string JniOcResourceImpl::uri()
{
return m_sharedResource->uri();
}
-OCConnectivityType JniOcResource::connectivityType() const
+OCConnectivityType JniOcResourceImpl::connectivityType() const
{
return m_sharedResource->connectivityType();
}
-bool JniOcResource::isObservable()
+bool JniOcResourceImpl::isObservable()
{
return m_sharedResource->isObservable();
}
-std::vector< std::string > JniOcResource::getResourceTypes() const
+std::vector< std::string > JniOcResourceImpl::getResourceTypes() const
{
return m_sharedResource->getResourceTypes();
}
-std::vector< std::string > JniOcResource::getResourceInterfaces(void) const
+std::vector< std::string > JniOcResourceImpl::getResourceInterfaces(void) const
{
return m_sharedResource->getResourceInterfaces();
}
-OCResourceIdentifier JniOcResource::uniqueIdentifier() const
+OCResourceIdentifier JniOcResourceImpl::uniqueIdentifier() const
{
return m_sharedResource->uniqueIdentifier();
}
-std::string JniOcResource::sid() const
+std::string JniOcResourceImpl::sid() const
{
return m_sharedResource->sid();
}
-JniOnGetListener* JniOcResource::addOnGetListener(JNIEnv* env, jobject jListener)
+std::string JniOcResourceImpl::deviceName() const
+{
+ return m_sharedResource->deviceName();
+}
+
+JniOnGetListener* JniOcResourceImpl::addOnGetListener(JNIEnv* env, jobject jListener)
{
- return this->m_onGetManager.addListener(env, jListener, this);
+ return this->m_onGetManager.addListener(env, jListener,
+ std::bind(&JniOcResourceImpl::removeOnGetListener, this,
+ std::placeholders::_1, std::placeholders::_2));
}
-JniOnPutListener* JniOcResource::addOnPutListener(JNIEnv* env, jobject jListener)
+JniOnPutListener* JniOcResourceImpl::addOnPutListener(JNIEnv* env, jobject jListener)
{
- return this->m_onPutManager.addListener(env, jListener, this);
+ return this->m_onPutManager.addListener(env, jListener,
+ std::bind(&JniOcResourceImpl::removeOnPutListener, this,
+ std::placeholders::_1, std::placeholders::_2));
}
-JniOnPostListener* JniOcResource::addOnPostListener(JNIEnv* env, jobject jListener)
+JniOnPostListener* JniOcResourceImpl::addOnPostListener(JNIEnv* env, jobject jListener)
{
- return this->m_onPostManager.addListener(env, jListener, this);
+ return this->m_onPostManager.addListener(env, jListener,
+ std::bind(&JniOcResourceImpl::removeOnPostListener, this,
+ std::placeholders::_1, std::placeholders::_2));
}
-JniOnDeleteListener* JniOcResource::addOnDeleteListener(JNIEnv* env, jobject jListener)
+JniOnDeleteListener* JniOcResourceImpl::addOnDeleteListener(JNIEnv* env, jobject jListener)
{
- return this->m_onDeleteManager.addListener(env, jListener, this);
+ return this->m_onDeleteManager.addListener(env, jListener,
+ std::bind(&JniOcResourceImpl::removeOnDeleteListener, this,
+ std::placeholders::_1, std::placeholders::_2));
}
-JniOnObserveListener* JniOcResource::addOnObserveListener(JNIEnv* env, jobject jListener)
+JniOnObserveListener* JniOcResourceImpl::addOnObserveListener(JNIEnv* env, jobject jListener)
{
- return this->m_onObserveManager.addListener(env, jListener, this);
+ return this->m_onObserveManager.addListener(env, jListener,
+ std::bind(&JniOcResourceImpl::removeOnObserveListener, this,
+ std::placeholders::_1, std::placeholders::_2));
}
-void JniOcResource::removeOnGetListener(JNIEnv* env, jobject jListener)
+void JniOcResourceImpl::removeOnGetListener(JNIEnv* env, jobject jListener)
{
this->m_onGetManager.removeListener(env, jListener);
}
-void JniOcResource::removeOnPutListener(JNIEnv* env, jobject jListener)
+void JniOcResourceImpl::removeOnPutListener(JNIEnv* env, jobject jListener)
{
this->m_onPutManager.removeListener(env, jListener);
}
-void JniOcResource::removeOnPostListener(JNIEnv* env, jobject jListener)
+void JniOcResourceImpl::removeOnPostListener(JNIEnv* env, jobject jListener)
{
this->m_onPostManager.removeListener(env, jListener);
}
-void JniOcResource::removeOnDeleteListener(JNIEnv* env, jobject jListener)
+void JniOcResourceImpl::removeOnDeleteListener(JNIEnv* env, jobject jListener)
{
this->m_onDeleteManager.removeListener(env, jListener);
}
-void JniOcResource::removeOnObserveListener(JNIEnv* env, jobject jListener)
+void JniOcResourceImpl::removeOnObserveListener(JNIEnv* env, jobject jListener)
{
this->m_onObserveManager.removeListener(env, jListener);
}
-std::shared_ptr<OCResource> JniOcResource::getOCResource()
+#ifdef WITH_MQ
+JniOnMQTopicFoundListener* JniOcResourceImpl::addOnTopicFoundListener(JNIEnv* env, jobject jListener)
{
- return this->m_sharedResource;
+ return this->m_onFoundTopicResourceManager.addListener(env, jListener,
+ std::bind(&JniOcResource::removeOnTopicFoundListener, this,
+ std::placeholders::_1, std::placeholders::_2));
}
-JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
+void JniOcResourceImpl::removeOnTopicFoundListener(JNIEnv* env, jobject jListener)
{
- JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);
- if (env->ExceptionCheck())
- {
- LOGE("Failed to get native handle from OcResource");
- }
- if (!resource)
- {
- ThrowOcException(JNI_NO_NATIVE_POINTER, "");
- }
- return resource;
+ this->m_onFoundTopicResourceManager.removeListener(env, jListener);
}
-/*
-* Class: org_iotivity_base_OcResource
-* Method: get
-* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get
-(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)
+JniOnMQSubscribeListener* JniOcResourceImpl::addOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener)
{
- LOGD("OcResource_get");
- if (!jQueryParamsMap)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
- return;
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
- return;
- }
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ return this->m_onSubcribeTopicManager.addListener(env, jListener,
+ std::bind(&JniOcResource::removeOnMQTopicSubscribeListener, this
+ std::placeholders::_1, std::placeholders::_2));
+}
- QueryParamsMap qpm;
- JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+void JniOcResourceImpl::removeOnMQTopicSubscribeListener(JNIEnv* env, jobject jListener)
+{
+ this->m_onSubcribeTopicManager.removeListener(env, jListener);
+}
+#endif
- try
- {
- OCStackResult result = resource->get(
- env,
- qpm,
- jListener);
+std::shared_ptr<OCResource> JniOcResourceImpl::getOCResource()
+{
+ return this->m_sharedResource;
+}
- if (OC_STACK_OK != result)
+#ifdef WITH_MQ
+OCStackResult JniOcResourceImpl::discoveryMQTopics(JNIEnv* env,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ JniOnMQTopicFoundListener *onTopicFoundListener = addOnTopicFoundListener(env, jListener);
+
+ MQTopicCallback findCallback = std::bind([](const int& eCode,
+ const std::string& uri, std::shared_ptr<OCResource> resource,
+ JniOnMQTopicFoundListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
+ {
+ auto obj = weakRef.lock();
+ if (!obj)
{
- ThrowOcException(result, "OcResource_get");
+ LOGD("Topic callback called on deleted object\n");
+ return;
}
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
- }
+ listener->foundTopicCallback(eCode, uri, resource);
+ }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
+ onTopicFoundListener, shared_from_this());
+
+ return m_sharedResource->discoveryMQTopics(queryParametersMap, findCallback, QoS);
}
-/*
-* Class: org_iotivity_base_OcResource
-* Method: get1
-* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1
-(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+OCStackResult JniOcResourceImpl::createMQTopic(JNIEnv* env,
+ const OCRepresentation &representation, const std::string &targetUri,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
- LOGD("OcResource_get");
- if (!jQueryParamsMap)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
- return;
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
- return;
- }
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ JniOnMQTopicFoundListener *onTopicCreatedListener = addOnTopicFoundListener(env, jListener);
- QueryParamsMap qpm;
- JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
-
- try
+ MQTopicCallback createCallback = std::bind([](const int& eCode,
+ const std::string& uri,
+ std::shared_ptr<OCResource> resource,
+ JniOnMQTopicFoundListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
{
- OCStackResult result = resource->get(
- env,
- qpm,
- jListener,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
-
- if (OC_STACK_OK != result)
+ auto obj = weakRef.lock();
+ if (!obj)
{
- ThrowOcException(result, "OcResource_get");
+ LOGD("Topic callback called on deleted object\n");
+ return;
}
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
- }
-}
+ listener->createdTopicCallback(eCode, uri, resource);
+ }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3,
+ onTopicCreatedListener, shared_from_this());
-/*
-* Class: org_iotivity_base_OcResource
-* Method: get2
-* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
-Lorg/iotivity/base/OcResource/OnGetListener;)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2
-(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
-jobject jQueryParamsMap, jobject jListener)
+ return m_sharedResource->createMQTopic(representation, targetUri,
+ queryParametersMap,
+ createCallback, QoS);
+}
+#endif
+#ifdef MQ_SUBSCRIBER
+OCStackResult JniOcResourceImpl::subscribeMQTopic(JNIEnv* env,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
{
- LOGD("OcResource_get");
- std::string resourceType;
- if (jResourceType)
- {
- resourceType = env->GetStringUTFChars(jResourceType, nullptr);
- }
- std::string resourceInterface;
- if (jResourceInterface)
- {
- resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
- }
- if (!jQueryParamsMap)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
- return;
- }
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
- return;
- }
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ JniOnMQSubscribeListener *onSubscribeListener = addOnMQTopicSubscribeListener(env, jListener);
- QueryParamsMap qpm;
- JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
- try
+ ObserveCallback subscribeCallback = std::bind([](const HeaderOptions& opts,
+ const OCRepresentation& rep, const int& eCode,
+ const int& sequenceNumber,
+ JniOnMQSubscribeListener *listener,
+ std::weak_ptr<JniOcResourceImpl> weakRef)
{
- OCStackResult result = resource->get(
- env,
- resourceType,
- resourceInterface,
- qpm,
- jListener);
-
- if (OC_STACK_OK != result)
+ auto obj = weakRef.lock();
+ if (!obj)
{
- ThrowOcException(result, "OcResource_get");
+ LOGD("Subscribe MQ callback called on deleted object\n");
+ return;
}
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
- }
+ listener->onSubscribeCallback(opts, rep, eCode, sequenceNumber);
+ }, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4,
+ onSubscribeListener, shared_from_this());
+
+ return m_sharedResource->subscribeMQTopic(ObserveType::Observe, queryParametersMap,
+ subscribeCallback, QoS);
}
-/*
-* Class: org_iotivity_base_OcResource
-* Method: get3
-* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
-Lorg/iotivity/base/OcResource/OnGetListener;I)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3
-(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
-jobject jQueryParamsMap, jobject jListener, jint jQoS)
+OCStackResult JniOcResourceImpl::unsubscribeMQTopic(QualityOfService QoS)
{
- LOGD("OcResource_get");
- if (!jQueryParamsMap)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return m_sharedResource->unsubscribeMQTopic(QoS);
+}
+
+OCStackResult JniOcResourceImpl::requestMQPublish(JNIEnv* env,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
+
+ PostCallback postCallback = std::bind(JniOcResourceImpl::onPostCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPostListener,
+ shared_from_this());
+
+ return m_sharedResource->requestMQPublish(queryParametersMap, postCallback, QoS);
+}
+#endif
+#ifdef MQ_PUBLISHER
+OCStackResult JniOcResourceImpl::publishMQTopic(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ JniOnPostListener *onPostListener = addOnPostListener(env, jListener);
+
+ PostCallback postCallback = std::bind(JniOcResourceImpl::onPostCallback, std::placeholders::_1,
+ std::placeholders::_2, std::placeholders::_3, onPostListener,
+ shared_from_this());
+
+ return m_sharedResource->publishMQTopic(representation, queryParametersMap,
+ postCallback, QoS);
+}
+#endif
+
+
+JniOcResource::JniOcResource(std::shared_ptr<OCResource> &resource)
+{
+ m_impl = std::make_shared<JniOcResourceImpl>(resource);
+}
+
+OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener)
+{
+ return m_impl->get(env, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::get(JNIEnv* env, const QueryParamsMap &queryParametersMap, jobject jListener,
+ QualityOfService QoS)
+{
+ return m_impl->get(env, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::get(
+ JNIEnv* env,
+ const std::string &resourceType,
+ const std::string &resourceInterface,
+ const QueryParamsMap &queryParametersMap,
+ jobject jListener)
+{
+ return m_impl->get(env, resourceType, resourceInterface, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::get(JNIEnv* env, const std::string &resourceType,
+ const std::string &resourceInterface, const QueryParamsMap &queryParametersMap,
+ jobject jListener, QualityOfService QoS)
+{
+ return m_impl->get(env, resourceType, resourceInterface, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener)
+{
+ return m_impl->put(env, representation, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::put(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->put(env, representation, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
+ const std::string &resourceInterface, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener)
+{
+ return m_impl->put(env, resourceType, resourceInterface, representation, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::put(JNIEnv* env, const std::string &resourceType,
+ const std::string &resourceInterface, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->put(env, resourceType, resourceInterface, representation, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener)
+{
+ return m_impl->post(env, representation, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::post(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->post(env, representation, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
+ const std::string &resourceInterface, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener)
+{
+ return m_impl->post(env, resourceType, resourceInterface, representation, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::post(JNIEnv* env, const std::string &resourceType,
+ const std::string &resourceInterface, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->post(env, resourceType, resourceInterface, representation, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener)
+{
+ return m_impl->deleteResource(env, jListener);
+}
+
+OCStackResult JniOcResource::deleteResource(JNIEnv* env, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->deleteResource(env, jListener, QoS);
+}
+
+OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
+ const QueryParamsMap &queryParametersMap, jobject jListener)
+{
+ return m_impl->observe(env, observeType, queryParametersMap, jListener);
+}
+
+OCStackResult JniOcResource::observe(JNIEnv* env, ObserveType observeType,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->observe(env, observeType, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::cancelObserve(JNIEnv* env, QualityOfService qos)
+{
+ return m_impl->cancelObserve(env, qos);
+}
+
+void JniOcResource::setHeaderOptions(const HeaderOptions &headerOptions)
+{
+ m_impl->setHeaderOptions(headerOptions);
+}
+
+void JniOcResource::unsetHeaderOptions()
+{
+ m_impl->unsetHeaderOptions();
+}
+
+std::string JniOcResource::host()
+{
+ return m_impl->host();
+}
+
+std::string JniOcResource::uri()
+{
+ return m_impl->uri();
+}
+
+OCConnectivityType JniOcResource::connectivityType() const
+{
+ return m_impl->connectivityType();
+}
+
+bool JniOcResource::isObservable()
+{
+ return m_impl->isObservable();
+}
+
+std::vector< std::string > JniOcResource::getResourceTypes() const
+{
+ return m_impl->getResourceTypes();
+}
+
+std::vector< std::string > JniOcResource::getResourceInterfaces(void) const
+{
+ return m_impl->getResourceInterfaces();
+}
+
+OCResourceIdentifier JniOcResource::uniqueIdentifier() const
+{
+ return m_impl->uniqueIdentifier();
+}
+
+std::string JniOcResource::sid() const
+{
+ return m_impl->sid();
+}
+
+std::string JniOcResource::deviceName() const
+{
+ return m_impl->deviceName();
+}
+
+std::shared_ptr<OCResource> JniOcResource::getOCResource()
+{
+ return m_impl->getOCResource();
+}
+
+JniOcResource* JniOcResource::getJniOcResourcePtr(JNIEnv *env, jobject thiz)
+{
+ JniOcResource *resource = GetHandle<JniOcResource>(env, thiz);
+ if (env->ExceptionCheck())
+ {
+ LOGE("Failed to get native handle from OcResource");
+ }
+ if (!resource)
+ {
+ ThrowOcException(JNI_NO_NATIVE_POINTER, "");
+ }
+ return resource;
+}
+
+#ifdef WITH_MQ
+OCStackResult JniOcResource::discoveryMQTopics(JNIEnv* env,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->discoveryMQTopics(env, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::createMQTopic(JNIEnv* env,
+ const OCRepresentation &representation, const std::string &targetUri,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->createMQTopic(env, representation, targetUri, queryParametersMap, jListener, QoS);
+}
+#endif
+#ifdef MQ_SUBSCRIBER
+OCStackResult JniOcResource::subscribeMQTopic(JNIEnv* env,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->subscribeMQTopic(env, queryParametersMap, jListener, QoS);
+}
+
+OCStackResult JniOcResource::unsubscribeMQTopic(QualityOfService QoS)
+{
+ return m_impl->unsubscribeMQTopic(QoS);
+}
+
+OCStackResult JniOcResource::requestMQPublish(JNIEnv* env,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->requestMQPublish(env, queryParametersMap, jListener, QoS);
+}
+#endif
+#ifdef MQ_PUBLISHER
+OCStackResult JniOcResource::publishMQTopic(JNIEnv* env, const OCRepresentation &representation,
+ const QueryParamsMap &queryParametersMap, jobject jListener, QualityOfService QoS)
+{
+ return m_impl->publishMQTopic(env, representation, queryParametersMap, jListener, QoS);
+}
+#endif
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: get
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_get");
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
+ return;
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->get(
+ env,
+ qpm,
+ jListener);
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_get");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: get1
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnGetListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get1
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_get");
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
+ return;
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->get(
+ env,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_get");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: get2
+* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
+Lorg/iotivity/base/OcResource/OnGetListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get2
+(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
+jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_get");
+ std::string resourceType;
+ if (jResourceType)
+ {
+ resourceType = env->GetStringUTFChars(jResourceType, nullptr);
+ }
+ std::string resourceInterface;
+ if (jResourceInterface)
+ {
+ resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
+ }
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
+ return;
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+ try
+ {
+ OCStackResult result = resource->get(
+ env,
+ resourceType,
+ resourceInterface,
+ qpm,
+ jListener);
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_get");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: get3
+* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;
+Lorg/iotivity/base/OcResource/OnGetListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_get3
+(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
+jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_get");
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onGetListener cannot be null");
+ return;
+ }
+ std::string resourceType;
+ if (jResourceType)
+ {
+ resourceType = env->GetStringUTFChars(jResourceType, nullptr);
+ }
+ std::string resourceInterface;
+ if (jResourceInterface)
+ {
+ resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+
+ try
+ {
+ OCStackResult result = resource->get(
+ env,
+ resourceType,
+ resourceInterface,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_get");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: put
+* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
+Lorg/iotivity/base/OcResource/OnPutListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_put");
+ if (!jRepresentation)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener 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->put(
+ env,
+ *representation,
+ qpm,
+ jListener);
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_put");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: put1
+* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
+Lorg/iotivity/base/OcResource/OnPutListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
+jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_put");
+ if (!jRepresentation)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener 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->put(
+ env,
+ *representation,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_put");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: put2
+* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
+Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2
+(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
+jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_put");
+ std::string resourceType;
+ if (jResourceType)
+ {
+ resourceType = env->GetStringUTFChars(jResourceType, nullptr);
+ }
+ std::string resourceInterface;
+ if (jResourceInterface)
+ {
+ resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
+ }
+ if (!jRepresentation)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener 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->put(
+ env,
+ resourceType,
+ resourceInterface,
+ *representation,
+ qpm,
+ jListener);
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_put");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: put3
+* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
+Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3
+(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,
+jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_put");
+ 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, "onPutListener cannot be null");
+ return;
+ }
+ std::string resourceType;
+ if (jResourceType)
+ {
+ resourceType = env->GetStringUTFChars(jResourceType, nullptr);
+ }
+ std::string resourceInterface;
+ if (jResourceInterface)
+ {
+ resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
+ }
+
+ 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->put(
+ env,
+ resourceType,
+ resourceInterface,
+ *representation,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_put");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: post
+* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_post");
+ 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->post(
+ env,
+ *representation,
+ qpm,
+ jListener);
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_post");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: post1
+* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+{
+ LOGD("OcResource_post");
+ 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, "onGetListener cannot be null");
+ 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->post(
+ env,
+ *representation,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_post");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: post2
+* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
+Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2
+(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
+jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_post");
+ 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;
}
std::string resourceType;
{
resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
}
+
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ if (!resource)
+ {
+ return;
+ }
+
+ OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
+ if (!representation)
+ {
+ return;
+ }
QueryParamsMap qpm;
JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->get(
+ OCStackResult result = resource->post(
env,
resourceType,
resourceInterface,
+ *representation,
qpm,
- jListener,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
+ jListener);
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_get");
+ ThrowOcException(result, "OcResource_post");
}
}
catch (OCException& e)
/*
* Class: org_iotivity_base_OcResource
-* Method: put
-* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
-Lorg/iotivity/base/OcResource/OnPutListener;)V
+* Method: post3
+* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
+Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put
-(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3
+(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
+jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
{
- LOGD("OcResource_put");
+ LOGD("OcResource_post");
if (!jRepresentation)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
return;
}
if (!jQueryParamsMap)
}
if (!jListener)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
return;
}
+ std::string resourceType;
+ if (jResourceType)
+ {
+ resourceType = env->GetStringUTFChars(jResourceType, nullptr);
+ }
+ std::string resourceInterface;
+ if (jResourceInterface)
+ {
+ resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
+ }
+
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ if (!resource)
+ {
+ return;
+ }
OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
- if (!representation) return;
+ if (!representation)
+ {
+ return;
+ }
QueryParamsMap qpm;
JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->put(
+ OCStackResult result = resource->post(
env,
+ resourceType,
+ resourceInterface,
*representation,
qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_post");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: deleteResource
+* Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource
+(JNIEnv *env, jobject thiz, jobject jListener)
+{
+ LOGD("OcResource_deleteResource");
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
+ return;
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return;
+ }
+
+ try
+ {
+ OCStackResult result = resource->deleteResource(
+ env,
jListener);
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_put");
+ ThrowOcException(result, "OcResource_deleteResource");
}
}
catch (OCException& e)
/*
* Class: org_iotivity_base_OcResource
-* Method: put1
-* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;
-Lorg/iotivity/base/OcResource/OnPutListener;I)V
+* Method: deleteResource1
+* Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put1
-(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
-jobject jListener, jint jQoS)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1
+(JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)
{
- LOGD("OcResource_put");
- if (!jRepresentation)
+ LOGD("OcResource_deleteResource");
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
+ return;
+ }
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
return;
}
+
+ try
+ {
+ OCStackResult result = resource->deleteResource(
+ env,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
+
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_deleteResource");
+ }
+ }
+ catch (OCException& e)
+ {
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
+ }
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: observe
+* Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
+Lorg/iotivity/base/OcResource/OnObserveListener;)V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe
+(JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)
+{
+ LOGD("OcResource_observe");
if (!jQueryParamsMap)
{
ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
}
if (!jListener)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
return;
}
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
- if (!representation) return;
+ if (!resource)
+ {
+ return;
+ }
QueryParamsMap qpm;
JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->put(
+ OCStackResult result = resource->observe(
env,
- *representation,
+ JniUtils::getObserveType(env, static_cast<int>(observeType)),
qpm,
- jListener,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
+ jListener);
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_put");
+ ThrowOcException(result, "OcResource_observe");
}
}
catch (OCException& e)
/*
* Class: org_iotivity_base_OcResource
-* Method: put2
-* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
-Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;)V
+* Method: observe1
+* Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
+Lorg/iotivity/base/OcResource/OnObserveListener;I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put2
-(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
-jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1
+(JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,
+jobject jListener, jint jQoS)
{
- LOGD("OcResource_put");
- std::string resourceType;
- if (jResourceType)
- {
- resourceType = env->GetStringUTFChars(jResourceType, nullptr);
- }
- std::string resourceInterface;
- if (jResourceInterface)
- {
- resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
- }
- if (!jRepresentation)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
- return;
- }
+ LOGD("OcResource_observe");
if (!jQueryParamsMap)
{
ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
}
if (!jListener)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onObserveListener cannot be null");
return;
}
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
- if (!representation) return;
+ if (!resource)
+ {
+ return;
+ }
QueryParamsMap qpm;
JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->put(
+ OCStackResult result = resource->observe(
env,
- resourceType,
- resourceInterface,
- *representation,
+ JniUtils::getObserveType(env, static_cast<int>(observeType)),
qpm,
- jListener);
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_put");
+ ThrowOcException(result, "OcResource_observe");
}
}
catch (OCException& e)
/*
* Class: org_iotivity_base_OcResource
-* Method: put3
-* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
-Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPutListener;I)V
+* Method: cancelObserve1
+* Signature: I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_put3
-(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface, jobject jRepresentation,
-jobject jQueryParamsMap, jobject jListener, jint jQoS)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1
+(JNIEnv *env, jobject thiz, jint jQoS)
{
- LOGD("OcResource_put");
- 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)
+ LOGD("OcResource_cancelObserve1");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPutListener cannot be null");
return;
}
- std::string resourceType;
- if (jResourceType)
- {
- resourceType = env->GetStringUTFChars(jResourceType, nullptr);
- }
- std::string resourceInterface;
- if (jResourceInterface)
- {
- resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
- }
-
- 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->put(
+ OCStackResult result = resource->cancelObserve(
env,
- resourceType,
- resourceInterface,
- *representation,
- qpm,
- jListener,
JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_put");
+ ThrowOcException(result, "OcResource_cancelObserve");
}
}
catch (OCException& e)
/*
* Class: org_iotivity_base_OcResource
-* Method: post
-* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
+* Method: setHeaderOptions
+* Signature: ([Lorg/iotivity/OcHeaderOption;)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post
-(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_setHeaderOptions
+(JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)
{
- LOGD("OcResource_post");
- if (!jRepresentation)
+ LOGD("OcResource_setHeaderOptions");
+ if (!jheaderOptionArr)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");
return;
}
- if (!jQueryParamsMap)
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
return;
}
- if (!jListener)
+
+ HeaderOptions headerOptions;
+ JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);
+
+ resource->setHeaderOptions(headerOptions);
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: unsetHeaderOptions
+* Signature: ()V
+*/
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_unsetHeaderOptions");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
return;
}
+
+ resource->unsetHeaderOptions();
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: getHost
+* Signature: ()Ljava/lang/String;
+*/
+JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_getHost");
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ if (!resource)
+ {
+ return nullptr;
+ }
- OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
- if (!representation) return;
+ return env->NewStringUTF(resource->host().c_str());
+}
- QueryParamsMap qpm;
- JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
+/*
+* Class: org_iotivity_base_OcResource
+* Method: getUri
+* Signature: ()Ljava/lang/String;
+*/
+JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_getUri");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return nullptr;
+ }
- try
+ return env->NewStringUTF(resource->uri().c_str());
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: getConnectivityTypeN
+* Signature: ()I
+*/
+JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_getConnectivityType");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- OCStackResult result = resource->post(
- env,
- *representation,
- qpm,
- jListener);
+ return -1;
+ }
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "OcResource_post");
- }
+ OCConnectivityType connectivityType = resource->connectivityType();
+ return static_cast<jint>(connectivityType);
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: isObservable
+* Signature: ()Z
+*/
+JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_isObservable");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return false;
}
- catch (OCException& e)
+
+ return (jboolean)resource->isObservable();
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: getResourceTypes
+* Signature: ()Ljava/util/List;
+*/
+JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_getResourceTypes");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
+ return nullptr;
+ }
+
+ std::vector<std::string> resourceTypes = resource->getResourceTypes();
+
+ return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);
+}
+
+/*
+* Class: org_iotivity_base_OcResource
+* Method: getResourceInterfaces
+* Signature: ()Ljava/util/List;
+*/
+JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_getResourceInterfaces");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
+ {
+ return nullptr;
}
+
+ std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();
+
+ return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);
}
/*
* Class: org_iotivity_base_OcResource
-* Method: post1
-* Signature: (Lorg/iotivity/base/OcRepresentation;Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
+* Method: getUniqueIdentifier
+* Signature: ()Lorg/iotivity/base/OcResourceIdentifier;
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post1
-(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier
+(JNIEnv *env, jobject thiz)
{
- LOGD("OcResource_post");
- 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)
+ LOGD("OcResource_getUniqueIdentifier");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
- return;
+ return nullptr;
}
- 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
+ JniOcResourceIdentifier *jniResourceIdentifier =
+ new JniOcResourceIdentifier(resource->uniqueIdentifier());
+ if (!jniResourceIdentifier)
{
- OCStackResult result = resource->post(
- env,
- *representation,
- qpm,
- jListener,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
-
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "OcResource_post");
- }
+ return nullptr;
}
- catch (OCException& e)
+
+ jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);
+ jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,
+ g_mid_OcResourceIdentifier_N_ctor, handle);
+ if (!jResourceIdentifier)
{
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
+ delete jniResourceIdentifier;
}
+ return jResourceIdentifier;
}
/*
* Class: org_iotivity_base_OcResource
-* Method: post2
-* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
-Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;)V
+* Method: getServerId
+* Signature: ()Ljava/lang/String;
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post2
-(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
-jobject jRepresentation, jobject jQueryParamsMap, jobject jListener)
+JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId
+(JNIEnv *env, jobject thiz)
{
- LOGD("OcResource_post");
- 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;
- }
- std::string resourceType;
- if (jResourceType)
- {
- resourceType = env->GetStringUTFChars(jResourceType, nullptr);
- }
- std::string resourceInterface;
- if (jResourceInterface)
+ LOGD("OcResource_getServerId");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
+ return nullptr;
}
- 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->post(
- env,
- resourceType,
- resourceInterface,
- *representation,
- qpm,
- jListener);
+ return env->NewStringUTF(resource->sid().c_str());
+}
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "OcResource_post");
- }
- }
- catch (OCException& e)
+/*
+* Class: org_iotivity_base_OcResource
+* Method: getDeviceName
+* Signature: ()Ljava/lang/String;
+*/
+JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getDeviceName
+(JNIEnv *env, jobject thiz)
+{
+ LOGD("OcResource_getDeviceName");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
+ return nullptr;
}
+
+ return env->NewStringUTF(resource->deviceName().c_str());
}
/*
* Class: org_iotivity_base_OcResource
-* Method: post3
-* Signature: (Ljava/lang/String;Ljava/lang/String;Lorg/iotivity/base/OcRepresentation;
-Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
+* Method: dispose
+* Signature: ()V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_post3
-(JNIEnv *env, jobject thiz, jstring jResourceType, jstring jResourceInterface,
-jobject jRepresentation, jobject jQueryParamsMap, jobject jListener, jint jQoS)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose
+(JNIEnv *env, jobject thiz)
{
- LOGD("OcResource_post");
- if (!jRepresentation)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
- return;
- }
+ LOGD("OcResource_dispose");
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ delete resource;
+}
+
+/*
+* 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, "onPostListener cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "listener cannot be null");
return;
}
- std::string resourceType;
- if (jResourceType)
- {
- resourceType = env->GetStringUTFChars(jResourceType, nullptr);
- }
- std::string resourceInterface;
- if (jResourceInterface)
- {
- resourceInterface = env->GetStringUTFChars(jResourceInterface, nullptr);
- }
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env, jRepresentation);
- if (!representation) return;
+ if (!resource)
+ {
+ return;
+ }
QueryParamsMap qpm;
JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->post(
+ OCStackResult result = resource->discoveryMQTopics(
env,
- resourceType,
- resourceInterface,
- *representation,
qpm,
jListener,
JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_post");
+ 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: deleteResource
-* Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;)V
+* 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_deleteResource
-(JNIEnv *env, jobject thiz, jobject jListener)
+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_deleteResource");
- if (!jListener)
- {
- ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
- return;
- }
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- try
- {
- OCStackResult result = resource->deleteResource(
- env,
- jListener);
+ LOGD("OcResource_createMQTopicImpl");
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "OcResource_deleteResource");
- }
- }
- catch (OCException& e)
+#ifdef WITH_MQ
+ if (!jQueryParamsMap)
{
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
}
-}
-/*
-* Class: org_iotivity_base_OcResource
-* Method: deleteResource1
-* Signature: (Lorg/iotivity/base/OcResource/OnDeleteListener;I)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_deleteResource1
-(JNIEnv *env, jobject thiz, jobject jListener, jint jQoS)
-{
- LOGD("OcResource_deleteResource");
if (!jListener)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "onDeleteListener cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "listener cannot be null");
return;
}
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- try
- {
- OCStackResult result = resource->deleteResource(
- env,
- jListener,
- JniUtils::getQOS(env, static_cast<int>(jQoS)));
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "OcResource_deleteResource");
- }
- }
- catch (OCException& e)
+ if (!jRepresentation)
{
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
+ ThrowOcException(OC_STACK_INVALID_PARAM, "representation null");
+ return;
}
-}
-/*
-* Class: org_iotivity_base_OcResource
-* Method: observe
-* Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
-Lorg/iotivity/base/OcResource/OnObserveListener;)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe
-(JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap, jobject jListener)
-{
- LOGD("OcResource_observe");
- if (!jQueryParamsMap)
+ JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
+ if (!resource)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
return;
}
- if (!jListener)
+
+ std::string targetUri;
+ if (jUri)
+ {
+ targetUri = env->GetStringUTFChars(jUri, nullptr);
+ }
+
+ OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env,
+ jRepresentation);
+ if (!representation)
{
- 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->observe(
+ OCStackResult result = resource->createMQTopic(
env,
- JniUtils::getObserveType(env, static_cast<int>(observeType)),
+ *representation,
+ targetUri,
qpm,
- jListener);
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_observe");
+ 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: observe1
-* Signature: (Lorg/iotivity/base/ObserveType;Ljava/util/Map;
-Lorg/iotivity/base/OcResource/OnObserveListener;I)V
+* Method: subscribeMQTopic
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnObserveListener;I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_observe1
-(JNIEnv *env, jobject thiz, jint observeType, jobject jQueryParamsMap,
-jobject jListener, jint jQoS)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_subscribeMQTopicImpl
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
{
- LOGD("OcResource_observe");
+ LOGD("OcResource_subscribeMQTopicImpl");
+#ifdef MQ_SUBSCRIBER
if (!jQueryParamsMap)
{
ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
return;
}
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ if (!resource)
+ {
+ return;
+ }
QueryParamsMap qpm;
JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->observe(
+ OCStackResult result = resource->subscribeMQTopic(
env,
- JniUtils::getObserveType(env, static_cast<int>(observeType)),
qpm,
jListener,
JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_observe");
+ 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: cancelObserve
-* Signature: ()V
+* Method: unsubscribeMQTopicImpl
+* Signature: (I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve
-(JNIEnv *env, jobject thiz)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsubscribeMQTopicImpl
+(JNIEnv *env, jobject thiz, jint jQoS)
{
- LOGD("OcResource_cancelObserve");
+ LOGD("OcResource_unsubscribeMQTopicImpl");
+#ifdef MQ_SUBSCRIBER
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
+ if (!resource)
+ {
+ return;
+ }
try
{
- OCStackResult result = resource->cancelObserve(env);
-
+ OCStackResult result = resource->unsubscribeMQTopic(
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_cancelObserve");
+ 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: cancelObserve1
-* Signature: I)V
+* Method: requestMQPublishImpl
+* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcResource/OnPostListener;I)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_cancelObserve1
-(JNIEnv *env, jobject thiz, jint jQoS)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_requestMQPublishImpl
+(JNIEnv *env, jobject thiz, jobject jQueryParamsMap, jobject jListener, jint jQoS)
{
- LOGD("OcResource_cancelObserve1");
+ 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;
+ if (!resource)
+ {
+ return;
+ }
+
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
try
{
- OCStackResult result = resource->cancelObserve(
+ OCStackResult result = resource->requestMQPublish(
env,
+ qpm,
+ jListener,
JniUtils::getQOS(env, static_cast<int>(jQoS)));
if (OC_STACK_OK != result)
{
- ThrowOcException(result, "OcResource_cancelObserve");
+ 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: setHeaderOptions
-* Signature: ([Lorg/iotivity/OcHeaderOption;)V
+* 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_setHeaderOptions
-(JNIEnv *env, jobject thiz, jobjectArray jheaderOptionArr)
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_publishMQTopicImpl
+(JNIEnv *env, jobject thiz, jobject jRepresentation, jobject jQueryParamsMap,
+ jobject jListener, jint jQoS)
{
- LOGD("OcResource_setHeaderOptions");
- if (!jheaderOptionArr)
+ LOGD("OcResource_publishMQTopicImpl");
+#ifdef MQ_PUBLISHER
+ if (!jRepresentation)
{
- ThrowOcException(OC_STACK_INVALID_PARAM, "headerOptionList cannot be null");
+ ThrowOcException(OC_STACK_INVALID_PARAM, "representation cannot be null");
return;
}
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- HeaderOptions headerOptions;
- JniUtils::convertJavaHeaderOptionsArrToVector(env, jheaderOptionArr, headerOptions);
-
- resource->setHeaderOptions(headerOptions);
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: unsetHeaderOptions
-* Signature: ()V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_unsetHeaderOptions
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_unsetHeaderOptions");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return;
-
- resource->unsetHeaderOptions();
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getHost
-* Signature: ()Ljava/lang/String;
-*/
-JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getHost
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getHost");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return nullptr;
-
- return env->NewStringUTF(resource->host().c_str());
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getUri
-* Signature: ()Ljava/lang/String;
-*/
-JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getUri
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getUri");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return nullptr;
-
- return env->NewStringUTF(resource->uri().c_str());
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getConnectivityTypeN
-* Signature: ()I
-*/
-JNIEXPORT jint JNICALL Java_org_iotivity_base_OcResource_getConnectivityTypeN
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getConnectivityType");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return -1;
-
- OCConnectivityType connectivityType = resource->connectivityType();
- return static_cast<jint>(connectivityType);
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: isObservable
-* Signature: ()Z
-*/
-JNIEXPORT jboolean JNICALL Java_org_iotivity_base_OcResource_isObservable
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_isObservable");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- return (jboolean)resource->isObservable();
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getResourceTypes
-* Signature: ()Ljava/util/List;
-*/
-JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceTypes
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getResourceTypes");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return nullptr;
- std::vector<std::string> resourceTypes = resource->getResourceTypes();
+ if (!jQueryParamsMap)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "queryParamsMap cannot be null");
+ return;
+ }
- return JniUtils::convertStrVectorToJavaStrList(env, resourceTypes);
-}
+ if (!jListener)
+ {
+ ThrowOcException(OC_STACK_INVALID_PARAM, "onPostListener cannot be null");
+ return;
+ }
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getResourceInterfaces
-* Signature: ()Ljava/util/List;
-*/
-JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getResourceInterfaces
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getResourceInterfaces");
JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return nullptr;
-
- std::vector<std::string> resourceInterfaces = resource->getResourceInterfaces();
+ if (!resource)
+ {
+ return;
+ }
- return JniUtils::convertStrVectorToJavaStrList(env, resourceInterfaces);
-}
+ OCRepresentation *representation = JniOcRepresentation::getOCRepresentationPtr(env,
+ jRepresentation);
+ if (!representation)
+ {
+ return;
+ }
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getUniqueIdentifier
-* Signature: ()Lorg/iotivity/base/OcResourceIdentifier;
-*/
-JNIEXPORT jobject JNICALL Java_org_iotivity_base_OcResource_getUniqueIdentifier
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getUniqueIdentifier");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return nullptr;
+ QueryParamsMap qpm;
+ JniUtils::convertJavaMapToQueryParamsMap(env, jQueryParamsMap, qpm);
- JniOcResourceIdentifier *jniResourceIdentifier =
- new JniOcResourceIdentifier(resource->uniqueIdentifier());
- if (!jniResourceIdentifier) return nullptr;
+ try
+ {
+ OCStackResult result = resource->publishMQTopic(
+ env,
+ *representation,
+ qpm,
+ jListener,
+ JniUtils::getQOS(env, static_cast<int>(jQoS)));
- jlong handle = reinterpret_cast<jlong>(jniResourceIdentifier);
- jobject jResourceIdentifier = env->NewObject(g_cls_OcResourceIdentifier,
- g_mid_OcResourceIdentifier_N_ctor, handle);
- if (!jResourceIdentifier)
+ if (OC_STACK_OK != result)
+ {
+ ThrowOcException(result, "OcResource_publishMQTopicImpl");
+ }
+ }
+ catch (OCException& e)
{
- delete jniResourceIdentifier;
+ LOGE("%s", e.reason().c_str());
+ ThrowOcException(e.code(), e.reason().c_str());
}
- return jResourceIdentifier;
-}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: getServerId
-* Signature: ()Ljava/lang/String;
-*/
-JNIEXPORT jstring JNICALL Java_org_iotivity_base_OcResource_getServerId
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_getServerId");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- if (!resource) return nullptr;
-
- return env->NewStringUTF(resource->sid().c_str());
+#else
+ ThrowOcException(JNI_NO_SUPPORT, "not support");
+#endif
}
-
-/*
-* Class: org_iotivity_base_OcResource
-* Method: dispose
-* Signature: ()V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcResource_dispose
-(JNIEnv *env, jobject thiz)
-{
- LOGD("OcResource_dispose");
- JniOcResource *resource = JniOcResource::getJniOcResourcePtr(env, thiz);
- delete resource;
-}
\ No newline at end of file