Since the account server spec has been changed, it needs some modifications.
- modified uri "/oic/account/user" to "/oic/account/search"
- modified query form to search more than one user.
- removed searchUser() API for searching a specific user.
Change-Id: I431d6a4750d7a0772831da1865de2e8c5498ed09
Signed-off-by: Jaewook Jung <jw0213.jung@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/14545
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-by: Jee Hyeok Kim <jihyeok13.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/15347
Reviewed-by: jihwan seo <jihwan.seo@samsung.com>
Reviewed-by: Ashok Babu Channa <ashok.channa@samsung.com>
return m_sharedAccountManager->refreshAccessToken(userUuid, refreshToken, postCallback);
}
-OCStackResult JniOcAccountManager::searchUser(JNIEnv* env, const std::string& userUuid,
- jobject jListener)
-{
- JniOnGetListener *onGetListener = addOnGetListener(env, jListener);
- if (nullptr == onGetListener)
- {
- LOGE("onGetListener is null");
- return OC_STACK_ERROR;
- }
-
- GetCallback getCallback = [onGetListener](const HeaderOptions& opts,
- const OCRepresentation& rep, const int eCode)
- {
- onGetListener->onGetCallback(opts, rep, eCode);
- };
-
- return m_sharedAccountManager->searchUser(userUuid, getCallback);
-}
-
OCStackResult JniOcAccountManager::searchUser(JNIEnv* env, const QueryParamsMap& queryMap,
jobject jListener)
{
/*
* Class: org_iotivity_base_OcAccountManager
* Method: searchUser0
-* Signature: (Ljava/lang/String;Lorg/iotivity/base/OcAccountManager/OnGetListener;)V
-*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_searchUser0
- (JNIEnv *env, jobject thiz, jstring jUserUuid, jobject jListener)
-{
- LOGD("OcAccountManager_searchUser");
- VERIFY_NON_NULL_THROW_EXCEPTION(jUserUuid, "userUuid cannot be null", OC_STACK_INVALID_PARAM);
- VERIFY_NON_NULL_THROW_EXCEPTION(jListener, "onGetListener cannot be null",
- OC_STACK_INVALID_PARAM);
-
- JniOcAccountManager *accountManager = JniOcAccountManager::getJniOcAccountManagerPtr(env,
- thiz);
- if (!accountManager)
- {
- return;
- }
-
- const char *charUserUuid = env->GetStringUTFChars(jUserUuid, nullptr);
- VERIFY_NON_NULL_THROW_EXCEPTION(charUserUuid, "charUserUuid is null", JNI_EXCEPTION);
- std::string userUuid(charUserUuid);
- env->ReleaseStringUTFChars(jUserUuid, charUserUuid);
-
- try
- {
- OCStackResult result = accountManager->searchUser(env,
- userUuid,
- jListener);
- if (OC_STACK_OK != result)
- {
- ThrowOcException(result, "OcAccountManager_searchUser");
- }
- }
- catch (OCException& e)
- {
- LOGE("%s", e.reason().c_str());
- ThrowOcException(e.code(), e.reason().c_str());
- }
-}
-
-/*
-* Class: org_iotivity_base_OcAccountManager
-* Method: searchUser1
* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcAccountManager/OnGetListener;)V
*/
-JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_searchUser1
+JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_searchUser0
(JNIEnv *env, jobject thiz, jobject jQueryMap, jobject jListener)
{
LOGD("OcAccountManager_searchUser");
OCStackResult signOut(JNIEnv* env, const std::string& accessToken, jobject jListener);
OCStackResult refreshAccessToken(JNIEnv* env, const std::string& userUuid,
const std::string& refreshToken, jobject jListener);
- OCStackResult searchUser(JNIEnv* env, const std::string& userUuid, jobject jListener);
OCStackResult searchUser(JNIEnv* env, const QueryParamsMap& queryMap, jobject jListener);
OCStackResult deleteDevice(JNIEnv* env, const std::string& accessToken,
const std::string& deviceId, jobject jListener);
/*
* Class: org_iotivity_base_OcAccountManager
* Method: searchUser0
- * Signature: (Ljava/lang/String;Lorg/iotivity/base/OcAccountManager/OnGetListener;)V
- */
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_searchUser0
- (JNIEnv *, jobject, jstring, jobject);
-
- /*
- * Class: org_iotivity_base_OcAccountManager
- * Method: searchUser1
* Signature: (Ljava/util/Map;Lorg/iotivity/base/OcAccountManager/OnGetListener;)V
*/
- JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_searchUser1
+ JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_searchUser0
(JNIEnv *, jobject, jobject, jobject);
/*
/**
* Method to get information of the user to account server
*
- * @param userUuid Identifier of the user to get information.
- * @param onGetListener The event handler will be invoked with a map of attribute name and
- * values. It will also have the result from this Get operation.
- * @throws OcException if failure
- */
- public void searchUser(String userUuid,
- OnGetListener onGetListener) throws OcException {
- this.searchUser0(userUuid, onGetListener);
- }
-
- private native void searchUser0(String userUuid,
- OnGetListener onGetListener) throws OcException;
-
- /**
- * Method to get information of the user to account server
- *
* @param queryMap Map which can have the query key and value for specific users.
* account server can response information of more than one user.
* @param onGetListener The event handler will be invoked with a map of attribute name and
*/
public void searchUser(Map<String, String> queryMap,
OnGetListener onGetListener) throws OcException {
- this.searchUser1(queryMap, onGetListener);
+ this.searchUser0(queryMap, onGetListener);
}
- private native void searchUser1(Map<String, String> queryMap,
+ private native void searchUser0(Map<String, String> queryMap,
OnGetListener onGetListener) throws OcException;
/**
msg("\t\t-GroupID : " + mGroupId);
msg("\t\t InviterID : " + mGroupMasterId);
}
+
msg("searchUser");
- mAccountManager.searchUser(mGroupMasterId, onSearchUserForInvitee);
+ Map<String, String> option = new HashMap<>();
+ option.put("uid", mGroupMasterId);
+ mAccountManager.searchUser(option, onSearchUserForInvitee);
}
}
} catch (OcException e) {
case 1:
cout << "Put userUUID to search:" << endl;
cin >> cmd;
- result = accountMgr->searchUser(cmd, &ocPost);
+ query["uid"] = cmd;
+ result = accountMgr->searchUser(query, &ocPost);
break;
case 2:
#define OC_RSRVD_ACCOUNT_URI "/oic/account"
/** Account user URI.*/
-#define OC_RSRVD_ACCOUNT_USER_URI "/oic/account/user"
+#define OC_RSRVD_ACCOUNT_SEARCH_URI "/oic/account/search"
/** Account session URI.*/
#define OC_RSRVD_ACCOUNT_SESSION_URI "/oic/account/session"
/**
* Function to get information of the user to account server.
*
- * @param userUuid Identifier of the user to get information.
- * @param cloudConnectHandler Callback function that will get the result of the operation.
- *
- * @return Returns ::OC_STACK_OK if success
- */
- OCStackResult searchUser(const std::string& userUuid,
- GetCallback cloudConnectHandler);
-
- /**
- * Overload
- *
* @param queryParams Map that has a query key and value for specific users.
* Account server can response information of more than one user.
* @param cloudConnectHandler Callback function that will get the result of the operation.
const std::string& accessToken,
bool isSignIn,
PostCallback cloudConnectHandler);
-
- OCStackResult searchUser(const std::string& userUuid,
- const QueryParamsMap& queryParams,
- GetCallback cloudConnectHandler);
};
} // namespace OC
m_connType, cloudConnectHandler, m_defaultQos);
}
-OCStackResult OCAccountManager::searchUser(const std::string& userUuid,
- GetCallback cloudConnectHandler)
-{
- VERIFY_NON_EMPTY(userUuid, "userUuid cannot be empty.", OC_STACK_INVALID_PARAM);
-
- return result_guard(searchUser(userUuid, QueryParamsMap(), cloudConnectHandler));
-}
-
OCStackResult OCAccountManager::searchUser(const QueryParamsMap& queryParams,
GetCallback cloudConnectHandler)
{
VERIFY_NON_EMPTY(queryParams, "queryParams cannot be empty.", OC_STACK_INVALID_PARAM);
- return result_guard(searchUser("", queryParams, cloudConnectHandler));
-}
-
-OCStackResult OCAccountManager::searchUser(const std::string& userUuid,
- const QueryParamsMap& queryParams,
- GetCallback cloudConnectHandler)
-{
- std::string uri = m_host + OC_RSRVD_ACCOUNT_USER_URI;
-
- QueryParamsMap fullQuery = {};
-
- if (!userUuid.empty())
- {
- fullQuery.insert(std::make_pair(OC_RSRVD_USER_UUID, userUuid));
- }
-
- if (!queryParams.empty())
- {
- std::string searchQuery;
- for (auto iter : queryParams)
- {
- searchQuery.append(iter.first + ":" + iter.second + ",");
- }
- searchQuery.resize(searchQuery.size() - 1);
- fullQuery.insert(std::make_pair(OC_RSRVD_SEARCH, searchQuery));
- }
+ std::string uri = m_host + OC_RSRVD_ACCOUNT_SEARCH_URI;
return checked_guard(m_clientWrapper.lock(), &IClientWrapper::GetResourceRepresentation,
- OCDevAddr(), uri, fullQuery, HeaderOptions(),
+ OCDevAddr(), uri, queryParams, HeaderOptions(),
m_connType, cloudConnectHandler, m_defaultQos);
}
}
// SearchUser Test
- TEST(SearchUserTest, DISABLED_SearchUserWithUserUuidForValid)
- {
- std::string host("coap://192.168.1.2:5000");
- std::string userId("AnyUserId");
- OCAccountManager::Ptr accountManager = ConstructAccountManagerObject(host);
- EXPECT_TRUE(NULL != accountManager);
- EXPECT_EQ(OC_STACK_OK, accountManager->searchUser(userId, &accountHandler));
- }
-
- TEST(SearchUserTest, DISABLED_SearchUserWithQueryForValid)
+ TEST(SearchUserTest, DISABLED_SearchUserForValid)
{
std::string host("coap://192.168.1.2:5000");
std::string key("AnyKey");
TEST(SearchUserTest, SearchUserWithNullCallback)
{
std::string host("coap://192.168.1.2:5000");
- std::string userId("AnyUserId");
+ std::string key("AnyKey");
+ std::string value("AnyValue");
+ QueryParamsMap query = {};
+ query.insert(std::pair<std::string, std::string>(key, value));
OCAccountManager::Ptr accountManager = ConstructAccountManagerObject(host);
EXPECT_TRUE(NULL != accountManager);
- EXPECT_ANY_THROW(accountManager->searchUser(userId, nullptr));
+ EXPECT_ANY_THROW(accountManager->searchUser(query, nullptr));
}
// DeleteDevice Test