Merge https://www.argeo.org/bugzilla/show_bug.cgi?id=141
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 22 Mar 2013 14:06:51 +0000 (14:06 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 22 Mar 2013 14:06:51 +0000 (14:06 +0000)
git-svn-id: https://svn.argeo.org/commons/branches/1.x@6195 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SimpleRoleRegistration.java [new file with mode: 0644]

diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SimpleRoleRegistration.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SimpleRoleRegistration.java
new file mode 100644 (file)
index 0000000..b20a842
--- /dev/null
@@ -0,0 +1,46 @@
+package org.argeo.security.core;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.argeo.security.UserAdminService;
+
+/**
+ * Register one or many roles via a user admin service. Does nothing if the role
+ * is already registered.
+ */
+public class SimpleRoleRegistration implements Runnable {
+       private String role;
+       private List<String> roles;
+       private UserAdminService userAdminService;
+
+       @Override
+       public void run() {
+               Set<String> existingRoles = userAdminService.listEditableRoles();
+               if (role != null && !existingRoles.contains(role))
+                       userAdminService.newRole(role);
+               for (String r : roles) {
+                       if (!existingRoles.contains(r))
+                               userAdminService.newRole(r);
+               }
+       }
+
+       public void register(UserAdminService userAdminService, Map<?, ?> properties) {
+               this.userAdminService = userAdminService;
+               run();
+       }
+
+       public void setRole(String role) {
+               this.role = role;
+       }
+
+       public void setRoles(List<String> roles) {
+               this.roles = roles;
+       }
+
+       public void setUserAdminService(UserAdminService userAdminService) {
+               this.userAdminService = userAdminService;
+       }
+
+}