Author: mir
Date: Tue Oct 12 08:34:44 2010
New Revision: 1021671

URL: http://svn.apache.org/viewvc?rev=1021671&view=rev
Log:
CLEREZZA-316: now returns a read-only-mgraph if write right cannot be granted

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredMGraph.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredTripleCollection.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredMGraph.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/SecuredMGraph.java?rev=1021671&r1=1021670&r2=1021671&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredMGraph.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/SecuredMGraph.java
 Tue Oct 12 08:34:44 2010
@@ -18,11 +18,13 @@
  */
 package org.apache.clerezza.rdf.core.access;
 
+import java.security.AccessControlException;
 import java.util.concurrent.locks.ReadWriteLock;
 import org.apache.clerezza.rdf.core.Graph;
 import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.core.access.security.TcAccessController;
 import org.apache.clerezza.rdf.core.impl.SimpleGraph;
+import org.apache.clerezza.rdf.core.impl.WriteBlockedMGraph;
 
 /**
  * A SecuredMGraph is a LockableMGraph that wraps a LockableMGraph checking 
each
@@ -52,14 +54,23 @@ public class SecuredMGraph extends Secur
        }
 
        /**
-        * Returns the wrapped LockableMGraph if the caller has all access 
rights,
-        * otherwise an AccessControlException is thrown.
+        * Returns the wrapped LockableMGraph if the caller has all access 
rights.
+        * If the caller has only the read access right, then a write-blocked
+        * LockableMGraph is returned. If the caller has neither the read nor 
the write
+        * access right then an AccessControlException is thrown.
         *
-        * @return the wrapped LockableMGraph.
+        * @return the wrapped LockableMGraph or a write-block LockableMGraph 
depending
+        *              on the access rights of the caller.
         */
        public LockableMGraph getUnsecuredMGraph() {
-               checkWrite();
-               return wrapped;
+               try {
+                       checkWrite();
+                       return wrapped;
+               } catch (AccessControlException ex) {
+                       checkRead();
+                       return new WriteBlockedMGraph(wrapped);
+               }
+               
        }
 
 }

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=1021671&r1=1021670&r2=1021671&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
 Tue Oct 12 08:34:44 2010
@@ -162,7 +162,7 @@ public class SecuredTripleCollection imp
                }
        }
 
-       private void checkRead() {
+       void checkRead() {
                tcAccessController.checkReadPermission(name);
        }
 


Reply via email to