modified searchUser() API on OCAccountManager
authorJaewook Jung <jw0213.jung@samsung.com>
Mon, 21 Nov 2016 05:31:17 +0000 (14:31 +0900)
committerJee Hyeok Kim <jihyeok13.kim@samsung.com>
Tue, 22 Nov 2016 06:59:37 +0000 (06:59 +0000)
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>
android/android_api/base/jni/JniOcAccountManager.cpp
android/android_api/base/jni/JniOcAccountManager.h
android/android_api/base/src/main/java/org/iotivity/base/OcAccountManager.java
android/examples/simplebase/src/main/java/org/iotivity/base/examples/CloudFragment.java
cloud/samples/client/group_invite/group_invite.cpp
resource/csdk/stack/include/octypes.h
resource/include/OCAccountManager.h
resource/src/OCAccountManager.cpp
resource/unittests/OCAccountManagerTest.cpp

index 677e6d0..2d7e861 100644 (file)
@@ -221,25 +221,6 @@ OCStackResult JniOcAccountManager::refreshAccessToken(JNIEnv* env, const std::st
     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)
 {
@@ -834,51 +815,9 @@ JNIEXPORT void JNICALL Java_org_iotivity_base_OcAccountManager_refreshAccessToke
 /*
 * 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");
index 8aa9a21..9eb3fee 100644 (file)
@@ -53,7 +53,6 @@ public:
     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);
@@ -163,17 +162,9 @@ extern "C" {
     /*
     * 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);
 
     /*
index 6397a72..3c79bb3 100644 (file)
@@ -152,22 +152,6 @@ public final class OcAccountManager {
     /**
      * 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
@@ -176,10 +160,10 @@ public final class OcAccountManager {
      */
     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;
 
     /**
index ba178a1..99c29d5 100644 (file)
@@ -480,8 +480,11 @@ public class CloudFragment extends Fragment implements
                                     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) {
index a05a4c6..db3de19 100644 (file)
@@ -250,7 +250,8 @@ int main(int argc, char *argv[])
             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:
index 3505a72..8496224 100644 (file)
@@ -371,7 +371,7 @@ extern "C" {
 #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"
index c1fb10c..11fa50b 100644 (file)
@@ -127,17 +127,6 @@ namespace OC
         /**
          * 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.
@@ -360,10 +349,6 @@ namespace OC
                                 const std::string& accessToken,
                                 bool isSignIn,
                                 PostCallback cloudConnectHandler);
-
-        OCStackResult searchUser(const std::string& userUuid,
-                                 const QueryParamsMap& queryParams,
-                                 GetCallback cloudConnectHandler);
     };
 } // namespace OC
 
index 5417494..5264768 100644 (file)
@@ -181,48 +181,15 @@ OCStackResult OCAccountManager::refreshAccessToken(const std::string& userUuid,
                          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);
 }
 
index aa27b08..38a079e 100644 (file)
@@ -170,16 +170,7 @@ namespace OCAccountManagerTest
     }
 
     // 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");
@@ -194,10 +185,13 @@ namespace OCAccountManagerTest
     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