[jboss-svn-commits] JBL Code SVN: r23338 - labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 7 01:02:04 EDT 2008
Author: michael.neale at jboss.com
Date: 2008-10-07 01:02:02 -0400 (Tue, 07 Oct 2008)
New Revision: 23338
Modified:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java
Log:
GUVNOR-24 Storing permissions in main content tree now
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-10-07 05:00:46 UTC (rev 23337)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java 2008-10-07 05:02:02 UTC (rev 23338)
@@ -5,11 +5,13 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
+import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
@@ -41,11 +43,11 @@
if (!isValideUserName(userName)) {
return;
}
-
+
try {
Node permsNode = getUserPermissionNode(userName);
permsNode.remove(); //remove this so we get a fresh set
- permsNode = getUserPermissionNode(userName);
+ permsNode = getUserPermissionNode(userName).addNode("jcr:content", "nt:unstructured");
for (Iterator<String> iterator = perms.keySet().iterator(); iterator.hasNext();) {
String perm = iterator.next();
List<String> targets = perms.get(perm);
@@ -60,8 +62,8 @@
private Node getUserPermissionNode(String userName)
throws RepositoryException {
- Node root = this.repository.getSession().getRootNode();
- Node permsNode = getNode(getNode(getNode(root, "user_info"), userName), "permissions");
+ Node root = this.repository.getSession().getRootNode().getNode(RulesRepository.RULES_REPOSITORY_NAME);
+ Node permsNode = getNode(getNode(getNode(root, "user_info", "nt:folder"), userName, "nt:folder"), "permissions", "nt:file");
return permsNode;
}
@@ -72,24 +74,35 @@
*/
public Map<String, List<String>> retrieveUserPermissions(String userName) {
try {
- Map<String, List<String>> result = new HashMap<String, List<String>>(10);
+ Map<String, List<String>> result = new HashMap<String, List<String>>(10);
if (!isValideUserName(userName)) {
return result;
}
-
- Node permsNode = getUserPermissionNode(userName);
+
+ if (!getUserPermissionNode(userName).hasNode("jcr:content")) {
+ return result;
+ }
+ Node permsNode = getUserPermissionNode(userName).getNode("jcr:content");
PropertyIterator it = permsNode.getProperties();
-
+
while (it.hasNext()) {
Property p = (Property) it.next();
String name = p.getName();
if (!name.startsWith("jcr")) {
- Value[] vs = p.getValues();
- List<String> perms = new ArrayList<String>();
- for (int i = 0; i < vs.length; i++) {
- perms.add(vs[i].getString());
- }
- result.put(name, perms);
+
+ if (p.getDefinition().isMultiple()) {
+ Value[] vs = p.getValues();
+ List<String> perms = new ArrayList<String>();
+ for (int i = 0; i < vs.length; i++) {
+ perms.add(vs[i].getString());
+ }
+ result.put(name, perms);
+ } else {
+ Value v = p.getValue();
+ List<String> perms = new ArrayList<String>(1);
+ perms.add(v.getString());
+ result.put(name, perms);
+ }
}
}
return result;
@@ -101,10 +114,10 @@
/**
* Gets or creates a node.
*/
- private Node getNode(Node node, String name) throws RepositoryException {
+ private Node getNode(Node node, String name, String nodeType) throws RepositoryException {
Node permsNode;
if (!node.hasNode(name)) {
- permsNode = node.addNode(name);
+ permsNode = node.addNode(name, nodeType);
} else {
permsNode = node.getNode(name);
}
@@ -122,8 +135,8 @@
public Map<String, List<String>> listUsers() {
try {
Map<String, List<String>> listing = new HashMap<String, List<String>>();
- Node root = this.repository.getSession().getRootNode();
- Node usersNode = getNode(root, "user_info");
+ Node root = this.repository.getSession().getRootNode().getNode(RulesRepository.RULES_REPOSITORY_NAME);
+ Node usersNode = getNode(root, "user_info", "nt:folder");
NodeIterator users = usersNode.getNodes();
while (users.hasNext()) {
Node userNode = (Node) users.next();
@@ -137,8 +150,9 @@
private List<String> listOfPermTypes(Node userNode) throws RepositoryException {
List<String> permTypes = new ArrayList<String>();
- Node permsNode = getNode(userNode, "permissions");
- PropertyIterator perms = permsNode.getProperties();
+ Node permsNode = getNode(userNode, "permissions", "nt:file");
+ Node content = getNode(permsNode, "jcr:content", "nt:unstructured");
+ PropertyIterator perms = content.getProperties();
while (perms.hasNext()) {
Property p = (Property) perms.next();
String name = p.getName();
@@ -151,15 +165,15 @@
}
void deleteAllPermissions() throws RepositoryException {
- Node root = this.repository.getSession().getRootNode();
- getNode(root, "user_info").remove();
+ Node root = this.repository.getSession().getRootNode().getNode(RulesRepository.RULES_REPOSITORY_NAME);
+ getNode(root, "user_info", "nt:folder").remove();
}
public void removeUserPermissions(String userName) {
if (!isValideUserName(userName)) {
return;
}
-
+
try {
Node permsNode = getUserPermissionNode(userName);
permsNode.getParent().remove(); //remove this so we get a fresh set
@@ -168,7 +182,7 @@
}
}
-
+
private boolean isValideUserName(String userName) {
if("".equals(userName.trim()) || userName.trim().length() == 0) {
return false;
More information about the jboss-svn-commits
mailing list