Author: reto
Date: Sat Jul 17 12:04:33 2010
New Revision: 965059

URL: http://svn.apache.org/viewvc?rev=965059&view=rev
Log:
CLEREZZA-253: merged into trunk

Added:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcAccessController.java
      - copied unchanged from r964941, 
incubator/clerezza/issues/CLEREZZA-253/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/security/TcAccessController.java
Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/
   (props changed)
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/pom.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/GraphServiceFactory.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/MGraphServiceFactory.java
    
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
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/access/SecurityTest.java

Propchange: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Jul 17 12:04:33 2010
@@ -1,4 +1,5 @@
 
/incubator/clerezza/issues/CLEREZZA-15/org.apache.clerezza.rdf.core:890278-890753
+/incubator/clerezza/issues/CLEREZZA-253/org.apache.clerezza.rdf.core:960983-964941
 
/incubator/clerezza/issues/CLEREZZA-33/org.apache.clerezza.rdf.core:890770-890809
 
/incubator/clerezza/issues/CLEREZZA-35/org.apache.clerezza.rdf.core:890756-891714
 
/incubator/clerezza/issues/CLEREZZA-67/org.apache.clerezza.rdf.core:897463-901252

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/pom.xml?rev=965059&r1=965058&r2=965059&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/pom.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/pom.xml
 Sat Jul 17 12:04:33 2010
@@ -25,6 +25,10 @@
                        
<artifactId>org.apache.felix.scr.annotations</artifactId>
                </dependency>
                <dependency>
+                       <groupId>org.apache.clerezza</groupId>
+                       <artifactId>org.apache.clerezza.utils</artifactId>
+               </dependency>
+               <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <scope>test</scope>

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/GraphServiceFactory.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/GraphServiceFactory.java?rev=965059&r1=965058&r2=965059&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/GraphServiceFactory.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/GraphServiceFactory.java
 Sat Jul 17 12:04:33 2010
@@ -23,6 +23,7 @@ import org.osgi.framework.ServiceFactory
 import org.osgi.framework.ServiceRegistration;
 import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.security.TcAccessController;
 import org.apache.clerezza.rdf.core.impl.SimpleGraph;
 
 /**
@@ -33,18 +34,22 @@ import org.apache.clerezza.rdf.core.impl
  */
 public class GraphServiceFactory implements ServiceFactory {
        
-       private TcManager tcManager;
-       private UriRef name;
+       private final TcManager tcManager;
+       private final UriRef name;
+       private final TcAccessController tcAccessController;
 
-       GraphServiceFactory(TcManager tcManager, UriRef name) {
+       GraphServiceFactory(TcManager tcManager, UriRef name,
+                       TcAccessController tcAccessController) {
                this.tcManager = tcManager;
                this.name = name;
+               this.tcAccessController = tcAccessController;
        }
 
        @Override
        public Object getService(Bundle arg0, ServiceRegistration arg1) {
                TripleCollection tc = 
-                               new 
SecuredTripleCollection(tcManager.getGraph(name), name);
+                               new 
SecuredTripleCollection(tcManager.getGraph(name), name,
+                               tcAccessController);
                return new SimpleGraph(tc);
        }
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/MGraphServiceFactory.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/MGraphServiceFactory.java?rev=965059&r1=965058&r2=965059&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/MGraphServiceFactory.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/MGraphServiceFactory.java
 Sat Jul 17 12:04:33 2010
@@ -22,6 +22,7 @@ import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceFactory;
 import org.osgi.framework.ServiceRegistration;
 import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.security.TcAccessController;
 
 /**
  * @see <a 
href="http://www.osgi.org/javadoc/r4v41/org/osgi/framework/ServiceFactory.html";>
@@ -33,15 +34,18 @@ public class MGraphServiceFactory implem
        
        private TcManager tcManager;
        private UriRef name;
+       private final TcAccessController tcAccessController;
 
-       MGraphServiceFactory(TcManager tcManager, UriRef name) {
+       MGraphServiceFactory(TcManager tcManager, UriRef name,
+                       TcAccessController tcAccessController) {
                this.tcManager = tcManager;
                this.name = name;
+               this.tcAccessController = tcAccessController;
        }
 
        @Override
        public Object getService(Bundle arg0, ServiceRegistration arg1) {
-               return new SecuredMGraph(tcManager.getMGraph(name), name);
+               return new SecuredMGraph(tcManager.getMGraph(name), name, 
tcAccessController);
        }
 
        @Override

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=965059&r1=965058&r2=965059&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
 Sat Jul 17 12:04:33 2010
@@ -21,6 +21,7 @@ package org.apache.clerezza.rdf.core.acc
 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;
 
 /**
@@ -34,8 +35,9 @@ public class SecuredMGraph extends Secur
 
        private LockableMGraph wrapped;
 
-       public SecuredMGraph(LockableMGraph wrapped, UriRef name) {
-               super(wrapped, name);
+       public SecuredMGraph(LockableMGraph wrapped, UriRef name,
+                       TcAccessController tcAccessController) {
+               super(wrapped, name,  tcAccessController);
                this.wrapped = 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=965059&r1=965058&r2=965059&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
 Sat Jul 17 12:04:33 2010
@@ -25,6 +25,7 @@ import org.apache.clerezza.rdf.core.Reso
 import org.apache.clerezza.rdf.core.Triple;
 import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.security.TcAccessController;
 import org.apache.clerezza.rdf.core.access.security.TcPermission;
 import org.apache.clerezza.rdf.core.event.FilterTriple;
 import org.apache.clerezza.rdf.core.event.GraphListener;
@@ -38,12 +39,15 @@ import org.apache.clerezza.rdf.core.even
  */
 public class SecuredTripleCollection implements TripleCollection {
 
-       private TripleCollection wrapped;
-       private String name;
+       private final TripleCollection wrapped;
+       private final UriRef name;
+       private final TcAccessController tcAccessController;
 
-       public SecuredTripleCollection(TripleCollection wrapped, UriRef name) {
+       public SecuredTripleCollection(TripleCollection wrapped, UriRef name,
+                       TcAccessController tcAccessController) {
                this.wrapped = wrapped;
-               this.name = name.getUnicodeString();
+               this.name = name;
+               this.tcAccessController = tcAccessController;
        }
 
        @Override
@@ -160,19 +164,11 @@ public class SecuredTripleCollection imp
        }
 
        private void checkRead() {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       security.checkPermission(new TcPermission(name,
-                                       TcPermission.READ));
-               }
+               tcAccessController.checkReadPermission(name);
        }
 
        private void checkWrite() {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       security.checkPermission(new TcPermission(name, 
-                                       TcPermission.READWRITE));
-               }
+               tcAccessController.checkReadWritePermission(name);
        }
 
        @Override

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.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/TcManager.java?rev=965059&r1=965058&r2=965059&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
 Sat Jul 17 12:04:33 2010
@@ -18,7 +18,6 @@
  */
 package org.apache.clerezza.rdf.core.access;
 
-import org.apache.clerezza.rdf.core.access.security.TcPermission;
 import org.apache.clerezza.rdf.core.impl.WriteBlockedMGraph;
 import org.apache.clerezza.rdf.core.impl.WriteBlockedTripleCollection;
 
@@ -43,6 +42,8 @@ import org.apache.clerezza.rdf.core.Grap
 import org.apache.clerezza.rdf.core.MGraph;
 import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.security.TcAccessController;
+import org.apache.clerezza.rdf.core.access.security.TcAccessController;
 import org.apache.clerezza.rdf.core.sparql.query.AskQuery;
 import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
 import org.apache.clerezza.rdf.core.sparql.query.DescribeQuery;
@@ -51,6 +52,11 @@ import org.apache.clerezza.rdf.core.spar
 import org.apache.clerezza.rdf.core.sparql.QueryEngine;
 import org.apache.clerezza.rdf.core.sparql.ResultSet;
 import org.apache.clerezza.rdf.core.sparql.query.SelectQuery;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.apache.felix.scr.annotations.Service;
 
 /**
  * This class implements <code>TcManager</code>, delegating the actual
@@ -74,19 +80,20 @@ import org.apache.clerezza.rdf.core.spar
  *
  * @author reto, mir, hasan
  * 
- * @scr.component
- * @scr.service interface="org.apache.clerezza.rdf.core.access.TcManager"
- * @scr.reference name="weightedTcProvider" cardinality="1..n"
- *                policy="dynamic"
- *                
interface="org.apache.clerezza.rdf.core.access.WeightedTcProvider"
- * 
  */
+...@component
+...@service(TcManager.class)
+...@reference(name="weightedTcProvider", policy=ReferencePolicy.DYNAMIC,
+               referenceInterface=WeightedTcProvider.class,
+               cardinality=ReferenceCardinality.MANDATORY_MULTIPLE)
 public class TcManager implements TcProvider {
 
        private SortedSet<WeightedTcProvider> providerList = new 
TreeSet<WeightedTcProvider>(
                        new WeightedProviderComparator());
        private static volatile TcManager instance;
 
+       private TcAccessController tcAccessController = new 
TcAccessController(this);
+
        /**
         * Mapping to LockableMGraph's and ServiceRegistration using their 
URI's as key.
         * Makes sure that per URI only one instance of the LockableMGraph is 
used,
@@ -271,10 +278,10 @@ public class TcManager implements TcProv
                                MGraph.class.getName(),
                                LockableMGraph.class.getName()
                        };
-                       service = new MGraphServiceFactory(this, name);
+                       service = new MGraphServiceFactory(this, name, 
tcAccessController);
                } else if (triples instanceof Graph) {
                        interfaceNames = new String[]{Graph.class.getName()};
-                       service = new GraphServiceFactory(this, name);
+                       service = new GraphServiceFactory(this, name, 
tcAccessController);
                } else {
                        return null;
                }
@@ -326,11 +333,7 @@ public class TcManager implements TcProv
 
        @Override
        public Graph getGraph(UriRef name) throws NoSuchEntityException {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       security.checkPermission(new 
TcPermission(name.getUnicodeString(),
-                                       "read"));
-               }
+               tcAccessController.checkReadPermission(name);
                for (TcProvider provider : providerList) {
                        try {
                                return provider.getGraph(name);
@@ -345,16 +348,11 @@ public class TcManager implements TcProv
 
        @Override
        public LockableMGraph getMGraph(UriRef name) {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       try {
-                               security.checkPermission(new TcPermission(name
-                                               .getUnicodeString(), 
"readwrite"));
-                       } catch (AccessControlException e) {
-                               security.checkPermission(new TcPermission(name
-                                               .getUnicodeString(), "read"));
-                               return new 
WriteBlockedMGraph(getUnsecuredMGraph(name));
-                       }
+               try {
+                       tcAccessController.checkReadWritePermission(name);
+               } catch (AccessControlException e) {
+                       tcAccessController.checkReadPermission(name);
+                       return new WriteBlockedMGraph(getUnsecuredMGraph(name));
                }
                return getUnsecuredMGraph(name);
        }
@@ -412,17 +410,12 @@ public class TcManager implements TcProv
 
        @Override
        public TripleCollection getTriples(UriRef name) {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       try {
-                               security.checkPermission(new TcPermission(name
-                                               .getUnicodeString(), 
"readwrite"));
-                       } catch (AccessControlException e) {
-                               security.checkPermission(new TcPermission(name
-                                               .getUnicodeString(), "read"));
-                               return new WriteBlockedTripleCollection(
-                                               getUnsecuredTriples(name));
-                       }
+               try {
+                       tcAccessController.checkReadWritePermission(name);
+               } catch (AccessControlException e) {
+                       tcAccessController.checkReadPermission(name);
+                       return new WriteBlockedTripleCollection(
+                                       getUnsecuredTriples(name));
                }
                return getUnsecuredTriples(name);
        }
@@ -451,11 +444,7 @@ public class TcManager implements TcProv
        @Override
        public LockableMGraph createMGraph(UriRef name)
                        throws UnsupportedOperationException {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       security.checkPermission(new 
TcPermission(name.getUnicodeString(),
-                                       "readwrite"));
-               }
+               tcAccessController.checkReadWritePermission(name);
                for (WeightedTcProvider provider : providerList) {
                        try {
                                MGraph providedMGraph = 
provider.createMGraph(name);
@@ -486,11 +475,7 @@ public class TcManager implements TcProv
 
        @Override
        public Graph createGraph(UriRef name, TripleCollection triples) {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       security.checkPermission(new 
TcPermission(name.getUnicodeString(),
-                                       "readwrite"));
-               }
+               tcAccessController.checkReadWritePermission(name);
                for (WeightedTcProvider provider : providerList) {
                        try {
                                Graph result = provider.createGraph(name, 
triples);
@@ -515,11 +500,7 @@ public class TcManager implements TcProv
 
        @Override
        public void deleteTripleCollection(UriRef name) {
-               SecurityManager security = System.getSecurityManager();
-               if (security != null) {
-                       security.checkPermission(new 
TcPermission(name.getUnicodeString(),
-                                       "readwrite"));
-               }
+               tcAccessController.checkReadWritePermission(name);
                for (TcProvider provider : providerList) {
                        try {
                                provider.deleteTripleCollection(name);
@@ -591,8 +572,7 @@ public class TcManager implements TcProv
                Set<UriRef> result = new HashSet<UriRef>();
                for (UriRef name : tcNames) {
                        try {
-                               security.checkPermission(new TcPermission(name
-                                               .getUnicodeString(), "read"));
+                               tcAccessController.checkReadPermission(name);
                        } catch (AccessControlException e) {
                                continue;
                        }
@@ -720,6 +700,14 @@ public class TcManager implements TcProv
        }
 
        /**
+        * @return the TcAccessController that can be used to set the 
permissions
+        * needed to access a Triple Collection
+        */
+       public TcAccessController getTcAccessController() {
+               return tcAccessController;
+       }
+
+       /**
         * Contains an unsecured LockableMGraph, a ServiceRegistration and
         * the WeightedTcProvider that generated the graph
         */

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/access/SecurityTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/access/SecurityTest.java?rev=965059&r1=965058&r2=965059&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/access/SecurityTest.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.core/src/test/java/org/apache/clerezza/rdf/core/access/SecurityTest.java
 Sat Jul 17 12:04:33 2010
@@ -26,6 +26,7 @@ import java.security.Permission;
 import java.security.PermissionCollection;
 import java.security.Permissions;
 import java.security.Policy;
+import java.util.Collections;
 import java.util.PropertyPermission;
 import org.junit.After;
 import org.junit.AfterClass;
@@ -34,6 +35,7 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.apache.clerezza.rdf.core.MGraph;
 import org.apache.clerezza.rdf.core.Triple;
+import org.apache.clerezza.rdf.core.TripleCollection;
 import org.apache.clerezza.rdf.core.UriRef;
 import org.apache.clerezza.rdf.core.access.providers.WeightedA;
 import org.apache.clerezza.rdf.core.access.providers.WeightedDummy;
@@ -75,10 +77,12 @@ public class SecurityTest {
                                result.add(new 
TcPermission("http://example.org/graph/alreadyexists";, "readwrite"));
                                result.add(new 
TcPermission("http://example.org/read/graph";, "read"));
                                result.add(new 
TcPermission("http://example.org/area/allowed/*";, "readwrite"));
+                               result.add(new 
TcPermission("http://zz.localhost/graph-access.graph";, "readwrite"));
                                //result.add(new AllPermission());
                                result.add(new RuntimePermission("*"));
                                result.add(new 
ReflectPermission("suppressAccessChecks"));
-                               result.add(new 
PropertyPermission("user.timezone", "read"));
+                               result.add(new PropertyPermission("*", "read"));
+                               //(java.util.PropertyPermission line.separator 
read)
                                result.add(new FilePermission("/-", 
"read,write"));
                                return result;
                        }
@@ -125,6 +129,39 @@ public class SecurityTest {
        public void testAcessForbiddenGraph() {
                TcManager.getInstance().getGraph(new 
UriRef("http://example.org/forbidden";));
        }
+
+       @Test(expected=NoSuchEntityException.class)
+       public void testCustomPermissions() {
+               UriRef graphUri = new UriRef("http://example.org/custom";);
+               
TcManager.getInstance().getTcAccessController().setRequiredReadPermissions(graphUri,
+                               
Collections.singletonList("(java.io.FilePermission \"/etc\" \"write\")"));
+               //new FilePermission("/etc", "write").toString()));
+               TripleCollection ag = TcManager.getInstance().getTriples(new 
UriRef("http://zz.localhost/graph-access.graph";));
+               System.out.print(ag.toString());
+               TcManager.getInstance().getMGraph(graphUri);
+       }
+
+       @Test(expected=AccessControlException.class)
+       public void testCustomPermissionsIncorrect() {
+               UriRef graphUri = new UriRef("http://example.org/custom";);
+               
TcManager.getInstance().getTcAccessController().setRequiredReadPermissions(graphUri,
+                               
Collections.singletonList("(java.io.FilePermission \"/etc\" \"write\")"));
+               //new FilePermission("/etc", "write").toString()));
+               TripleCollection ag = TcManager.getInstance().getTriples(new 
UriRef("http://zz.localhost/graph-access.graph";));
+               System.out.print(ag.toString());
+               TcManager.getInstance().createMGraph(graphUri);
+       }
+
+       @Test
+       public void testCustomReadWritePermissions() {
+               UriRef graphUri = new 
UriRef("http://example.org/read-write-custom";);
+               
TcManager.getInstance().getTcAccessController().setRequiredReadWritePermissions(graphUri,
+                               
Collections.singletonList("(java.io.FilePermission \"/etc\" \"write\")"));
+               //new FilePermission("/etc", "write").toString()));
+               TripleCollection ag = TcManager.getInstance().getTriples(new 
UriRef("http://zz.localhost/graph-access.graph";));
+               System.out.print(ag.toString());
+               TcManager.getInstance().createMGraph(graphUri);
+       }
        
        @Test(expected=EntityAlreadyExistsException.class)
        public void testCreateMGraph() {


Reply via email to