[jboss-svn-commits] JBL Code SVN: r21376 - in labs/jbossrules/trunk/drools-repository/src: test/java/org/drools/repository/security and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 5 21:25:42 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-08-05 21:25:42 -0400 (Tue, 05 Aug 2008)
New Revision: 21376

Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/security/PermissionManagerTest.java
Log:
list user permission types

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java	2008-08-05 23:12:28 UTC (rev 21375)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java	2008-08-06 01:25:42 UTC (rev 21376)
@@ -91,9 +91,49 @@
 		return permsNode;
 	}
 
+	/**
+	 * Returns a list of users and their permissions types for display.
+	 * The Map maps:
+	 *
+	 *  userName => [list of permission types, eg admin, package.admin etc... no IDs]
+	 *  For display purposes only.
+	 * @throws RepositoryException
+	 */
+	public Map<String, List<String>> listUsers() throws RepositoryException {
+		Map<String, List<String>> listing = new HashMap<String, List<String>>();
+		Node root = this.repository.getSession().getRootNode();
+    	Node usersNode = getNode(root, "user_info");
+    	NodeIterator users = usersNode.getNodes();
+    	while (users.hasNext()) {
+			Node userNode = (Node) users.next();
+			listing.put(userNode.getName(), listOfPermTypes(userNode));
+		}
+		return listing;
+	}
 
+	private List<String> listOfPermTypes(Node userNode) throws RepositoryException {
+		List<String> permTypes = new ArrayList<String>();
+		Node permsNode = getNode(userNode, "permissions");
+		PropertyIterator perms = permsNode.getProperties();
+		while (perms.hasNext()) {
+    		Property p = (Property) perms.next();
+    		String name = p.getName();
+    		if (!name.startsWith("jcr")) {
+	    		permTypes.add(name);
+    		}
 
+		}
+		return permTypes;
+	}
 
+	void deleteAllPermissions() throws RepositoryException {
+		Node root = this.repository.getSession().getRootNode();
+		getNode(root, "user_info").remove();
+	}
 
 
+
+
+
+
 }

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/security/PermissionManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/security/PermissionManagerTest.java	2008-08-05 23:12:28 UTC (rev 21375)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/security/PermissionManagerTest.java	2008-08-06 01:25:42 UTC (rev 21376)
@@ -59,4 +59,56 @@
 		perms_ = pm.retrieveUserPermissions("nobody");
 		assertEquals(0, perms_.size());
 	}
+
+	public void testListingUsers() throws Exception {
+
+
+		PermissionManager pm = new PermissionManager(RepositorySessionUtil.getRepository());
+		pm.deleteAllPermissions();
+
+		Map<String, List<String>> perms = new HashMap<String, List<String>>() {{
+			put("package.admin", new ArrayList<String>() {{add("1234567890");}});
+			put("package.developer", new ArrayList<String>() {{add("1"); add("2");}});
+			put("analyst", new ArrayList<String>() {{add("HR");}});
+			put("admin", new ArrayList<String>());
+		}};
+		pm.updateUserPermissions("listingUser1", perms);
+
+		perms = new HashMap<String, List<String>>() {{
+			put("admin", new ArrayList<String>());
+		}};
+		pm.updateUserPermissions("listingUser2", perms);
+		pm.updateUserPermissions("listingUser3", perms);
+
+		perms = new HashMap<String, List<String>>() {{
+			put("package.developer", new ArrayList<String>() {{add("1"); add("2");}});
+		}};
+
+		pm.updateUserPermissions("listingUser4", perms);
+		perms = new HashMap<String, List<String>>() {{
+			put("analyst", new ArrayList<String>() {{add("1"); add("2");}});
+		}};
+		pm.updateUserPermissions("listingUser5", perms);
+
+		Map<String, List<String>> result = pm.listUsers();
+		assertNotNull(result);
+		assertEquals(5, result.size());
+		assertTrue(result.containsKey("listingUser1"));
+		assertTrue(result.containsKey("listingUser2"));
+		assertTrue(result.containsKey("listingUser3"));
+		assertTrue(result.containsKey("listingUser4"));
+		assertTrue(result.containsKey("listingUser5"));
+
+		List<String> permTypes = result.get("listingUser1");
+		assertEquals(4, permTypes.size());
+		assertTrue(permTypes.contains("package.developer"));
+
+
+		permTypes = result.get("listingUser5");
+		assertEquals(1, permTypes.size());
+		assertEquals("analyst", permTypes.get(0));
+
+
+	}
+
 }




More information about the jboss-svn-commits mailing list