Author: reto
Date: Thu Apr  1 16:43:26 2010
New Revision: 930036

URL: http://svn.apache.org/viewvc?rev=930036&view=rev
Log:
CLEREZZA-183 TcPermission: document actions, introduce constants for actions, 
avoid string operation in actionsImplies-method

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/SimpleConceptProviderManager.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/src/main/java/org/apache/clerezza/platform/scripting/scriptmanager/ScriptManager.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.manager/src/main/java/org/apache/clerezza/platform/typerendering/manager/RenderletManager.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredTripleCollection.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcPermission.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.metadata/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/  
 (props changed)

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/SimpleConceptProviderManager.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/SimpleConceptProviderManager.java?rev=930036&r1=930035&r2=930036&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/SimpleConceptProviderManager.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.concepts/org.apache.clerezza.platform.concepts.core/src/main/java/org/apache/clerezza/platform/concepts/core/SimpleConceptProviderManager.java
 Thu Apr  1 16:43:26 2010
@@ -299,7 +299,8 @@ public class SimpleConceptProviderManage
                Set<GlobalMenuItem> items = new HashSet<GlobalMenuItem>();
                try {
                        AccessController.checkPermission(
-                                       new 
TcPermission("http://tpf.localhost/content.graph";, "write"));
+                                       new 
TcPermission("http://tpf.localhost/content.graph";, 
+                                       TcPermission.READWRITE));
                } catch (AccessControlException e) {
                        return items;
                }

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/src/main/java/org/apache/clerezza/platform/scripting/scriptmanager/ScriptManager.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/src/main/java/org/apache/clerezza/platform/scripting/scriptmanager/ScriptManager.java?rev=930036&r1=930035&r2=930036&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/src/main/java/org/apache/clerezza/platform/scripting/scriptmanager/ScriptManager.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.scripting.scriptmanager/src/main/java/org/apache/clerezza/platform/scripting/scriptmanager/ScriptManager.java
 Thu Apr  1 16:43:26 2010
@@ -821,7 +821,8 @@ public class ScriptManager implements Gl
                Set<GlobalMenuItem> items = new HashSet<GlobalMenuItem>();
                try {
                        AccessController.checkPermission(
-                                       new 
TcPermission("http://tpf.localhost/content.graph";, "write"));
+                                       new 
TcPermission("http://tpf.localhost/content.graph";,
+                                       TcPermission.READWRITE));
                        AccessController.checkPermission(new 
ScriptManagerAppPermission());
                } catch (AccessControlException e) {
                        return items;

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.manager/src/main/java/org/apache/clerezza/platform/typerendering/manager/RenderletManager.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.manager/src/main/java/org/apache/clerezza/platform/typerendering/manager/RenderletManager.java?rev=930036&r1=930035&r2=930036&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.manager/src/main/java/org/apache/clerezza/platform/typerendering/manager/RenderletManager.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering.manager/src/main/java/org/apache/clerezza/platform/typerendering/manager/RenderletManager.java
 Thu Apr  1 16:43:26 2010
@@ -446,7 +446,7 @@ public class RenderletManager implements
                Set<GlobalMenuItem> items = new HashSet<GlobalMenuItem>();
                try {
                        AccessController.checkPermission(
-                                       new 
TcPermission("http://tpf.localhost/config.graph";, "write"));
+                                       new 
TcPermission("http://tpf.localhost/config.graph";, TcPermission.READWRITE));
                } catch (AccessControlException e) {
                        return items;
                }

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.typerendering/org.apache.clerezza.platform.typerendering.core/src/main/java/org/apache/clerezza/platform/typerendering/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Apr  1 16:43:26 2010
@@ -0,0 +1 @@
+.RenderletRendererFactoryImpl.java.swp

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredTripleCollection.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredTripleCollection.java?rev=930036&r1=930035&r2=930036&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredTripleCollection.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredTripleCollection.java
 Thu Apr  1 16:43:26 2010
@@ -159,14 +159,16 @@ public class SecuredTripleCollection imp
        private void checkRead() {
                SecurityManager security = System.getSecurityManager();
                if (security != null) {
-                       security.checkPermission(new TcPermission(name, 
"read"));
+                       security.checkPermission(new TcPermission(name,
+                                       TcPermission.READ));
                }
        }
 
        private void checkWrite() {
                SecurityManager security = System.getSecurityManager();
                if (security != null) {
-                       security.checkPermission(new TcPermission(name, 
"write"));
+                       security.checkPermission(new TcPermission(name, 
+                                       TcPermission.READWRITE));
                }
        }
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcPermission.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcPermission.java?rev=930036&r1=930035&r2=930036&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcPermission.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcPermission.java
 Thu Apr  1 16:43:26 2010
@@ -19,6 +19,10 @@
 package org.apache.clerezza.rdf.core.access.security;
 
 import java.security.Permission;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.regex.Pattern;
 
 /**
  * A permission to access <code>TripleCollection<code>s matching a specified 
@@ -30,13 +34,41 @@ import java.security.Permission;
  * @author reto, tsuy
  */
 public class TcPermission extends Permission {
-       private String tcNamePattern;
-       private String actions;
+       public final static String READWRITE = "readwrite";
+       public final static String READ = "read";
 
+       private String tcNamePattern;
+       /**
+        * true if readwrite granted false if only read
+        */
+       private boolean allowReadWrite = false;
+
+       final static Pattern actionPattern = Pattern.compile(",( *)");
+       /**
+        * Conststructs a TcPermission for a specified name pattern and a list 
of
+        * actions.
+        *
+        * @param tcNamePattern see class description
+        * @param actions a comma separated list of the strings "read" and 
"readwrite",
+        *        the canonical form is just "read" or "readwrite" as 
"readwrite"
+        *        implies "read".
+        */
        public TcPermission(String tcNamePattern, String actions)  {
                super(tcNamePattern);
                this.tcNamePattern = tcNamePattern;
-               this.actions = actions;
+               //check and set actions
+               final Set actionSet = new 
HashSet(Arrays.asList(actionPattern.split(actions)));
+               if (actionSet.remove(READWRITE)) {
+                       allowReadWrite = true;
+               } else {
+                       if (!actionSet.contains(READ)) {
+                               throw new IllegalArgumentException("actions 
must be either \"read\" or \"readwrite\"");
+                       }
+               }
+               actionSet.remove(READ);
+               if (actionSet.size() > 0) {
+                       throw new IllegalArgumentException("actions must only 
contain \"read\" and \"readwrite\"");
+               }
        }
 
        @Override
@@ -46,7 +78,7 @@ public class TcPermission extends Permis
                        if (!patternImplies(other.tcNamePattern)) {
                                return false;
                        }
-                       if (!actionsImplies(other.actions)) {
+                       if (!actionsImplies(other.allowReadWrite)) {
                                return false;
                        }
                        return true;
@@ -56,11 +88,11 @@ public class TcPermission extends Permis
                return false;
        }
 
-       private boolean actionsImplies(String actionsOther) {
-               if (actionsOther.equals("read")) {
+       private boolean actionsImplies(boolean readwriteOther) {
+               if (!readwriteOther) {
                        return true;
                } else {
-                       return actions.contains("write");
+                       return allowReadWrite;
                }
                
        }
@@ -90,9 +122,7 @@ public class TcPermission extends Permis
                                || 
!this.tcNamePattern.equals(other.tcNamePattern))) {
                        return false;
                }
-               if (this.actions != other.actions 
-                               && (this.actions == null
-                               || !this.actions.equals(other.actions))) {
+               if (this.allowReadWrite != other.allowReadWrite) {
                        return false;
                }
                return true;
@@ -103,6 +133,9 @@ public class TcPermission extends Permis
                int hash = 3;
                hash = 97 * hash + (this.tcNamePattern != null ?
                        this.tcNamePattern.hashCode() : 0);
+               if (allowReadWrite) {
+                       hash++;
+               }
                return hash;
        }
 
@@ -110,7 +143,7 @@ public class TcPermission extends Permis
 
        @Override
        public String getActions() {
-               return this.actions;
+               return allowReadWrite ? READWRITE : READ;
        }
 
 }

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.metadata/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Apr  1 16:43:26 2010
@@ -0,0 +1 @@
+target

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.scala/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Apr  1 16:43:26 2010
@@ -2,3 +2,4 @@ target
 .classpath
 .settings
 .project
+.pom.xml.swp


Reply via email to