Library updated with final names (project and packages)
[pub/Android/ownCloud.git] / src / com / owncloud / android / authentication / AuthenticatorActivity.java
index c07b002..3a11ea6 100644 (file)
@@ -18,8 +18,6 @@
 \r
 package com.owncloud.android.authentication;\r
 \r
-import java.util.concurrent.ExecutionException;\r
-\r
 import android.accounts.Account;\r
 import android.accounts.AccountManager;\r
 import android.app.AlertDialog;\r
@@ -31,7 +29,6 @@ import android.content.SharedPreferences;
 import android.graphics.Rect;\r
 import android.graphics.drawable.Drawable;\r
 import android.net.Uri;\r
-import android.os.AsyncTask;\r
 import android.os.Bundle;\r
 import android.os.Handler;\r
 import android.preference.PreferenceManager;\r
@@ -55,24 +52,24 @@ import android.widget.TextView.OnEditorActionListener;
 import com.actionbarsherlock.app.SherlockDialogFragment;\r
 import com.owncloud.android.MainApp;\r
 import com.owncloud.android.R;\r
-import com.owncloud.android.oc_framework.accounts.AccountTypeUtils;\r
-import com.owncloud.android.oc_framework.accounts.OwnCloudAccount;\r
-import com.owncloud.android.oc_framework.accounts.SsoWebViewClient.SsoWebViewClientListener;\r
-import com.owncloud.android.oc_framework.network.webdav.OwnCloudClientFactory;\r
-import com.owncloud.android.oc_framework.network.webdav.WebdavClient;\r
+import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener;\r
+import com.owncloud.android.lib.accounts.AccountTypeUtils;\r
+import com.owncloud.android.lib.accounts.OwnCloudAccount;\r
+import com.owncloud.android.lib.network.OwnCloudClientFactory;\r
+import com.owncloud.android.lib.network.OwnCloudClient;\r
 import com.owncloud.android.operations.OAuth2GetAccessToken;\r
-import com.owncloud.android.oc_framework.operations.OnRemoteOperationListener;\r
+import com.owncloud.android.lib.operations.common.OnRemoteOperationListener;\r
 import com.owncloud.android.operations.OwnCloudServerCheckOperation;\r
-import com.owncloud.android.oc_framework.operations.RemoteOperation;\r
-import com.owncloud.android.oc_framework.operations.RemoteOperationResult;\r
-import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode;\r
-import com.owncloud.android.oc_framework.operations.remote.ExistenceCheckRemoteOperation;\r
-import com.owncloud.android.oc_framework.operations.remote.GetUserNameRemoteOperation;\r
+import com.owncloud.android.lib.operations.common.RemoteOperation;\r
+import com.owncloud.android.lib.operations.common.RemoteOperationResult;\r
+import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;\r
+import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation;\r
+import com.owncloud.android.lib.operations.remote.GetUserNameRemoteOperation;\r
 import com.owncloud.android.ui.dialog.SamlWebViewDialog;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
 import com.owncloud.android.utils.Log_OC;\r
-import com.owncloud.android.oc_framework.utils.OwnCloudVersion;\r
+import com.owncloud.android.lib.utils.OwnCloudVersion;\r
 \r
 /**\r
  * This Activity is used to add an ownCloud account to the App\r
@@ -527,8 +524,8 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
                 getString(R.string.oauth2_redirect_uri),       \r
                 getString(R.string.oauth2_grant_type),\r
                 queryParameters);\r
-        //WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(getString(R.string.oauth2_url_endpoint_access)), getApplicationContext());\r
-        WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mOAuthTokenEndpointText.getText().toString().trim()), getApplicationContext(), true);\r
+        //OwnCloudClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(getString(R.string.oauth2_url_endpoint_access)), getApplicationContext());\r
+        OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mOAuthTokenEndpointText.getText().toString().trim()), getApplicationContext(), true);\r
         operation.execute(client, this, mHandler);\r
     }\r
 \r
@@ -592,7 +589,7 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
             mServerStatusIcon = R.drawable.progress_small;\r
             showServerStatus();\r
             mOcServerChkOperation = new  OwnCloudServerCheckOperation(uri, this);\r
-            WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(uri), this, true);\r
+            OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(uri), this, true);\r
             mOperationThread = mOcServerChkOperation.execute(client, this, mHandler);\r
         } else {\r
             mServerStatusText = 0;\r
@@ -719,7 +716,7 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
 \r
         /// test credentials accessing the root folder\r
         mAuthCheckOperation = new  ExistenceCheckRemoteOperation("", this, false);\r
-        WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);\r
+        OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);\r
         client.setBasicCredentials(username, password);\r
         mOperationThread = mAuthCheckOperation.execute(client, this, mHandler);\r
     }\r
@@ -768,7 +765,7 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
 \r
         /// test credentials accessing the root folder\r
         mAuthCheckOperation = new  ExistenceCheckRemoteOperation("", this, false);\r
-        WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, false);\r
+        OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, false);\r
         mOperationThread = mAuthCheckOperation.execute(client, this, mHandler);\r
       \r
     }\r
@@ -794,10 +791,40 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
             } else {\r
                 onAuthorizationCheckFinish((ExistenceCheckRemoteOperation)operation, result);\r
             }\r
+        } else if (operation instanceof GetUserNameRemoteOperation) {\r
+            onGetUserNameFinish((GetUserNameRemoteOperation) operation, result);\r
+             \r
         }\r
+        \r
     }\r
 \r
-\r
+    private void onGetUserNameFinish(GetUserNameRemoteOperation operation, RemoteOperationResult result) {\r
+        if (result.isSuccess()) {\r
+            boolean success = false;\r
+            String username = operation.getUserName();\r
+            \r
+            if ( mAction == ACTION_CREATE) {\r
+                mUsernameInput.setText(username);\r
+                success = createAccount();\r
+            } else {\r
+                \r
+                if (!mUsernameInput.getText().toString().equals(username)) {\r
+                    // fail - not a new account, but an existing one; disallow\r
+                    result = new RemoteOperationResult(ResultCode.ACCOUNT_NOT_THE_SAME); \r
+                    updateAuthStatusIconAndText(result);\r
+                    showAuthStatus();\r
+                    Log_OC.d(TAG, result.getLogMessage());\r
+                } else {\r
+                  updateToken();\r
+                  success = true;\r
+                }\r
+            }\r
+            \r
+            if (success)\r
+                finish();\r
+        }\r
+        \r
+    }\r
 \r
     private void onSamlBasedFederatedSingleSignOnAuthorizationStart(RemoteOperation operation, RemoteOperationResult result) {\r
         try {\r
@@ -1088,7 +1115,7 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
             mAuthToken = ((OAuth2GetAccessToken)operation).getResultTokenMap().get(OAuth2Constants.KEY_ACCESS_TOKEN);\r
             Log_OC.d(TAG, "Got ACCESS TOKEN: " + mAuthToken);\r
             mAuthCheckOperation = new ExistenceCheckRemoteOperation("", this, false);\r
-            WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);\r
+            OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl + webdav_path), this, true);\r
             client.setBearerCredentials(mAuthToken);\r
             mAuthCheckOperation.execute(client, this, mHandler);\r
 \r
@@ -1123,7 +1150,8 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
                 success = createAccount();\r
 \r
             } else {\r
-                success = updateToken();\r
+                updateToken();\r
+                success = true;\r
             }\r
 \r
             if (success) {\r
@@ -1169,7 +1197,7 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
      * Sets the proper response to get that the Account Authenticator that started this activity saves \r
      * a new authorization token for mAccount.\r
      */\r
-    private boolean updateToken() {\r
+    private void updateToken() {\r
         Bundle response = new Bundle();\r
         response.putString(AccountManager.KEY_ACCOUNT_NAME, mAccount.name);\r
         response.putString(AccountManager.KEY_ACCOUNT_TYPE, mAccount.type);\r
@@ -1181,20 +1209,6 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
             \r
         } else if (AccountTypeUtils.getAuthTokenTypeSamlSessionCookie(MainApp.getAccountType()).equals(mAuthTokenType)) {\r
             \r
-            String username= getUserNameForSaml();\r
-            if (username == null)\r
-                return false;\r
-            \r
-            if (!mUsernameInput.getText().toString().equals(username)) {\r
-                // fail - not a new account, but an existing one; disallow\r
-                RemoteOperationResult result = new RemoteOperationResult(ResultCode.ACCOUNT_NOT_THE_SAME); \r
-                updateAuthStatusIconAndText(result);\r
-                showAuthStatus();\r
-                Log_OC.d(TAG, result.getLogMessage());\r
-                \r
-                return false;\r
-            }\r
-            \r
             response.putString(AccountManager.KEY_AUTHTOKEN, mAuthToken);\r
             // the next line is necessary; by now, notifications are calling directly to the AuthenticatorActivity to update, without AccountManager intervention\r
             mAccountMgr.setAuthToken(mAccount, mAuthTokenType, mAuthToken);\r
@@ -1205,7 +1219,6 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
         }\r
         setAccountAuthenticatorResult(response);\r
         \r
-        return true;\r
     }\r
 \r
 \r
@@ -1223,12 +1236,7 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
 \r
         Uri uri = Uri.parse(mHostBaseUrl);\r
         String username = mUsernameInput.getText().toString().trim();\r
-        if (isSaml) {\r
-            username = getUserNameForSaml();\r
-            if (username == null)\r
-                return false;\r
-\r
-        } else if (isOAuth) {\r
+        if (isOAuth) {\r
             username = "OAuth_user" + (new java.util.Random(System.currentTimeMillis())).nextLong();\r
         }            \r
         String accountName = username + "@" + uri.getHost();\r
@@ -1588,16 +1596,11 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
         \r
         if (sessionCookie != null && sessionCookie.length() > 0) {\r
             mAuthToken = sessionCookie;\r
-            boolean success = false;\r
-            if (mAction == ACTION_CREATE) {\r
-                success = createAccount();\r
-        \r
-            } else {\r
-                success = updateToken();\r
-            }\r
-            if (success) {\r
-                finish();\r
-            }\r
+\r
+            GetUserNameRemoteOperation getUserOperation = new GetUserNameRemoteOperation();            \r
+            OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl), getApplicationContext(), true);\r
+            client.setSsoSessionCookie(mAuthToken);\r
+            getUserOperation.execute(client, this, mHandler);\r
         }\r
 \r
             \r
@@ -1648,41 +1651,4 @@ implements  OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
         return super.onTouchEvent(event);\r
     }\r
     \r
-    \r
-    /**\r
-     * Asynchronous task to get the SAML User name from OCS-API\r
-     *\r
-     */\r
-    private class GetUserNameTask extends AsyncTask<Void, Void, String>{\r
-\r
-        @Override\r
-        protected String doInBackground(Void... params) {\r
-            \r
-            GetUserNameRemoteOperation getUserOperation = new GetUserNameRemoteOperation(mHostBaseUrl, mAuthToken);\r
-            WebdavClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl), getApplicationContext(), true);\r
-            RemoteOperationResult result = getUserOperation.execute(client);\r
-          \r
-            return result.getUserName();\r
-        }\r
-        \r
-    }\r
-\r
-    /**\r
-     * Get the user name form OCS-API\r
-     * @return username\r
-     */\r
-    private String getUserNameForSaml(){\r
-\r
-        GetUserNameTask getUserTask = new GetUserNameTask();\r
-        String username = null;\r
-        try {\r
-            username = getUserTask.execute().get();\r
-        } catch (InterruptedException e) {\r
-            e.printStackTrace();\r
-        } catch (ExecutionException e) {\r
-            e.printStackTrace();\r
-        }\r
-\r
-        return username;\r
-    }\r
 }\r