keycloak-aplcache

Merge pull request #3562 from ssilvert/overwrite-client-role-fails KEYCLOAK-3042:

12/2/2016 11:06:27 AM

Details

diff --git a/services/src/main/java/org/keycloak/partialimport/ClientRolesPartialImport.java b/services/src/main/java/org/keycloak/partialimport/ClientRolesPartialImport.java
index 008917d..95fa4a6 100644
--- a/services/src/main/java/org/keycloak/partialimport/ClientRolesPartialImport.java
+++ b/services/src/main/java/org/keycloak/partialimport/ClientRolesPartialImport.java
@@ -103,6 +103,11 @@ public class ClientRolesPartialImport {
             return;
         }
         RoleModel role = client.getRole(getName(roleRep));
+        if (role == null) {
+            // role might not exist if client was just created as part of the
+            // partial import
+            return;
+        }
         client.removeRole(role);
     }
 
diff --git a/themes/src/main/resources/theme/base/admin/resources/js/controllers/realm.js b/themes/src/main/resources/theme/base/admin/resources/js/controllers/realm.js
index 5e6bdba..e451339 100644
--- a/themes/src/main/resources/theme/base/admin/resources/js/controllers/realm.js
+++ b/themes/src/main/resources/theme/base/admin/resources/js/controllers/realm.js
@@ -2638,13 +2638,21 @@ module.controller('RealmImportCtrl', function($scope, realm, $route,
     $scope.itemCount = function(section) {
         if (!$scope.importing) return 0;
         if ($scope.hasRealmRoles() && (section === 'roles.realm')) return $scope.fileContent.roles.realm.length;
-        if ($scope.hasClientRoles() && (section === 'roles.client')) return Object.keys($scope.fileContent.roles.client).length;
+        if ($scope.hasClientRoles() && (section === 'roles.client')) return clientRolesCount($scope.fileContent.roles.client);
         
         if (!$scope.fileContent.hasOwnProperty(section)) return 0;
         
         return $scope.fileContent[section].length;
     }
     
+    clientRolesCount = function(clientRoles) {
+        var total = 0;
+        for (var clientName in clientRoles) {
+            total += clientRoles[clientName].length;
+        }
+        return total;
+    }
+    
     $scope.hasResources = function() {
         return ($scope.importUsers && $scope.hasArray('users')) ||
                ($scope.importGroups && $scope.hasArray('groups')) ||