You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2015/07/19 11:29:25 UTC

[1/4] jena git commit: initial changes on perm-interface-refactor as part of fix for JENA-992

Repository: jena
Updated Branches:
  refs/heads/master 2e99c459c -> 2940ec308


http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
index 7db89b5..66fc8f3 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRDFListImpl.java
@@ -26,10 +26,10 @@ import java.util.function.Function;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
 import org.apache.jena.permissions.impl.ItemHolder;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.permissions.impl.SecuredItemInvoker;
 import org.apache.jena.permissions.model.SecuredModel;
@@ -379,14 +379,14 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 
 	private void checkCreateNewList( final RDFNode value, final Resource tail )
 	{
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(listFirst().asNode()),
-				SecuredItemImpl.convert(value.asNode())));
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(listRest().asNode()),
-				SecuredItemImpl.convert(tail.asNode())));
+		checkCreate(new Triple(
+				SecurityEvaluator.FUTURE,
+				listFirst().asNode(),
+				value.asNode()));
+		checkCreate(new Triple(
+				SecurityEvaluator.FUTURE,
+				listRest().asNode(),
+				tail.asNode()));
 	}
 
 	private Set<Statement> collectStatements( final Set<Action> actions )
@@ -421,20 +421,19 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		}
 		else
 		{
-			final org.apache.jena.permissions.SecurityEvaluator.SecNode p = SecuredItemImpl
-					.convert(listFirst().asNode());
-			org.apache.jena.permissions.SecurityEvaluator.SecTriple t = new org.apache.jena.permissions.SecurityEvaluator.SecTriple(
-					org.apache.jena.permissions.SecurityEvaluator.SecNode.FUTURE,
-					p, org.apache.jena.permissions.SecurityEvaluator.SecNode.ANY);
+			
+			Triple t = new Triple(
+					SecurityEvaluator.FUTURE,
+					listFirst().asNode(), Node.ANY);
 			if (!canCreate(t))
 			{
 				final List<RDFNode> list = new ArrayList<RDFNode>();
 				while (nodes.hasNext())
 				{
 					final RDFNode n = nodes.next();
-					t = new org.apache.jena.permissions.SecurityEvaluator.SecTriple(
-							org.apache.jena.permissions.SecurityEvaluator.SecNode.FUTURE,
-							p, SecuredItemImpl.convert(n.asNode()));
+					t = new Triple(
+							SecurityEvaluator.FUTURE,
+							listFirst().asNode(), n.asNode());
 					checkCreate(t);
 					list.add(n);
 				}
@@ -460,11 +459,9 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		}
 		else
 		{
-			final org.apache.jena.permissions.SecurityEvaluator.SecNode p = SecuredItemImpl
-					.convert(listFirst().asNode());
-			org.apache.jena.permissions.SecurityEvaluator.SecTriple t = new org.apache.jena.permissions.SecurityEvaluator.SecTriple(
-					org.apache.jena.permissions.SecurityEvaluator.SecNode.FUTURE,
-					p, org.apache.jena.permissions.SecurityEvaluator.SecNode.ANY);
+			Triple t = new Triple(
+					SecurityEvaluator.FUTURE,
+					listFirst().asNode(), Node.ANY);
 			if (!canCreate(t))
 			{
 				final ExtendedIterator<RDFNode> iter = list.iterator();
@@ -472,10 +469,10 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 				{
 					while (iter.hasNext())
 					{
-						t = new org.apache.jena.permissions.SecurityEvaluator.SecTriple(
-								org.apache.jena.permissions.SecurityEvaluator.SecNode.FUTURE,
-								p, SecuredItemImpl
-										.convert(iter.next().asNode()));
+						t = new Triple(
+								SecurityEvaluator.FUTURE,
+								listFirst().asNode(), 
+										iter.next().asNode());
 						checkCreate(t);
 					}
 				}
@@ -878,7 +875,7 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		final Set<Action> perms = SecurityEvaluator.Util.asSet(new Action[] {
 				Action.Delete, Action.Read });
 		if (getSecurityEvaluator().evaluate(getSecurityEvaluator().getPrincipal(), perms, this.getModelNode(),
-				SecuredItemImpl.convert(t)))
+				t))
 		{
 			holder.getBaseItem().removeList();
 		}
@@ -886,7 +883,7 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 		{
 			for (final Statement s : collectStatements(perms))
 			{
-				if (canDelete(s.asTriple()))
+				if (canDelete(s))
 				{
 					s.remove();
 				}
@@ -1040,10 +1037,10 @@ public class SecuredRDFListImpl extends SecuredResourceImpl implements
 	public SecuredRDFList with( final RDFNode value )
 	{
 		checkUpdate();
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(listFirst().asNode()),
-				SecuredItemImpl.convert(value.asNode())));
+		checkCreate(new Triple(
+				SecurityEvaluator.FUTURE,
+				listFirst().asNode(),
+				value.asNode()));
 		return SecuredRDFListImpl.getInstance(getModel(), holder.getBaseItem()
 				.with(value));
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
index 2fbbb40..5b38a17 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredRSIterator.java
@@ -23,9 +23,9 @@ import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.rdf.model.RSIterator ;
@@ -40,7 +40,7 @@ public class SecuredRSIterator implements RSIterator
 	private class PermReifiedStatementFilter implements Predicate<ReifiedStatement>
 	{
 		private final SecurityEvaluator evaluator;
-		private final SecNode modelNode;
+		private final Node modelNode;
 		private final Set<Action> actions;
 
 		public PermReifiedStatementFilter( final Action[] actions,
@@ -55,7 +55,7 @@ public class SecuredRSIterator implements RSIterator
 		public boolean test( final ReifiedStatement t )
 		{
 			return evaluator.evaluateAny(evaluator.getPrincipal(), actions, modelNode,
-					SecuredItemImpl.convert(t.getStatement().asTriple()));
+					t.getStatement().asTriple());
 		}
 
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResourceImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResourceImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResourceImpl.java
index d6be052..cbfa415 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResourceImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredResourceImpl.java
@@ -22,9 +22,9 @@ import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
 import org.apache.jena.permissions.impl.ItemHolder;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemInvoker;
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.model.SecuredResource;

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSelector.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSelector.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSelector.java
index 9c18699..a6593e8 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSelector.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredSelector.java
@@ -17,10 +17,7 @@
  */
 package org.apache.jena.permissions.model.impl;
 
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
-import org.apache.jena.permissions.impl.SecuredItem;
-import org.apache.jena.permissions.impl.SecuredItemImpl;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.rdf.model.* ;
 
 public class SecuredSelector implements Selector
@@ -40,12 +37,6 @@ public class SecuredSelector implements Selector
 		this.selector = selector;
 	}
 
-	private SecNode getNode( final RDFNode node )
-	{
-		return node == null ? SecNode.ANY : SecuredItemImpl.convert(node
-				.asNode());
-	}
-
 	@Override
 	public RDFNode getObject()
 	{
@@ -67,7 +58,7 @@ public class SecuredSelector implements Selector
 	@Override
 	public boolean isSimple()
 	{
-		return securedItem.canRead(SecTriple.ANY);
+		return selector.isSimple();
 	}
 
 	/**
@@ -82,11 +73,9 @@ public class SecuredSelector implements Selector
 	@Override
 	public boolean test( final Statement s )
 	{
-		if (selector.test(s))
+		if (securedItem.canRead(s))
 		{
-			final SecTriple t = new SecTriple(getNode(s.getSubject()),
-					getNode(s.getPredicate()), getNode(s.getObject()));
-			return securedItem.canRead(t);
+			return selector.test(s);
 		}
 		return false;
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
index cd0a97b..99c7ed6 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredStatementImpl.java
@@ -253,8 +253,7 @@ public class SecuredStatementImpl extends SecuredItemImpl implements
 	public SecuredReifiedStatement createReifiedStatement()
 	{
 		checkUpdate();
-		checkCreateReified(null,
-				SecuredItemImpl.convert(holder.getBaseItem().asTriple()));
+		checkCreateReified(null, holder.getBaseItem());
 		return SecuredReifiedStatementImpl.getInstance(getModel(), holder
 				.getBaseItem().createReifiedStatement());
 	}
@@ -263,8 +262,7 @@ public class SecuredStatementImpl extends SecuredItemImpl implements
 	public SecuredReifiedStatement createReifiedStatement( final String uri )
 	{
 		checkUpdate();
-		checkCreateReified(uri,
-				SecuredItemImpl.convert(holder.getBaseItem().asTriple()));
+		checkCreateReified(uri, holder.getBaseItem());
 		return SecuredReifiedStatementImpl.getInstance(getModel(), holder
 				.getBaseItem().createReifiedStatement(uri));
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java
index ea8665b..65fde31 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/SecuredQueryEngine.java
@@ -21,9 +21,10 @@ import java.security.Principal;
 import java.util.Set;
 
 import org.apache.jena.graph.Graph ;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.permissions.SecurityEvaluator;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type;
 import org.apache.jena.permissions.query.rewriter.OpRewriter;
 import org.apache.jena.query.Query ;
 import org.apache.jena.permissions.graph.SecuredGraph;
@@ -41,7 +42,7 @@ public class SecuredQueryEngine extends QueryEngineMain
 			.getLogger(SecuredQueryEngine.class);
 
 	private SecurityEvaluator securityEvaluator;
-	private SecNode graphIRI;
+	private Node graphIRI;
 
 	/*
 	 * public SecuredQueryEngine( Op op, DatasetGraph dataset, Binding input,
@@ -88,54 +89,54 @@ public class SecuredQueryEngine extends QueryEngineMain
 		}
 		else
 		{
-			graphIRI = new SecNode(Type.URI, "urn:x-arq:DefaultGraph");
+			graphIRI = NodeFactory.createURI( "urn:x-arq:DefaultGraph");
 			this.securityEvaluator = new SecurityEvaluator() {
 
 				@Override
 				public boolean evaluate( final Object principal, final Action action,
-						final SecNode graphIRI )
+						final Node graphIRI )
 				{
 					return true;
 				}
 
 				@Override
 				public boolean evaluate( final Object principal, final Action action,
-						final SecNode graphIRI, final SecTriple triple )
+						final Node graphIRI, final Triple triple )
 				{
 					return true;
 				}
 
 				@Override
 				public boolean evaluate( final Object principal, final Set<Action> action,
-						final SecNode graphIRI )
+						final Node graphIRI )
 				{
 					return true;
 				}
 
 				@Override
 				public boolean evaluate( final Object principal, final Set<Action> action,
-						final SecNode graphIRI, final SecTriple triple )
+						final Node graphIRI, final Triple triple )
 				{
 					return true;
 				}
 
 				@Override
 				public boolean evaluateAny( final Object principal, final Set<Action> action,
-						final SecNode graphIRI )
+						final Node graphIRI )
 				{
 					return true;
 				}
 
 				@Override
 				public boolean evaluateAny( final Object principal, final Set<Action> action,
-						final SecNode graphIRI, final SecTriple triple )
+						final Node graphIRI, final Triple triple )
 				{
 					return true;
 				}
 
 				@Override
-				public boolean evaluateUpdate( final Object principal, final SecNode graphIRI,
-						final SecTriple from, final SecTriple to )
+				public boolean evaluateUpdate( final Object principal, final Node graphIRI,
+						final Triple from, final Triple to )
 				{
 					return true;
 				}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/OpRewriter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/OpRewriter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/OpRewriter.java
index 2fea0ad..ea25952 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/OpRewriter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/OpRewriter.java
@@ -21,13 +21,12 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.sparql.algebra.Op ;
 import org.apache.jena.sparql.algebra.OpVisitor ;
@@ -47,7 +46,7 @@ public class OpRewriter implements OpVisitor
 {
 	private static Logger LOG = LoggerFactory.getLogger(OpRewriter.class);
 	private OpSequence result;
-	private final SecNode graphIRI;
+	private final Node graphIRI;
 	private final SecurityEvaluator securityEvaluator;
 	// if true the restricted data are silently ignored.
 	// default false
@@ -59,7 +58,7 @@ public class OpRewriter implements OpVisitor
 	 * @param graphIRI The IRI for the default graph.
 	 */
 	public OpRewriter( final SecurityEvaluator securityEvaluator,
-			final SecNode graphIRI )
+			final Node graphIRI )
 	{
 		this.securityEvaluator = securityEvaluator;
 		this.graphIRI = graphIRI;
@@ -75,7 +74,7 @@ public class OpRewriter implements OpVisitor
 	public OpRewriter( final SecurityEvaluator securityEvaluator,
 			final String graphIRI )
 	{
-		this(securityEvaluator, new SecNode(SecNode.Type.URI, graphIRI));
+		this(securityEvaluator, NodeFactory.createURI( graphIRI));
 	}
 
 	/**
@@ -223,7 +222,7 @@ public class OpRewriter implements OpVisitor
 		}
 
 		// if the user can read any triple just add the opBGP
-		if (securityEvaluator.evaluate(principal, Action.Read, graphIRI, SecTriple.ANY))
+		if (securityEvaluator.evaluate(principal, Action.Read, graphIRI, Triple.ANY))
 		{
 			addOp(opBGP);
 		}
@@ -337,8 +336,7 @@ public class OpRewriter implements OpVisitor
 	public void visit( final OpGraph opGraph )
 	{
 		if (LOG.isDebugEnabled()) { LOG.debug( "Starting visiting OpGraph"); }
-		final OpRewriter rewriter = new OpRewriter(securityEvaluator,
-				SecuredItemImpl.convert(opGraph.getNode()));
+		final OpRewriter rewriter = new OpRewriter(securityEvaluator, opGraph.getNode());
 		opGraph.getSubOp().visit(rewriter);
 		addOp(new OpGraph(opGraph.getNode(), rewriter.getResult()));
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
index 6690d62..84b699c 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/query/rewriter/SecuredFunction.java
@@ -22,8 +22,6 @@ import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.sparql.core.Var ;
 import org.apache.jena.sparql.engine.binding.Binding ;
@@ -36,7 +34,7 @@ public class SecuredFunction extends ExprFunctionN
 	private final SecurityEvaluator securityEvaluator;
 	private final List<Node> variables;
 	private final List<Triple> bgp;
-	private final SecNode graphIRI;
+	private final Node graphIRI;
 	
 	private static ExprList createArgs( List<Node> variables )
 	{
@@ -48,7 +46,7 @@ public class SecuredFunction extends ExprFunctionN
 		return retval;
 	}
 
-	public SecuredFunction( final SecNode graphIRI,
+	public SecuredFunction( final Node graphIRI,
 			final SecurityEvaluator securityEvaluator,
 			final List<Node> variables, final List<Triple> bgp )
 	{
@@ -68,7 +66,7 @@ public class SecuredFunction extends ExprFunctionN
 		Object principal = securityEvaluator.getPrincipal();
 		for (final Triple t : bgp)
 		{
-			final SecTriple secT = createSecTriple(t, values);
+			final Triple secT = resolveTriple(t, values);
 			if (!securityEvaluator.evaluate(principal, Action.Read, graphIRI, secT))
 			{
 				return false;
@@ -77,21 +75,21 @@ public class SecuredFunction extends ExprFunctionN
 		return true;
 	}
 
-	private SecTriple createSecTriple( final Triple t, final Binding values )
+	private Triple resolveTriple( final Triple t, final Binding values )
 	{
 		int idx = variables.indexOf(t.getSubject());
 
-		final SecNode s = SecuredItemImpl.convert(idx ==-1 ? t.getSubject()
-				: values.get(Var.alloc( variables.get(idx))));
+		final Node s = idx ==-1 ? t.getSubject()
+				: values.get(Var.alloc( variables.get(idx)));
 
 		idx = variables.indexOf(t.getPredicate());
-		final SecNode p = SecuredItemImpl.convert(idx == -1 ? t
+		final Node p = idx == -1 ? t
 				.getPredicate() 
-				: values.get(Var.alloc( variables.get(idx))));
+				: values.get(Var.alloc( variables.get(idx)));
 		idx = variables.indexOf(t.getObject());
-		final SecNode o = SecuredItemImpl.convert(idx == -1 ? t.getObject()
-				: values.get(Var.alloc( variables.get(idx))));
-		return new SecTriple(s, p, o);
+		final Node o = idx == -1 ? t.getObject()
+				: values.get(Var.alloc( variables.get(idx)));
+		return new Triple(s, p, o);
 	}
 
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
index ba03fd8..b304fc7 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermStatementFilter.java
@@ -21,11 +21,10 @@ import java.util.Collection;
 import java.util.Set;
 import java.util.function.Predicate;
 
+import org.apache.jena.graph.Node;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.impl.SecuredItem;
-import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.rdf.model.Statement ;
 
 /**
@@ -36,7 +35,7 @@ import org.apache.jena.rdf.model.Statement ;
 public class PermStatementFilter implements Predicate<Statement>
 {
 	private final SecurityEvaluator evaluator;
-	private final SecNode modelNode;
+	private final Node modelNode;
 	private final Set<Action> actions;
 	private final Object principal;
 
@@ -157,8 +156,7 @@ public class PermStatementFilter implements Predicate<Statement>
 	@Override
 	public boolean test( final Statement s )
 	{
-		return evaluator.evaluateAny(principal, actions, modelNode,
-				SecuredItemImpl.convert(s.asTriple()));
+		return evaluator.evaluateAny(principal, actions, modelNode, s.asTriple());
 	}
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
index 5f54814..48d7d0e 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/PermTripleFilter.java
@@ -21,12 +21,11 @@ import java.util.Collection;
 import java.util.Set;
 import java.util.function.Predicate;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.graph.Triple ;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.impl.SecuredItem;
-import org.apache.jena.permissions.impl.SecuredItemImpl;
 
 /**
  * A filter for to filter ExtendedIterators on Triples.
@@ -36,7 +35,7 @@ import org.apache.jena.permissions.impl.SecuredItemImpl;
 public class PermTripleFilter implements Predicate<Triple>
 {
 	private final SecurityEvaluator evaluator;
-	private final SecNode modelNode;
+	private final Node modelNode;
 	private final Set<Action> actions;
 	private final Object principal;
 
@@ -154,10 +153,9 @@ public class PermTripleFilter implements Predicate<Triple>
 	}
 
 	@Override
-	public boolean test( final Triple t )
+	public boolean test( final Triple triple )
 	{
-		return evaluator.evaluateAny(principal, actions, modelNode,
-				SecuredItemImpl.convert(t));
+		return evaluator.evaluateAny(principal, actions, modelNode,triple);
 	}
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
index 7d08a21..b66a48c 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/utils/RDFListSecFilter.java
@@ -20,10 +20,9 @@ package org.apache.jena.permissions.utils;
 import java.util.Set;
 import java.util.function.Predicate;
 
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.impl.SecuredItem;
-import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.rdf.model.RDFList ;
 import org.apache.jena.rdf.model.Statement ;
 import org.apache.jena.vocabulary.RDF ;
@@ -52,7 +51,6 @@ public class RDFListSecFilter<T extends RDFList> implements Predicate<T>
 	{
 		final Statement s = o.getRequiredProperty(RDF.first);
 		return securedItem.getSecurityEvaluator().evaluate(principal, perms,
-				securedItem.getModelNode(),
-				SecuredItemImpl.convert(s.asTriple()));
+				securedItem.getModelNode(),	s.asTriple());
 	}
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java
index 9c0b099..dd2e8d7 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/MockSecurityEvaluator.java
@@ -21,6 +21,8 @@ import java.security.Principal;
 import java.util.Collections;
 import java.util.Set;
 
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.rdf.model.Resource ;
 
@@ -86,20 +88,20 @@ public class MockSecurityEvaluator implements SecurityEvaluator
 	}
 
 	@Override
-	public boolean evaluate( final Object principal, final Action action, final SecNode uri )
+	public boolean evaluate( final Object principal, final Action action, final Node uri )
 	{
 		return evaluate(action);
 	}
 
 	@Override
-	public boolean evaluate( final Object principal, final Action action, final SecNode graphIRI,
-			final SecTriple triple )
+	public boolean evaluate( final Object principal, final Action action, final Node graphIRI,
+			final Triple triple )
 	{
 		if (forceTripleChecks)
 		{
-			if (triple.getSubject().equals(SecNode.ANY)
-					|| triple.getPredicate().equals(SecNode.ANY)
-					|| triple.getObject().equals(SecNode.ANY))
+			if (triple.getSubject().equals(Node.ANY)
+					|| triple.getPredicate().equals(Node.ANY)
+					|| triple.getObject().equals(Node.ANY))
 			{
 				return false;
 			}
@@ -140,14 +142,14 @@ public class MockSecurityEvaluator implements SecurityEvaluator
 	}
 
 	@Override
-	public boolean evaluate( final Object principal, final Set<Action> action, final SecNode uri )
+	public boolean evaluate( final Object principal, final Set<Action> action, final Node uri )
 	{
 		return evaluate(action);
 	}
 
 	@Override
-	public boolean evaluate( final Object principal, final Set<Action> action, final SecNode graphIRI,
-			final SecTriple triple )
+	public boolean evaluate( final Object principal, final Set<Action> action, final Node graphIRI,
+			final Triple triple )
 	{
 		for (final Action a : action)
 		{
@@ -160,7 +162,7 @@ public class MockSecurityEvaluator implements SecurityEvaluator
 	}
 
 	@Override
-	public boolean evaluateAny( final Object principal, final Set<Action> action, final SecNode graphIRI )
+	public boolean evaluateAny( final Object principal, final Set<Action> action, final Node graphIRI )
 	{
 		for (final Action a : action)
 		{
@@ -174,14 +176,14 @@ public class MockSecurityEvaluator implements SecurityEvaluator
 
 	@Override
 	public boolean evaluateAny( final Object principal, final Set<Action> action,
-			final SecNode graphIRI, final SecTriple triple )
+			final Node graphIRI, final Triple triple )
 	{
 		return evaluateAny( principal, action, graphIRI);
 	}
 
 	@Override
-	public boolean evaluateUpdate( final Object principal, final SecNode graphIRI,
-			final SecTriple from, final SecTriple to )
+	public boolean evaluateUpdate( final Object principal, final Node graphIRI,
+			final Triple from, final Triple to )
 	{
 		return evaluate(Action.Update);
 	}
@@ -191,7 +193,7 @@ public class MockSecurityEvaluator implements SecurityEvaluator
 		return Collections.emptySet();
 	}
 
-	public Set<Action> getPermissions( final SecNode uri )
+	public Set<Action> getPermissions( final Node uri )
 	{
 		return Collections.emptySet();
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java
index f61e1bb..61fc094 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/ModelBasedSecurityEvaluator.java
@@ -19,6 +19,8 @@ package org.apache.jena.permissions;
 
 import java.util.Set;
 
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.rdf.model.Model ;
 
@@ -33,39 +35,39 @@ public class ModelBasedSecurityEvaluator implements SecurityEvaluator {
 	
 
 	@Override
-	public boolean evaluate(final Object principal, Action action, SecNode graphIRI) {
+	public boolean evaluate(final Object principal, Action action, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Action action, SecNode graphIRI, SecTriple triple) {
+	public boolean evaluate(final Object principal, Action action, Node graphIRI, Triple triple) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluate(final Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
+	public boolean evaluate(final Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluateAny(final Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
+	public boolean evaluateAny(final Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluateUpdate(final Object principal, SecNode graphIRI, SecTriple from, SecTriple to) {
+	public boolean evaluateUpdate(final Object principal, Node graphIRI, Triple from, Triple to) {
 		return true;
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java b/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java
index 54ee9ef..94e47e9 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/StaticSecurityEvaluator.java
@@ -19,61 +19,64 @@ package org.apache.jena.permissions;
 
 import java.util.Set;
 
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator;
 
 public class StaticSecurityEvaluator implements SecurityEvaluator {
 
-	private String user;
+	private Node user;
 	
 	public StaticSecurityEvaluator( String user) {
-		this.user = user;
+		this.user = NodeFactory.createURI( "urn:"+user );
 	}
 	
 	public void setUser( String user )
 	{
-		this.user = user;
+		this.user = NodeFactory.createURI( "urn:"+user );
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Action action, SecNode graphIRI) {
+	public boolean evaluate(final Object principal, Action action, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Action action, SecNode graphIRI, SecTriple triple) {
-		return triple.getSubject().getValue().equals( "urn:"+principal );
+	public boolean evaluate(final Object principal, Action action, Node graphIRI, Triple triple) {
+		return triple.getSubject().equals( principal );
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluate(final Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluate(final Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
-		return triple.getSubject().getValue().equals( "urn:"+principal );
+	public boolean evaluate(final Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
+		return triple.getSubject().equals( principal );
 	}
 
 	@Override
-	public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluateAny(final Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluateAny(final Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
-		return triple.getSubject().getValue().equals( "urn:"+principal );
+	public boolean evaluateAny(final Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
+		return triple.getSubject().equals( principal );
 	}
 
 	@Override
-	public boolean evaluateUpdate(final Object principal, SecNode graphIRI, SecTriple from, SecTriple to) {
-		return from.getSubject().getValue().equals( "urn:"+principal ) && 
-				to.getSubject().getValue().equals( "urn:"+principal );
+	public boolean evaluateUpdate(final Object principal, Node graphIRI, Triple from, Triple to) {
+		return from.getSubject().equals( principal ) && 
+				to.getSubject().equals( principal );
 	}
 
 	@Override
-	public Object getPrincipal() {
+	public Node getPrincipal() {
 		return user;
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/contract/graph/CachedSecurityEvaluatorTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/contract/graph/CachedSecurityEvaluatorTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/contract/graph/CachedSecurityEvaluatorTest.java
index 688ffd4..7a16a7c 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/contract/graph/CachedSecurityEvaluatorTest.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/contract/graph/CachedSecurityEvaluatorTest.java
@@ -18,6 +18,8 @@
 
 package org.apache.jena.permissions.contract.graph;
 
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.StaticSecurityEvaluator;
 import org.apache.jena.permissions.impl.CachedSecurityEvaluator;
@@ -32,15 +34,15 @@ public class CachedSecurityEvaluatorTest {
 	
 	public CachedSecurityEvaluatorTest() {
 		securityEvaluator = new StaticSecurityEvaluator( "bob" );
-		cachedEvaluator = new CachedSecurityEvaluator( securityEvaluator, "ted" );
+		cachedEvaluator = new CachedSecurityEvaluator( securityEvaluator, NodeFactory.createURI("urn:ted") );
 		
 	}
 	
 	@Test
 	public void testGetPrincipal()
 	{
-		assertEquals( "bob", securityEvaluator.getPrincipal());
-		assertEquals( "ted", cachedEvaluator.getPrincipal());
+		assertEquals( "urn:bob", securityEvaluator.getPrincipal().getURI());
+		assertEquals( "urn:ted", ((Node)cachedEvaluator.getPrincipal()).getURI());
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/graph/CrossIDGraphEventManagerTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/graph/CrossIDGraphEventManagerTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/graph/CrossIDGraphEventManagerTest.java
index e9af258..814e637 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/graph/CrossIDGraphEventManagerTest.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/graph/CrossIDGraphEventManagerTest.java
@@ -43,11 +43,11 @@ public class CrossIDGraphEventManagerTest {
 
 		g = GraphFactory.createDefaultGraph();
 		g.add(new Triple(NodeFactory.createURI("urn:ann"), NodeFactory
-				.createURI("http://example.com/v"), NodeFactory.createAnon()));
+				.createURI("http://example.com/v"), NodeFactory.createBlankNode()));
 		g.add(new Triple(NodeFactory.createURI("urn:bob"), NodeFactory
-				.createURI("http://example.com/v"), NodeFactory.createAnon()));
+				.createURI("http://example.com/v"), NodeFactory.createBlankNode()));
 		g.add(new Triple(NodeFactory.createURI("urn:ann"), NodeFactory
-				.createURI("http://example.com/v2"), NodeFactory.createAnon()));
+				.createURI("http://example.com/v2"), NodeFactory.createBlankNode()));
 
 		sg = Factory.getInstance(securityEvaluator,
 				"http://example.com/testGraph", g);
@@ -62,13 +62,13 @@ public class CrossIDGraphEventManagerTest {
 	@Test
 	public void notificationsTest() {
 		sg.add(new Triple(NodeFactory.createURI("urn:bob"), NodeFactory
-				.createURI("http://example.com/v2"), NodeFactory.createAnon()));
+				.createURI("http://example.com/v2"), NodeFactory.createBlankNode()));
 
 		Assert.assertTrue("Should recorded add", bobListener.isAdd());
 		Assert.assertFalse("Should not have recorded add", annListener.isAdd());
 
 		sg.delete(new Triple(NodeFactory.createURI("urn:bob"), NodeFactory
-				.createURI("http://example.com/v2"), NodeFactory.createAnon()));
+				.createURI("http://example.com/v2"), NodeFactory.createBlankNode()));
 
 		Assert.assertTrue("Should recorded delete", bobListener.isDelete());
 		Assert.assertFalse("Should not have recorded delete",

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/impl/SecuredItemImplTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/impl/SecuredItemImplTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/impl/SecuredItemImplTest.java
new file mode 100644
index 0000000..e6ed8c5
--- /dev/null
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/impl/SecuredItemImplTest.java
@@ -0,0 +1,215 @@
+package org.apache.jena.permissions.impl;
+
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.permissions.SecurityEvaluator;
+import org.apache.jena.permissions.SecurityEvaluator.Action;
+import org.apache.jena.sparql.core.Var;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+public class SecuredItemImplTest {
+	private SecurityEvaluator evaluator = mock(SecurityEvaluator.class);
+	private ItemHolder<?,?> holder = mock(ItemHolder.class);
+	private ArgumentCaptor<Object> principal;
+	private ArgumentCaptor<Action> action;
+	private ArgumentCaptor<Node> modelNode;
+	private ArgumentCaptor<Triple> triple;
+	private SecuredItemImpl securedItemImpl = new SecuredItemImpl(evaluator, "urn:name", holder) {} ;
+	private static String PRINCIPAL = "principal";
+	
+	@Before 
+	public void setup() {
+		principal = ArgumentCaptor.forClass(Object.class);
+		action = ArgumentCaptor.forClass(Action.class);
+		modelNode = ArgumentCaptor.forClass(Node.class);
+		triple = ArgumentCaptor.forClass(Triple.class);
+	}
+
+	@Test
+	public void canRead()
+	{	
+		// Triple.ANY
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		assertTrue( securedItemImpl.canRead( Triple.ANY ) );
+		verify( evaluator ).evaluate( principal.capture(), action.capture(), modelNode.capture(), triple.capture());
+		
+		Triple t = triple.getValue();
+		assertEquals( Node.ANY, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( Node.ANY, t.getObject() );
+		
+		Node n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		Object p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		Action a = action.getValue();
+		assertEquals( Action.Read, a );
+		
+		reset( evaluator );
+		
+		// FUTURE ANY Variable
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		Triple target = new Triple( SecurityEvaluator.FUTURE, Node.ANY, Var.alloc( "var"));
+		assertTrue( securedItemImpl.canRead( target ) );
+		verify( evaluator ).evaluate( principal.capture(), action.capture(), modelNode.capture(), triple.capture());
+		
+		t = triple.getValue();
+		assertEquals( SecurityEvaluator.FUTURE, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( SecurityEvaluator.VARIABLE, t.getObject() );
+		
+		n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		a = action.getValue();
+		assertEquals( Action.Read, a );
+	}
+	
+	@Test
+	public void canCreate()
+	{	
+		// Triple.ANY
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		assertTrue( securedItemImpl.canCreate( Triple.ANY ) );
+		verify( evaluator ).evaluate( principal.capture(), action.capture(), modelNode.capture(), triple.capture());
+		
+		Triple t = triple.getValue();
+		assertEquals( Node.ANY, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( Node.ANY, t.getObject() );
+		
+		Node n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		Object p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		Action a = action.getValue();
+		assertEquals( Action.Create, a );
+		
+		reset( evaluator );
+		
+		// FUTURE ANY Variable
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		Triple target = new Triple( SecurityEvaluator.FUTURE, Node.ANY, Var.alloc( "var"));
+		assertTrue( securedItemImpl.canCreate( target ) );
+		verify( evaluator ).evaluate( principal.capture(), action.capture(), modelNode.capture(), triple.capture());
+		
+		t = triple.getValue();
+		assertEquals( SecurityEvaluator.FUTURE, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( SecurityEvaluator.VARIABLE, t.getObject() );
+		
+		n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		a = action.getValue();
+		assertEquals( Action.Create, a );
+	}
+	
+	@Test
+	public void canUpdate()
+	{	
+		// Triple.ANY
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluateUpdate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		assertTrue( securedItemImpl.canUpdate( Triple.ANY, Triple.ANY ) );
+		verify( evaluator ).evaluateUpdate( principal.capture(), modelNode.capture(), triple.capture(), any());
+		
+		Triple t = triple.getValue();
+		assertEquals( Node.ANY, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( Node.ANY, t.getObject() );
+		
+		Node n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		Object p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		reset( evaluator );
+		
+		// FUTURE ANY Variable
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluateUpdate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		Triple target = new Triple( SecurityEvaluator.FUTURE, Node.ANY, Var.alloc( "var"));
+		assertTrue( securedItemImpl.canUpdate( target, Triple.ANY ) );
+		verify( evaluator ).evaluateUpdate( principal.capture(), modelNode.capture(), triple.capture(), any());
+		
+		t = triple.getValue();
+		assertEquals( SecurityEvaluator.FUTURE, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( SecurityEvaluator.VARIABLE, t.getObject() );
+		
+		n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+	}
+	
+	@Test
+	public void canDelete()
+	{	
+		// Triple.ANY
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		assertTrue( securedItemImpl.canDelete( Triple.ANY ) );
+		verify( evaluator ).evaluate( principal.capture(), action.capture(), modelNode.capture(), triple.capture());
+		
+		Triple t = triple.getValue();
+		assertEquals( Node.ANY, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( Node.ANY, t.getObject() );
+		
+		Node n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		Object p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		Action a = action.getValue();
+		assertEquals( Action.Delete, a );
+		
+		reset( evaluator );
+		
+		// FUTURE ANY Variable
+		when( evaluator.getPrincipal() ).thenReturn( PRINCIPAL );
+		when( evaluator.evaluate( any(), any(), any(), any())).thenReturn( Boolean.TRUE);
+		Triple target = new Triple( SecurityEvaluator.FUTURE, Node.ANY, Var.alloc( "var"));
+		assertTrue( securedItemImpl.canDelete( target ) );
+		verify( evaluator ).evaluate( principal.capture(), action.capture(), modelNode.capture(), triple.capture());
+		
+		t = triple.getValue();
+		assertEquals( SecurityEvaluator.FUTURE, t.getSubject() );
+		assertEquals( Node.ANY, t.getPredicate() );
+		assertEquals( SecurityEvaluator.VARIABLE, t.getObject() );
+		
+		n = modelNode.getValue();
+		assertEquals( NodeFactory.createURI( "urn:name" ), n );
+		
+		p = principal.getValue();
+		assertEquals( PRINCIPAL, p );
+		
+		a = action.getValue();
+		assertEquals( Action.Delete, a );
+	}
+}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
index 30f7533..51375ac 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/model/SecuredModelDetailTest.java
@@ -22,7 +22,9 @@ import java.security.Principal ;
 import java.util.Set ;
 
 import org.apache.http.auth.BasicUserPrincipal ;
+import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.Factory ;
 import org.apache.jena.permissions.SecurityEvaluator ;
 import org.apache.jena.rdf.model.* ;
@@ -290,7 +292,7 @@ public class SecuredModelDetailTest {
 
 		@Override
 		public boolean evaluate(Object principal, Action action,
-				SecNode graphIRI) {
+				Node graphIRI) {
 			// we allow any action on a graph.
 			return true;
 		}
@@ -305,18 +307,14 @@ public class SecuredModelDetailTest {
 			return true;
 		}
 
-		private boolean evaluate( SecNode node )
+		private boolean evaluate( Node node )
 		{
-			if (node.equals( SecNode.ANY )) {
+			if (node.equals( Node.ANY )) {
 				return false;  // all wild cards are false
 			}
 			
-			if (node.getType().equals( SecNode.Type.URI)) {
-				Resource r = model.createResource( node.getValue() );
-				return evaluate( r );
-			}
-			else if (node.getType().equals( SecNode.Type.Anonymous)) {
-				Resource r = model.getRDFNode( NodeFactory.createBlankNode( node.getValue()) ).asResource();
+			if (node.isURI() || node.isBlank()) {
+				Resource r = model.getRDFNode( node ).asResource();
 				return evaluate( r );
 			} else {
 				return true;
@@ -324,7 +322,7 @@ public class SecuredModelDetailTest {
 
 		}
 
-		private boolean evaluate(SecTriple triple) {
+		private boolean evaluate(Triple triple) {
 			return evaluate(triple.getSubject())
 					&& evaluate(triple.getObject())
 					&& evaluate(triple.getPredicate());
@@ -332,37 +330,37 @@ public class SecuredModelDetailTest {
 
 		@Override
 		public boolean evaluate(Object principal, Action action,
-				SecNode graphIRI, SecTriple triple) {
+				Node graphIRI, Triple triple) {
 			return evaluate(triple);
 		}
 
 		@Override
 		public boolean evaluate(Object principal, Set<Action> actions,
-				SecNode graphIRI) {
+				Node graphIRI) {
 			return true;
 		}
 
 		@Override
 		public boolean evaluate(Object principal, Set<Action> actions,
-				SecNode graphIRI, SecTriple triple) {
+				Node graphIRI, Triple triple) {
 			return evaluate(triple);
 		}
 
 		@Override
 		public boolean evaluateAny(Object principal, Set<Action> actions,
-				SecNode graphIRI) {
+				Node graphIRI) {
 			return true;
 		}
 
 		@Override
 		public boolean evaluateAny(Object principal, Set<Action> actions,
-				SecNode graphIRI, SecTriple triple) {
+				Node graphIRI, Triple triple) {
 			return evaluate(triple);
 		}
 
 		@Override
-		public boolean evaluateUpdate(Object principal, SecNode graphIRI,
-				SecTriple from, SecTriple to) {
+		public boolean evaluateUpdate(Object principal, Node graphIRI,
+				Triple from, Triple to) {
 			return evaluate(from) && evaluate(to);
 		}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java
index ae9fcba..12ed85b 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/query/DataSetTest.java
@@ -19,9 +19,10 @@ package org.apache.jena.permissions.query;
 
 import org.apache.jena.permissions.Factory;
 import org.apache.jena.permissions.MockSecurityEvaluator;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type;
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.query.SecuredQueryEngineFactory;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.query.*;
 import org.apache.jena.rdf.model.Model;
 import org.apache.jena.sparql.core.DatasetGraph;
@@ -108,10 +109,9 @@ public class DataSetTest {
 
 			@Override
 			public boolean evaluate(final Object principal,
-					final Action action, final SecNode graphIRI,
-					final SecTriple triple) {
-				if (triple.getSubject().equals(
-						new SecNode(Type.URI, "http://example.com/resource/1"))) {
+					final Action action, final Node graphIRI,
+					final Triple triple) {
+				if (triple.getSubject().isURI() && triple.getSubject().getURI().equals( "http://example.com/resource/1")) {
 					return false;
 				}
 				return super.evaluate(principal, action, graphIRI, triple);
@@ -150,10 +150,10 @@ public class DataSetTest {
 
 			@Override
 			public boolean evaluate(final Object principal,
-					final Action action, final SecNode graphIRI,
-					final SecTriple triple) {
-				if (triple.getSubject().equals(
-						new SecNode(Type.URI, "http://example.com/resource/1"))) {
+					final Action action, final Node graphIRI,
+					final Triple triple) {
+				if (triple.getSubject().isURI() && triple.getSubject().getURI().equals(
+						"http://example.com/resource/1")) {
 					return false;
 				}
 				return super.evaluate(principal, action, graphIRI, triple);

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java b/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java
index 5d7172d..daeff21 100644
--- a/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java
+++ b/jena-permissions/src/test/java/org/apache/jena/permissions/query/QueryEngineTest.java
@@ -20,9 +20,10 @@ package org.apache.jena.permissions.query;
 import org.apache.jena.permissions.Factory;
 import org.apache.jena.permissions.MockSecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type;
 import org.apache.jena.permissions.model.SecuredModel;
 import org.apache.jena.permissions.query.SecuredQueryEngineFactory;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.query.QueryExecution;
 import org.apache.jena.query.QueryExecutionFactory;
 import org.apache.jena.query.QuerySolution;
@@ -147,10 +148,10 @@ public class QueryEngineTest {
 
 			@Override
 			public boolean evaluate(final Object principal,
-					final Action action, final SecNode graphIRI,
-					final SecTriple triple) {
-				if (triple.getSubject().equals(
-						new SecNode(Type.URI, "http://example.com/resource/1"))) {
+					final Action action, final Node graphIRI,
+					final Triple triple) {
+				if (triple.getSubject().isURI() && triple.getSubject().getURI().equals(
+						 "http://example.com/resource/1")) {
 					return false;
 				}
 				return super.evaluate(principal, action, graphIRI, triple);
@@ -189,9 +190,9 @@ public class QueryEngineTest {
 
 			@Override
 			public boolean evaluate(Object principal, final Action action,
-					final SecNode graphIRI, final SecTriple triple) {
-				if (triple.getSubject().equals(
-						new SecNode(Type.URI, "http://example.com/resource/1"))) {
+					final Node graphIRI, final Triple triple) {
+				if (triple.getSubject().isURI() && triple.getSubject().getURI().equals(
+						 "http://example.com/resource/1")) {
 					return false;
 				}
 				return super.evaluate(principal, action, graphIRI, triple);


[3/4] jena git commit: initial changes on perm-interface-refactor as part of fix for JENA-992

Posted by cl...@apache.org.
initial changes on perm-interface-refactor as part of fix for JENA-992


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/1dd6cfd1
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/1dd6cfd1
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/1dd6cfd1

Branch: refs/heads/master
Commit: 1dd6cfd1b9b1457af7a7942cd9912c75852c1280
Parents: 2e99c45
Author: Claude Warren <cl...@apache.org>
Authored: Sat Jul 18 20:49:13 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sat Jul 18 20:49:13 2015 +0100

----------------------------------------------------------------------
 jena-permissions/pom.xml                        |    4 +
 .../permissions/example/ExampleEvaluator.java   |   41 +-
 .../example/ShiroExampleEvaluator.java          |   45 +-
 .../apache/jena/permissions/SecuredItem.java    |  241 ++
 .../jena/permissions/SecurityEvaluator.java     |  405 +---
 .../permissions/graph/SecuredCapabilities.java  |   14 +-
 .../jena/permissions/graph/SecuredGraph.java    |   10 +-
 .../graph/SecuredGraphEventManager.java         |   54 +-
 .../permissions/graph/SecuredPrefixMapping.java |    2 +-
 .../graph/impl/SecuredGraphImpl.java            |    2 +-
 .../impl/CachedSecurityEvaluator.java           |   18 +-
 .../jena/permissions/impl/ItemHolder.java       |    1 +
 .../jena/permissions/impl/SecuredItem.java      |  195 --
 .../jena/permissions/impl/SecuredItemImpl.java  |  301 ++-
 .../permissions/impl/SecuredItemInvoker.java    |    2 +
 .../jena/permissions/model/SecuredRDFNode.java  |    2 +-
 .../permissions/model/SecuredStatement.java     |    2 +-
 .../model/impl/SecuredModelImpl.java            | 2238 +++++++-----------
 .../model/impl/SecuredRDFListImpl.java          |   61 +-
 .../model/impl/SecuredRSIterator.java           |    6 +-
 .../model/impl/SecuredResourceImpl.java         |    2 +-
 .../permissions/model/impl/SecuredSelector.java |   19 +-
 .../model/impl/SecuredStatementImpl.java        |    6 +-
 .../permissions/query/SecuredQueryEngine.java   |   25 +-
 .../permissions/query/rewriter/OpRewriter.java  |   16 +-
 .../query/rewriter/SecuredFunction.java         |   24 +-
 .../permissions/utils/PermStatementFilter.java  |   10 +-
 .../permissions/utils/PermTripleFilter.java     |   12 +-
 .../permissions/utils/RDFListSecFilter.java     |    6 +-
 .../jena/permissions/MockSecurityEvaluator.java |   30 +-
 .../ModelBasedSecurityEvaluator.java            |   20 +-
 .../permissions/StaticSecurityEvaluator.java    |   39 +-
 .../graph/CachedSecurityEvaluatorTest.java      |    8 +-
 .../graph/CrossIDGraphEventManagerTest.java     |   10 +-
 .../permissions/impl/SecuredItemImplTest.java   |  215 ++
 .../model/SecuredModelDetailTest.java           |   32 +-
 .../jena/permissions/query/DataSetTest.java     |   18 +-
 .../jena/permissions/query/QueryEngineTest.java |   17 +-
 38 files changed, 1835 insertions(+), 2318 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/pom.xml
----------------------------------------------------------------------
diff --git a/jena-permissions/pom.xml b/jena-permissions/pom.xml
index 48d9026..bd00639 100644
--- a/jena-permissions/pom.xml
+++ b/jena-permissions/pom.xml
@@ -184,5 +184,9 @@
 			<version>1.2.2</version>
 			<scope>provided</scope>
 		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+		</dependency>
 	</dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java
index d42ccf8..f67aa40 100644
--- a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java
+++ b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ExampleEvaluator.java
@@ -21,7 +21,8 @@ import java.security.Principal ;
 import java.util.Set ;
 
 import org.apache.http.auth.BasicUserPrincipal ;
-import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.vocabulary.RDF ;
@@ -49,7 +50,7 @@ public class ExampleEvaluator implements SecurityEvaluator {
 	}
 	
 	@Override
-	public boolean evaluate(Object principal, Action action, SecNode graphIRI) {
+	public boolean evaluate(Object principal, Action action, Node graphIRI) {
 		// we allow any action on a graph.
 		return true;
 	}
@@ -66,62 +67,54 @@ public class ExampleEvaluator implements SecurityEvaluator {
 		return true;	
 	}
 	
-	private boolean evaluate( Object principal, SecNode node )
+	private boolean evaluate( Object principal, Node node )
 	{
-		if (node.equals( SecNode.ANY )) {
+		if (node.equals( Node.ANY )) {
 			return false;  // all wild cards are false
 		}
 		
-		if (node.getType().equals( SecNode.Type.URI)) {
-			Resource r = model.createResource( node.getValue() );
+		if (node.isURI() || node.isBlank()) {
+			Resource r = model.getRDFNode( node ).asResource();
 			return evaluate( principal, r );
 		}
-		else if (node.getType().equals( SecNode.Type.Anonymous)) {
-			Resource r = model.getRDFNode( NodeFactory.createBlankNode( node.getValue()) ).asResource();
-			return evaluate( principal, r );
-		}
-		else
-		{
-			return true;
-		}
-
+		return true;
 	}
 	
-	private boolean evaluate( Object principal, SecTriple triple ) {
+	private boolean evaluate( Object principal, Triple triple ) {
 		return evaluate( principal, triple.getSubject()) &&
 				evaluate( principal, triple.getObject()) &&
 				evaluate( principal, triple.getPredicate());
 	}
 	
 	@Override
-	public boolean evaluate(Object principal, Action action, SecNode graphIRI, SecTriple triple) {
+	public boolean evaluate(Object principal, Action action, Node graphIRI, Triple triple) {
 		return evaluate( principal, triple );
 	}
 
 	@Override
-	public boolean evaluate(Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluate(Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluate(Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
+	public boolean evaluate(Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
 		return evaluate( principal, triple );
 	}
 
 	@Override
-	public boolean evaluateAny(Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluateAny(Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
 	@Override
-	public boolean evaluateAny(Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
+	public boolean evaluateAny(Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
 		return evaluate( principal, triple );
 	}
 
 	@Override
-	public boolean evaluateUpdate(Object principal, SecNode graphIRI, SecTriple from, SecTriple to) {
+	public boolean evaluateUpdate(Object principal, Node graphIRI, Triple from, Triple to) {
 		return evaluate( principal, from ) && evaluate( principal, to );
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java
index db8a2dd..6feeff1 100644
--- a/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java
+++ b/jena-permissions/src/example/java/org/apache/jena/permissions/example/ShiroExampleEvaluator.java
@@ -19,7 +19,9 @@ package org.apache.jena.permissions.example;
 
 import java.util.Set ;
 
+import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory ;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator ;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.vocabulary.RDF ;
@@ -57,14 +59,14 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * We allow any action on the graph itself, so this is always true.
 	 */
 	@Override
-	public boolean evaluate(Object principal, Action action, SecNode graphIRI) {
+	public boolean evaluate(Object principal, Action action, Node graphIRI) {
 		// we allow any action on a graph.
 		return true;
 	}
 
 	/**
 	 * This is our internal check to see if the user may access the resource.
-	 * This method is called from the evauate(Object,SecNode) method.
+	 * This method is called from the evauate(Object,Node) method.
 	 * A user may only access the resource if they are authenticated, and are either the
 	 * sender or the recipient.
 	 * Additionally the admin can always see the messages.
@@ -107,32 +109,23 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * @param node
 	 * @return
 	 */
-	private boolean evaluate( Object principal, SecNode node )
+	private boolean evaluate( Object principal, Node node )
 	{
 		// Access to wild card is false -- this forces checks to the acutal nodes
 		// to be returned.
 		// we could have checked for admin access here and returned true since the admin
 		// can see any node.
-		if (node.equals( SecNode.ANY )) {
+		if (node.equals( Node.ANY )) {
 			return false;  
 		}
 		
-		// URI nodes are retrieved from the model and evaluated
-		if (node.getType().equals( SecNode.Type.URI)) {
-			Resource r = model.createResource( node.getValue() );
-			return evaluate( principal, r );
-		}
-		// anonymous nodes have to be retrieved from the model as anonymous nodes.
-		else if (node.getType().equals( SecNode.Type.Anonymous)) {
-			Resource r = model.getRDFNode( NodeFactory.createBlankNode( node.getValue()) ).asResource();
+		// URI nodes and blank nodes are retrieved from the model and evaluated
+		if (node.isURI() || node.isBlank()) {
+			Resource r = model.getRDFNode( node ).asResource();
 			return evaluate( principal, r );
 		}
 		// anything else (literals) can be seen.
-		else
-		{
-			return true;
-		}
-
+		return true;
 	}
 	
 	/**
@@ -141,7 +134,7 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * @param triple
 	 * @return
 	 */
-	private boolean evaluate( Object principal, SecTriple triple ) {
+	private boolean evaluate( Object principal, Triple triple ) {
 		// we could have checked here to see if the principal was the admin and 
 		// just returned true since the admin can perform any operation on any triple.
 		return evaluate( principal, triple.getSubject()) &&
@@ -155,7 +148,7 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * upon action this method would sort those out appropriately.
 	 */
 	@Override
-	public boolean evaluate(Object principal, Action action, SecNode graphIRI, SecTriple triple) {
+	public boolean evaluate(Object principal, Action action, Node graphIRI, Triple triple) {
 		// we could have checked here to see if the principal was the admin and 
 		// just returned true since the admin can perform any operation on any triple.
 		return evaluate( principal, triple );
@@ -169,7 +162,7 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * graph.
 	 */
 	@Override
-	public boolean evaluate(Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluate(Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
@@ -179,8 +172,8 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * for a single action.
 	 */
 	@Override
-	public boolean evaluate(Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
+	public boolean evaluate(Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
 		return evaluate( principal, triple );
 	}
 
@@ -192,7 +185,7 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * graph.
 	 */
 	@Override
-	public boolean evaluateAny(Object principal, Set<Action> actions, SecNode graphIRI) {
+	public boolean evaluateAny(Object principal, Set<Action> actions, Node graphIRI) {
 		return true;
 	}
 
@@ -202,8 +195,8 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * for a single action.
 	 */
 	@Override
-	public boolean evaluateAny(Object principal, Set<Action> actions, SecNode graphIRI,
-			SecTriple triple) {
+	public boolean evaluateAny(Object principal, Set<Action> actions, Node graphIRI,
+			Triple triple) {
 		return evaluate( principal, triple );
 	}
 
@@ -213,7 +206,7 @@ public class ShiroExampleEvaluator implements SecurityEvaluator {
 	 * they have access to. (e.g. they can not remvoe themself from the messsage). 
 	 */
 	@Override
-	public boolean evaluateUpdate(Object principal, SecNode graphIRI, SecTriple from, SecTriple to) {
+	public boolean evaluateUpdate(Object principal, Node graphIRI, Triple from, Triple to) {
 		return evaluate( principal, from ) && evaluate( principal, to );
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/SecuredItem.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/SecuredItem.java b/jena-permissions/src/main/java/org/apache/jena/permissions/SecuredItem.java
new file mode 100644
index 0000000..6c4021f
--- /dev/null
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/SecuredItem.java
@@ -0,0 +1,241 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jena.permissions;
+
+import org.apache.jena.graph.FrontsTriple;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
+
+/**
+ * The secured item interface is mixed into instances of secured objects by the
+ * proxy. It provides the security context for the security checks as well as
+ * several useful shorthand methods for common checks.
+ */
+public interface SecuredItem
+{
+	
+	/**
+	 * Utilities for SecuredItem implementations.
+	 */
+	public static class Util
+	{
+		/**
+		 * Secured items are equivalent if their security evaluators and
+		 * modelIRIs are equal.
+		 * 
+		 * @param si1
+		 *            A secured item to check
+		 * @param si2
+		 *            A second secured item to check
+		 * @return true if si1 is equivalent to si2.
+		 */
+		public static boolean isEquivalent( final SecuredItem si1,
+				final SecuredItem si2 )
+		{
+			return si1.getSecurityEvaluator()
+					.equals(si2.getSecurityEvaluator())
+					&& si1.getModelIRI().equals(si2.getModelIRI());
+		}
+		
+		public static String modelPermissionMsg( final Node modelURI )
+		{
+			return String.format("Model permissions violation: %s", modelURI);
+		}
+		
+		public static String triplePermissionMsg( final Node modelURI )
+		{
+			return String.format("Triple permissions violation: %s", modelURI);
+		}
+	}
+
+	/**
+	 * @return true if the securedModel allows items to to be created.
+	 */
+	public boolean canCreate();
+
+	/**
+	 * Return true if the triple can be created.
+	 * If any s,p or o is SecNode.ANY then this method must return false if
+	 * there
+	 * are
+	 * any restrictions where the remaining nodes and held constant and the ANY
+	 * node
+	 * is allowed to vary.
+	 * 
+	 * See canRead(Triple t)
+	 * 
+	 * @param t
+	 *            The triple to check
+	 * @return true if the triple can be created.
+	 */
+	public boolean canCreate( Triple t );
+
+	
+	/**
+	 * Return true if the fronted triple can be created.
+	 * 
+	 * See canRead(Triple t)
+	 * 
+	 * @param t
+	 *            The fronted triple to check
+	 * @return true if the triple can be created.
+	 */
+	public boolean canCreate( FrontsTriple t );
+	
+	/**
+	 * @return true if the securedModel allows items to to be deleted.
+	 */
+	public boolean canDelete();
+
+	/**
+	 * Return true if the triple can be deleted.
+	 * If any s,p or o is SecNode.ANY then this method must return false if
+	 * there
+	 * are
+	 * any restrictions where the remaining nodes and held constant and the ANY
+	 * node
+	 * is allowed to vary.
+	 * 
+	 * See canRead(Triple t)
+	 * 
+	 * @param t
+	 *            The triple to check
+	 * @return true if the triple can be deleted.
+	 */
+	public boolean canDelete( Triple t );
+	
+	/**
+	 * Return true if the fronted triple can be deleted.
+	 * 
+	 * See canRead(Triple t)
+	 * 
+	 * @param t
+	 *            The fronted triple to check
+	 * @return true if the triple can be deleted.
+	 */
+	public boolean canDelete( FrontsTriple t );
+
+	/**
+	 * @return true if the securedModel allows items to to be read.
+	 */
+	public boolean canRead();
+
+	/**
+	 * Return true if the triple can be read.
+	 * If any s,p or o is SecNode.ANY then this method must return false if
+	 * there
+	 * are
+	 * any restrictions where the remaining nodes and held constant and the ANY
+	 * node
+	 * is allowed to vary.
+	 * 
+	 * (S, P, O) check if S,P,O can be read.
+	 * (S, P, ANY) check if there are any S,P,x restrictions.
+	 * (S, ANY, P) check if there are any S,x,P restrictions.
+	 * (ANY, ANY, ANY) check if there are any restricitons on reading.
+	 * 
+	 * @param t
+	 *            The triple to check
+	 * @return true if the triple can be read.
+	 */
+	public boolean canRead( Triple t );
+
+	/**
+	 * Return true if the fronted triple can be read.
+	 * 
+	 * @param t
+	 *            The frontedtriple to check
+	 * @return true if the triple can be read.
+	 */
+	public boolean canRead( FrontsTriple t );
+	
+	/**
+	 * @return true if the securedModel allows items to to be updated.
+	 */
+	public boolean canUpdate();
+
+	/**
+	 * Return true if the triple can be updated.
+	 * If any s,p or o is SecNode.ANY then this method must return false if
+	 * there
+	 * are
+	 * any restrictions where the remaining nodes and held constant and the ANY
+	 * node
+	 * is allowed to vary.
+	 * 
+	 * See canRead(Triple t)
+	 * 
+	 * @param from
+	 *            The triple that will be changed
+	 * @param to
+	 *            The resulting triple.
+	 * @return true if the from triple can be updated as the to triple.
+	 */
+	public boolean canUpdate( Triple from, Triple to );
+
+	/**
+	 * Return true if the fronted triple can be updated.
+	 * 
+	 * 
+	 * See canUpdate(Triple from, Triple to)
+	 * 
+	 * @param from
+	 *            The fronted triple that will be changed
+	 * @param to
+	 *            The resulting fronted triple.
+	 * @return true if the from triple can be updated as the to triple.
+	 */
+	public boolean canUpdate( FrontsTriple from, FrontsTriple to );
+	
+	@Override
+	public boolean equals( Object o );
+
+	/**
+	 * @return the base item that is being secured.
+	 */
+	public Object getBaseItem();
+
+	/**
+	 * @return The IRI of the securedModel that the item belongs to.
+	 */
+	public String getModelIRI();
+
+	/**
+	 * @return The node representation of the securedModel IRI.
+	 */
+	public Node getModelNode();
+
+	/**
+	 * The SecurityEvaluator implementation that is being used to determine
+	 * access.
+	 * 
+	 * @return The SecurityEvaluator implementation.
+	 */
+	public SecurityEvaluator getSecurityEvaluator();
+
+	/**
+	 * Return true if this secured item is equivalent to another secured item.
+	 * Generally implemented by calling SecuredItem.Util.isEquivalent
+	 * 
+	 * @param securedItem
+	 *            the other secured item.
+	 * @return True if they are equivalent, false otherwise.
+	 */
+	public boolean isEquivalent( SecuredItem securedItem );
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java
index bf52c5b..bb10e7c 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/SecurityEvaluator.java
@@ -22,14 +22,10 @@ import java.util.Collection;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.apache.jena.graph.FrontsNode;
-import org.apache.jena.graph.FrontsTriple;
 import org.apache.jena.graph.Node;
-import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.graph.Triple;
-import org.apache.jena.graph.impl.LiteralLabel;
-import org.apache.jena.graph.impl.LiteralLabelFactory;
+import org.apache.jena.graph.NodeFactory;
+
 
 /**
  * SecurityEvaluator.
@@ -79,8 +75,8 @@ import org.apache.jena.graph.impl.LiteralLabelFactory;
  * If the system does support triple level security and is unable to verify that
  * the user can execute the CRUD action against any arbitrary triple the system
  * should return <code>false</code>. </li>
- * <li>See <code>SecNode.ANY</code>, <code>SecNode.FUTURE</code>, and
- * <code>SecNode.VARIABLE</code> for discussion of specifics of their respective
+ * <li>See <code>Node.ANY</code>, <code>SecurityEvaluator.FUTURE</code>, and
+ * <code>SecurityEvaluator.VARIABLE</code> for discussion of specifics of their respective
  * usages.</li>
  * </ul>
  * </p>
@@ -116,317 +112,6 @@ public interface SecurityEvaluator {
 	}
 
 	/**
-	 * A node in the evaluation.
-	 * <p>
-	 * A node with no value represents a node of that type but unknown
-	 * exactitude. (e.g. <code>SecNode(URI,"")</code> is a URI but of unknown
-	 * value. Useful for systems that restrict type creation.
-	 * </p>
-	 * <p>
-	 * <code>SecNode(Anonymous,"")</code> represents an anonymous node that will
-	 * be created. Otherwise anonymous node values are the values within the
-	 * secured graph.
-	 * </p>
-	 * <p>
-	 * An "Any" node type matches any node.
-	 * </p>
-	 */
-	public static class SecNode implements Comparable<SecNode>, FrontsNode {
-
-		/**
-		 * The types of nodes.
-		 */
-		public static enum Type {
-			/**
-			 * A URI type node
-			 */
-			URI,
-			/**
-			 * A Literal node.
-			 */
-			Literal,
-			/**
-			 * An anonymous node. Also called a "blank" node.
-			 */
-			Anonymous,
-			/**
-			 * Any node.
-			 */
-			Any
-		}
-
-		/**
-		 * Matches any node in the security system.
-		 * <p>
-		 * Used in triple checks as follows:
-		 * <dl>
-		 * <dt><code>(ANY, ANY, ANY)</code></dt>
-		 * <dd>Asks if the user may perform the action on any triple.</dd>
-		 * <dt><code>(X, ANY, ANY)</code></dt>
-		 * <dd>Asks if the user may perform the action against any triple where
-		 * X is the subject.</dd>
-		 * <dt><code>(ANY, X, ANY)</code></dt>
-		 * <dd>Asks if the user may perform the action against any triple where
-		 * X is the predicate.</dd>
-		 * <dt><code>(SecNode.ANY, SecNode.ANY, SecNode.X)</code></dt>
-		 * <dd>Asks if if the user may perform the action against any triple
-		 * where X is the object.</dd>
-		 * </dl>
-		 * The <code>ANY</code> may occur multiple times and may occur with the
-		 * <code>VARIABLE</code> and/or <code>FUTURE</code> nodes.
-		 * </p>
-		 */
-		public static final SecNode ANY = new SecNode(Type.Any, "any");
-
-		/**
-		 * Indicates a variable in the triple.
-		 * <p>
-		 * </p>
-		 * This differs from <code>ANY</code> in that the system is asking if
-		 * there are any prohibitions not if the user may perform. Thus queries
-		 * with the VARIABLE type node should return <code>true</code> where
-		 * <code>ANY</code> returns <code>false</code>. In general this type is
-		 * used in the query to determine if triple level filtering of results
-		 * must be performed.
-		 * <p>
-		 * </p>
-		 * <p>
-		 * <dl>
-		 * <dt><code>(VARIABLE, X, Y )</code></dt>
-		 * <dd>
-		 * Asks if there are any prohibitions against the user seeing all
-		 * subjects that have property X and object Y.</dd>
-		 * <dt>
-		 * <code>(X, VARIABLE, Y )</code></dt>
-		 * <dd>
-		 * Asks if there are any prohibitions against the user seeing all
-		 * predicates that have subject X and object Y.</dd>
-		 * <dt>
-		 * <code>(X, Y, VARIABLE)</code></dt>
-		 * <dd>
-		 * Asks if there are any prohibitions against the user seeing all
-		 * objects that have subject X and predicate Y.</dd>
-		 * </dl>
-		 * The <code>VARIABLE</code> may occur multiple times and may occur with
-		 * the <code>ANY</code> node.
-		 * </p>
-		 * 
-		 */
-		public static final SecNode VARIABLE = new SecNode(Type.Any, "variable");
-
-		/**
-		 * This is an anonymous node that will be created in the future.
-		 * <p>
-		 * FUTURE is used to check that an anonymous node may be created in as
-		 * specific position in a triple.
-		 * </p>
-		 * <p>
-		 * <dl>
-		 * <dt><code>(FUTURE, X, Y )</code></dt>
-		 * <dd>
-		 * Asks if there the user may create an anonymous node that has property
-		 * X and object Y.</dd>
-		 * <dt>
-		 * <code>(X, Y, FUTURE)</code></dt>
-		 * <dd>
-		 * Asks if there the user may create an anonymous node that has subject
-		 * X and property Y.</dd>
-		 * </dl>
-		 * The <code>FUTURE</code> may occur multiple times and may occur with
-		 * the <code>ANY</code> node.
-		 * </p>
-		 */
-		public static final SecNode FUTURE = new SecNode(Type.Anonymous, "");
-
-		private final Type type;
-		private final String value;
-		private Integer hashCode;
-
-		/**
-		 * Create a SecNode of the type and value.
-		 * 
-		 * @param type
-		 *            The type of the node
-		 * @param value
-		 *            The value of the node. A null is interpreted as an empty
-		 *            string.
-		 */
-		public SecNode(final Type type, final String value) {
-			this.type = type;
-			this.value = value == null ? "" : value;
-		}
-
-		@Override
-		public int compareTo(final SecNode node) {
-			final int retval = type.compareTo(node.type);
-			return retval == 0 ? value.compareTo(node.value) : retval;
-		}
-
-		@Override
-		public boolean equals(final Object o) {
-			if (o instanceof SecNode) {
-				return this.compareTo((SecNode) o) == 0;
-			}
-			return false;
-		}
-
-		/**
-		 * Get the type of the node.
-		 * 
-		 * @return The type of the node.
-		 */
-		public Type getType() {
-			return type;
-		}
-
-		/**
-		 * Get the value of the node.
-		 * 
-		 * @return the value of the node
-		 */
-		public String getValue() {
-			return value;
-		}
-
-		@Override
-		public int hashCode() {
-			if (hashCode == null) {
-				hashCode = new HashCodeBuilder().append(type).append(value)
-						.toHashCode();
-			}
-			return hashCode;
-		}
-
-		@Override
-		public String toString() {
-			return String.format("[%s:%s]", getType(), getValue());
-		}
-
-		@Override
-		public Node asNode() {
-			switch (type) {
-			case Anonymous:
-				return NodeFactory.createBlankNode( value );
-			case Any:
-				return Node.ANY;
-			case Literal:
-				LiteralLabel lit = LiteralLabelFactory.create(value, (String)null);
-				return NodeFactory.createLiteral(lit);
-			case URI:
-				return NodeFactory.createURI( value );
-			
-			default :
-				return Node.ANY;
-			}
-		}
-	}
-
-	/**
-	 * An immutable triple of SecNodes.
-	 */
-	public static class SecTriple implements Comparable<SecTriple>, FrontsTriple {
-		private final SecNode subject;
-		private final SecNode predicate;
-		private final SecNode object;
-		private transient Integer hashCode;
-
-		/**
-		 * The triple of <code>(ANY, ANY, ANY)</code>.
-		 */
-		public static final SecTriple ANY = new SecTriple(SecNode.ANY,
-				SecNode.ANY, SecNode.ANY);
-
-		/**
-		 * Create the sec triple
-		 * 
-		 * @param subject
-		 *            The subject node.
-		 * @param predicate
-		 *            The predicate node.
-		 * @param object
-		 *            The object node.
-		 * @throws IllegalArgumentException
-		 *             is any value is null.
-		 */
-		public SecTriple(final SecNode subject, final SecNode predicate,
-				final SecNode object) {
-			if (subject == null) {
-				throw new IllegalArgumentException("Subject may not be null");
-			}
-			if (predicate == null) {
-				throw new IllegalArgumentException("Predicate may not be null");
-			}
-			if (object == null) {
-				throw new IllegalArgumentException("Object may not be null");
-			}
-			this.subject = subject;
-			this.predicate = predicate;
-			this.object = object;
-		}
-
-		@Override
-		public int compareTo(final SecTriple o) {
-			if (o == null) {
-				return 1;
-			}
-			int retval = subject.compareTo(o.subject);
-			if (retval == 0) {
-				retval = predicate.compareTo(o.predicate);
-			}
-			return retval == 0 ? object.compareTo(o.object) : retval;
-		}
-
-		@Override
-		public boolean equals(final Object o) {
-			if (o instanceof SecTriple) {
-				return this.compareTo((SecTriple) o) == 0;
-			}
-			return false;
-		}
-
-		/**
-		 * @return the object node.
-		 */
-		public SecNode getObject() {
-			return object;
-		}
-
-		/**
-		 * @return the predicate node.
-		 */
-		public SecNode getPredicate() {
-			return predicate;
-		}
-
-		/**
-		 * @return the subject node.
-		 */
-		public SecNode getSubject() {
-			return subject;
-		}
-
-		@Override
-		public int hashCode() {
-			if (hashCode == null) {
-				hashCode = new HashCodeBuilder().append(object)
-						.append(predicate).append(subject).toHashCode();
-			}
-			return hashCode;
-		}
-
-		@Override
-		public String toString() {
-			return String.format("( %s, %s, %s )", getSubject(),
-					getPredicate(), getObject());
-		}
-
-		@Override
-		public Triple asTriple() {
-			return new Triple( subject.asNode(), predicate.asNode(), object.asNode() );
-		}
-	}
-
-	/**
 	 * A collection of utility functions for the SecurityEvaluator
 	 * implementations.
 	 */
@@ -466,6 +151,66 @@ public interface SecurityEvaluator {
 	}
 
 	/**
+	 * Indicates a variable in the triple.
+	 * <p>
+	 * </p>
+	 * This differs from <code>ANY</code> in that the system is asking if
+	 * there are any prohibitions not if the user may perform. Thus queries
+	 * with the VARIABLE type node should return <code>true</code> where
+	 * <code>ANY</code> returns <code>false</code>. In general this type is
+	 * used in the query to determine if triple level filtering of results
+	 * must be performed.
+	 * <p>
+	 * </p>
+	 * <p>
+	 * <dl>
+	 * <dt><code>(VARIABLE, X, Y )</code></dt>
+	 * <dd>
+	 * Asks if there are any prohibitions against the user seeing all
+	 * subjects that have property X and object Y.</dd>
+	 * <dt>
+	 * <code>(X, VARIABLE, Y )</code></dt>
+	 * <dd>
+	 * Asks if there are any prohibitions against the user seeing all
+	 * predicates that have subject X and object Y.</dd>
+	 * <dt>
+	 * <code>(X, Y, VARIABLE)</code></dt>
+	 * <dd>
+	 * Asks if there are any prohibitions against the user seeing all
+	 * objects that have subject X and predicate Y.</dd>
+	 * </dl>
+	 * The <code>VARIABLE</code> may occur multiple times and may occur with
+	 * the <code>ANY</code> node.
+	 * </p>
+	 * 
+	 */
+	public static final Node VARIABLE = NodeFactory.createBlankNode( "urn:jena-permissions:VARIABLE");
+
+	/**
+	 * This is a blank (anonymous) node that will be created in the future.
+	 * <p>
+	 * FUTURE is used to check that a blank node may be created in as
+	 * specific position in a triple.
+	 * </p>
+	 * <p>
+	 * <dl>
+	 * <dt><code>(FUTURE, X, Y )</code></dt>
+	 * <dd>
+	 * Asks if there the user may create a blank node that has property
+	 * X and object Y.</dd>
+	 * <dt>
+	 * <code>(X, Y, FUTURE)</code></dt>
+	 * <dd>
+	 * Asks if there the user may create a blank node that has subject
+	 * X and property Y.</dd>
+	 * </dl>
+	 * The <code>FUTURE</code> may occur multiple times and may occur with
+	 * the <code>ANY</code> node.
+	 * </p>
+	 */
+	public static final Node FUTURE = NodeFactory.createBlankNode( "urn:jena-permissions:FUTURE");
+	
+	/**
 	 * Determine if the action is allowed on the graph.
 	 *
 	 * @param principal
@@ -478,7 +223,7 @@ public interface SecurityEvaluator {
 	 * @return true if the action is allowed, false otherwise.
 	 * 
 	 */
-	public boolean evaluate(Object principal, Action action, SecNode graphIRI);
+	public boolean evaluate(Object principal, Action action, Node graphIRI);
 
 	/**
 	 * Determine if the action is allowed on the triple within the graph.
@@ -524,8 +269,8 @@ public interface SecurityEvaluator {
 	 * @throws IllegalArgumentException
 	 *             if any argument is null.
 	 */
-	public boolean evaluate(Object principal, Action action, SecNode graphIRI,
-			SecTriple triple);
+	public boolean evaluate(Object principal, Action action, Node graphIRI,
+			Triple triple);
 
 	/**
 	 * Determine if all actions are allowed on the graph.
@@ -543,12 +288,12 @@ public interface SecurityEvaluator {
 	 *             if any argument is null.
 	 */
 	public boolean evaluate(Object principal, Set<Action> actions,
-			SecNode graphIRI);
+			Node graphIRI);
 
 	/**
 	 * Determine if all the actions are allowed on the triple within the graph.
 	 * <p>
-	 * See evaluate( Action, SecNode, SecTriple ) for discussion of evaluation
+	 * See evaluate( Action, Node, Triple ) for discussion of evaluation
 	 * strategy.
 	 * </p>
 	 * 
@@ -564,7 +309,7 @@ public interface SecurityEvaluator {
 	 *             if any argument is null.
 	 */
 	public boolean evaluate(Object principal, Set<Action> actions,
-			SecNode graphIRI, SecTriple triple);
+			Node graphIRI, Triple triple);
 
 	/**
 	 * Determine if any of the actions are allowed on the graph.
@@ -582,13 +327,13 @@ public interface SecurityEvaluator {
 	 *             if any argument is null.
 	 */
 	public boolean evaluateAny(Object principal, Set<Action> actions,
-			SecNode graphIRI);
+			Node graphIRI);
 
 	/**
 	 * Determine if any of the actions are allowed on the triple within the
 	 * graph.
 	 * <p>
-	 * See evaluate( Action, SecNode, SecTriple ) for discussion of evaluation
+	 * See evaluate( Action, Node, Triple ) for discussion of evaluation
 	 * strategy.
 	 * </p>
 	 *
@@ -607,7 +352,7 @@ public interface SecurityEvaluator {
 	 *             if any argument is null.
 	 */
 	public boolean evaluateAny(Object principal, Set<Action> actions,
-			SecNode graphIRI, SecTriple triple);
+			Node graphIRI, Triple triple);
 
 	/**
 	 * Determine if the user is allowed to update the "from" triple to the "to"
@@ -630,8 +375,8 @@ public interface SecurityEvaluator {
 	 * @throws IllegalArgumentException
 	 *             if any argument is null.
 	 */
-	public boolean evaluateUpdate(Object principal, SecNode graphIRI,
-			SecTriple from, SecTriple to);
+	public boolean evaluateUpdate(Object principal, Node graphIRI,
+			Triple from, Triple to);
 
 	/**
 	 * returns the current principal or null if there is no current principal.

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredCapabilities.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredCapabilities.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredCapabilities.java
index 1cb3890..67cf047 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredCapabilities.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredCapabilities.java
@@ -18,11 +18,11 @@
 package org.apache.jena.permissions.graph;
 
 import org.apache.jena.graph.Capabilities ;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type;
 
 /**
  * The interface for secured Capabilities instances.
@@ -33,7 +33,7 @@ public class SecuredCapabilities implements Capabilities
 	// the security evaluator in use
 	private final SecurityEvaluator securityEvaluator;
 	// the graphIRI that the capabilities belong to.
-	private final SecNode graphIRI;
+	private final Node graphIRI;
 	// the unsecured capabilities.
 	private final Capabilities capabilities;
 
@@ -51,7 +51,7 @@ public class SecuredCapabilities implements Capabilities
 			final String graphURI, final Capabilities capabilities )
 	{
 		this.securityEvaluator = securityEvaluator;
-		this.graphIRI = new SecNode(Type.URI, graphURI);
+		this.graphIRI = NodeFactory.createURI(graphURI);
 		this.capabilities = capabilities;
 	}
 
@@ -80,7 +80,7 @@ public class SecuredCapabilities implements Capabilities
 		{
 			// special security check
 			retval = securityEvaluator.evaluate(principal, Action.Create, graphIRI,
-					SecTriple.ANY);
+					Triple.ANY);
 		}
 		return retval;
 	}
@@ -116,7 +116,7 @@ public class SecuredCapabilities implements Capabilities
 		{
 			// special security check
 			retval = securityEvaluator.evaluate(principal, Action.Delete, graphIRI,
-					SecTriple.ANY);
+					Triple.ANY);
 		}
 		return retval;
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraph.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraph.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraph.java
index 824dceb..a3ff312 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraph.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraph.java
@@ -22,8 +22,8 @@ import org.apache.jena.graph.GraphStatisticsHandler ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
 import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
 import org.apache.jena.shared.AddDeniedException ;
 import org.apache.jena.shared.DeleteDeniedException ;
 import org.apache.jena.util.iterator.ExtendedIterator ;
@@ -33,7 +33,7 @@ import org.apache.jena.util.iterator.ExtendedIterator ;
  * 
  * Use the SecuredGraph.Factory to create instances
  */
-public interface SecuredGraph extends Graph
+public interface SecuredGraph extends Graph, SecuredItem
 {
 
 	/**
@@ -100,7 +100,11 @@ public interface SecuredGraph extends Graph
 	@Override
 	public SecuredGraphEventManager getEventManager();
 
-	public SecNode getModelNode();
+	/**
+	 * Return the name of the graph.
+	 * @return The name of the graph as a node.
+	 */
+	public Node getModelNode();
 
 	@Override
 	public SecuredPrefixMapping getPrefixMapping();

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
index 3b981e4..3b11b80 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java
@@ -35,7 +35,6 @@ import org.apache.jena.graph.Triple ;
 import org.apache.jena.graph.impl.CollectionGraph ;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.graph.impl.SecuredGraphImpl;
 import org.apache.jena.permissions.impl.CachedSecurityEvaluator;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.permissions.utils.PermTripleFilter;
@@ -64,12 +63,12 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		private Triple[] getArray(final Graph g, final Triple[] triples,
 				final Set<Action> perms) {
 			Triple[] retval = triples;
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				if (evaluator.evaluateAny(runAs, perms, sg.getModelNode())) {
 					if (!evaluator.evaluateAny(runAs, perms, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						final List<Triple> list = wrapPermIterator(sg,
 								Arrays.asList(triples).iterator(), perms)
 								.toList();
@@ -106,7 +105,7 @@ public class SecuredGraphEventManager implements GraphEventManager {
 						sg.getModelNode())) {
 					if (!evaluator.evaluateAny(runAs,
 							SecuredGraphEventManager.ADD, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						final List<Triple> lst = added.find(Triple.ANY)
 								.toList();
 						addGraph = new CollectionGraph(Arrays.asList(getArray(
@@ -131,8 +130,8 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		@Override
 		public void notifyAddIterator(final Graph g, final Iterator<Triple> it) {
 
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				// only report if we can write to the graph
 				if (evaluator.evaluateAny(runAs, SecuredGraphEventManager.ADD,
@@ -155,14 +154,14 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		@Override
 		public void notifyAddList(final Graph g, final List<Triple> triples) {
 			List<Triple> list = triples;
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				if (evaluator.evaluateAny(runAs, SecuredGraphEventManager.ADD,
 						sg.getModelNode())) {
 					if (!evaluator.evaluateAny(runAs,
 							SecuredGraphEventManager.ADD, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						list = wrapPermIterator(sg, triples.iterator(),
 								SecuredGraphEventManager.ADD).toList();
 					}
@@ -191,8 +190,7 @@ public class SecuredGraphEventManager implements GraphEventManager {
 						SecuredGraphEventManager.ADD, sg.getModelNode());
 				if (notify) {
 					notify = evaluator.evaluateAny(runAs,
-							SecuredGraphEventManager.ADD, sg.getModelNode(),
-							SecuredItemImpl.convert(t));
+							SecuredGraphEventManager.ADD, sg.getModelNode(), t);
 				}
 			}
 			else {
@@ -206,14 +204,14 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		@Override
 		public void notifyDeleteArray(final Graph g, final Triple[] triples) {
 			Triple[] deleted = triples;
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				if (evaluator.evaluateAny(runAs,
 						SecuredGraphEventManager.DELETE, sg.getModelNode())) {
 					if (!evaluator.evaluateAny(runAs,
 							SecuredGraphEventManager.DELETE, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						final List<Triple> list = wrapPermIterator(sg,
 								Arrays.asList(triples).iterator(),
 								SecuredGraphEventManager.DELETE).toList();
@@ -235,15 +233,15 @@ public class SecuredGraphEventManager implements GraphEventManager {
 
 		@Override
 		public void notifyDeleteGraph(final Graph g, final Graph removed) {
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				if (evaluator.evaluateAny(runAs,
 						SecuredGraphEventManager.DELETE, sg.getModelNode())) {
 					Graph g2 = removed;
 					if (!evaluator.evaluateAny(runAs,
 							SecuredGraphEventManager.DELETE, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						g2 = new CollectionGraph(
 								removed.find(Triple.ANY)
 								.filterKeep(
@@ -268,15 +266,15 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		public void notifyDeleteIterator(final Graph g,
 				final Iterator<Triple> it) {
 			Iterator<Triple> iter = it;
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				if (evaluator.evaluateAny(runAs,
 						SecuredGraphEventManager.DELETE, sg.getModelNode())) {
 
 					if (!evaluator.evaluateAny(runAs,
 							SecuredGraphEventManager.DELETE, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						iter = WrappedIterator.create(it).filterKeep(
 								new PermTripleFilter(
 										SecuredGraphEventManager.DELETE, sg,
@@ -298,14 +296,14 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		@Override
 		public void notifyDeleteList(final Graph g, final List<Triple> triples) {
 			List<Triple> list = triples;
-			if (g instanceof SecuredGraphImpl) {
-				final SecuredGraphImpl sg = (SecuredGraphImpl) g;
+			if (g instanceof SecuredGraph) {
+				final SecuredGraph sg = (SecuredGraph) g;
 				final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 				if (evaluator.evaluateAny(runAs,
 						SecuredGraphEventManager.DELETE, sg.getModelNode())) {
 					if (!evaluator.evaluateAny(runAs,
 							SecuredGraphEventManager.DELETE, sg.getModelNode(),
-							SecuredItemImpl.convert(Triple.ANY))) {
+							Triple.ANY)) {
 						list = WrappedIterator
 								.create(triples.iterator())
 								.filterKeep(
@@ -335,8 +333,7 @@ public class SecuredGraphEventManager implements GraphEventManager {
 						SecuredGraphEventManager.DELETE, sg.getModelNode());
 				if (notify) {
 					notify = evaluator.evaluateAny(runAs,
-							SecuredGraphEventManager.DELETE, sg.getModelNode(),
-							SecuredItemImpl.convert(t));
+							SecuredGraphEventManager.DELETE, sg.getModelNode(), t);
 				}
 			}
 			else {
@@ -353,11 +350,11 @@ public class SecuredGraphEventManager implements GraphEventManager {
 		}
 
 		private ExtendedIterator<Triple> wrapPermIterator(
-				final SecuredGraphImpl sg, final Iterator<Triple> it,
+				final SecuredGraph sg, final Iterator<Triple> it,
 				final Set<Action> perms) {
 			final SecurityEvaluator evaluator = new CachedSecurityEvaluator(sg.getSecurityEvaluator(), runAs);
 			if (!evaluator.evaluateAny(runAs, perms, sg.getModelNode(),
-					SecuredItemImpl.convert(Triple.ANY))) {
+					Triple.ANY)) {
 				// nope so wrap the iterator with security iterator
 				return WrappedIterator.create(it).filterKeep(
 						new PermTripleFilter(perms, sg, evaluator));
@@ -372,7 +369,6 @@ public class SecuredGraphEventManager implements GraphEventManager {
 	private final Graph baseGraph;
 	private final Map<GraphListener, Stack<SecuredGraphListener>> listenerMap = new HashMap<GraphListener, Stack<SecuredGraphListener>>();
 	private static Set<Action> DELETE;
-
 	private static Set<Action> ADD;
 
 	static {

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredPrefixMapping.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredPrefixMapping.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredPrefixMapping.java
index 899b80c..283f752 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredPrefixMapping.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredPrefixMapping.java
@@ -20,8 +20,8 @@ package org.apache.jena.permissions.graph;
 import java.util.Map;
 
 import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.UpdateDeniedException;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.shared.PrefixMapping ;
 
 /**

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/graph/impl/SecuredGraphImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/impl/SecuredGraphImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/impl/SecuredGraphImpl.java
index 9f2a881..2268013 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/impl/SecuredGraphImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/impl/SecuredGraphImpl.java
@@ -18,12 +18,12 @@
 package org.apache.jena.permissions.graph.impl;
 
 import org.apache.jena.graph.* ;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
 import org.apache.jena.permissions.UpdateDeniedException;
 import org.apache.jena.permissions.graph.*;
 import org.apache.jena.permissions.impl.ItemHolder;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.permissions.utils.PermTripleFilter;
 import org.apache.jena.shared.AddDeniedException ;

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java
index 7c14a3b..b27bde7 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/CachedSecurityEvaluator.java
@@ -19,6 +19,8 @@ package org.apache.jena.permissions.impl;
 
 import java.util.Set;
 
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.SecurityEvaluator;
 
 /**
@@ -41,44 +43,44 @@ public class CachedSecurityEvaluator implements SecurityEvaluator {
 
 	@Override
 	public boolean evaluate(final Object principal, final Action action,
-			final SecNode graphIRI) {
+			final Node graphIRI) {
 		return wrapped.evaluate(principal, action, graphIRI);
 	}
 
 	@Override
 	public boolean evaluate(final Object principal, final Action action,
-			final SecNode graphIRI, final SecTriple triple) {
+			final Node graphIRI, final Triple triple) {
 		return wrapped.evaluate(principal, action, graphIRI, triple);
 	}
 
 	@Override
 	public boolean evaluate(final Object principal, final Set<Action> actions,
-			final SecNode graphIRI) {
+			final Node graphIRI) {
 		return wrapped.evaluate(principal, actions, graphIRI);
 	}
 
 	@Override
 	public boolean evaluate(final Object principal, final Set<Action> actions,
-			final SecNode graphIRI, final SecTriple triple) {
+			final Node graphIRI, final Triple triple) {
 		return wrapped.evaluate(principal, actions, graphIRI, triple);
 	}
 
 	@Override
 	public boolean evaluateAny(final Object principal,
-			final Set<Action> actions, final SecNode graphIRI) {
+			final Set<Action> actions, final Node graphIRI) {
 		return wrapped.evaluateAny(principal, actions, graphIRI);
 	}
 
 	@Override
 	public boolean evaluateAny(final Object principal,
-			final Set<Action> actions, final SecNode graphIRI,
-			final SecTriple triple) {
+			final Set<Action> actions, final Node graphIRI,
+			final Triple triple) {
 		return wrapped.evaluateAny(principal, actions, graphIRI, triple);
 	}
 
 	@Override
 	public boolean evaluateUpdate(final Object principal,
-			final SecNode graphIRI, final SecTriple from, final SecTriple to) {
+			final Node graphIRI, final Triple from, final Triple to) {
 		return wrapped.evaluateUpdate(principal, graphIRI, from, to);
 	}
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/impl/ItemHolder.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/ItemHolder.java b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/ItemHolder.java
index e5b52d0..d0dab31 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/ItemHolder.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/ItemHolder.java
@@ -22,6 +22,7 @@ import java.util.LinkedHashSet;
 import java.util.Set;
 
 import org.apache.commons.lang3.ClassUtils;
+import org.apache.jena.permissions.SecuredItem;
 
 /**
  * A class that holds the original item and the secured version of it.

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItem.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItem.java b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItem.java
deleted file mode 100644
index 10f0d7c..0000000
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItem.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.jena.permissions.impl;
-
-import org.apache.jena.permissions.SecurityEvaluator;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
-
-/**
- * The secured item interface is mixed into instances of secured objects by the
- * proxy. It provides the security context for the security checks as well as
- * several useful shorthand methods for common checks.
- */
-public interface SecuredItem
-{
-	
-	/**
-	 * Utilities for SecuredItem implementations.
-	 */
-	public static class Util
-	{
-		/**
-		 * Secured items are equivalent if their security evaluators and
-		 * modelIRIs are equal.
-		 * 
-		 * @param si1
-		 *            A secured item to check
-		 * @param si2
-		 *            A second secured item to check
-		 * @return true if si1 is equivalent to si2.
-		 */
-		public static boolean isEquivalent( final SecuredItem si1,
-				final SecuredItem si2 )
-		{
-			return si1.getSecurityEvaluator()
-					.equals(si2.getSecurityEvaluator())
-					&& si1.getModelIRI().equals(si2.getModelIRI());
-		}
-		
-		public static String modelPermissionMsg( final SecNode modelURI )
-		{
-			return String.format("Model permissions violation: %s", modelURI);
-		}
-		
-		public static String triplePermissionMsg( final SecNode modelURI )
-		{
-			return String.format("Triple permissions violation: %s", modelURI);
-		}
-	}
-
-	/**
-	 * @return true if the securedModel allows items to to be created.
-	 */
-	public boolean canCreate();
-
-	/**
-	 * Return true if the triple can be created.
-	 * If any s,p or o is SecNode.ANY then this method must return false if
-	 * there
-	 * are
-	 * any restrictions where the remaining nodes and held constant and the ANY
-	 * node
-	 * is allowed to vary.
-	 * 
-	 * See canRead(SecTriple t)
-	 * 
-	 * @param t
-	 *            The triple to check
-	 * @return true if the triple can be created.
-	 */
-	public boolean canCreate( SecTriple t );
-
-	/**
-	 * @return true if the securedModel allows items to to be deleted.
-	 */
-	public boolean canDelete();
-
-	/**
-	 * Return true if the triple can be deleted.
-	 * If any s,p or o is SecNode.ANY then this method must return false if
-	 * there
-	 * are
-	 * any restrictions where the remaining nodes and held constant and the ANY
-	 * node
-	 * is allowed to vary.
-	 * 
-	 * See canRead(SecTriple t)
-	 * 
-	 * @param t
-	 *            The triple to check
-	 * @return true if the triple can be deleted.
-	 */
-	public boolean canDelete( SecTriple t );
-
-	/**
-	 * @return true if the securedModel allows items to to be read.
-	 */
-	public boolean canRead();
-
-	/**
-	 * Return true if the triple can be read.
-	 * If any s,p or o is SecNode.ANY then this method must return false if
-	 * there
-	 * are
-	 * any restrictions where the remaining nodes and held constant and the ANY
-	 * node
-	 * is allowed to vary.
-	 * 
-	 * (S, P, O) check if S,P,O can be read.
-	 * (S, P, ANY) check if there are any S,P,x restrictions.
-	 * (S, ANY, P) check if there are any S,x,P restrictions.
-	 * (ANY, ANY, ANY) check if there are any restricitons on reading.
-	 * 
-	 * @param t
-	 *            The triple to check
-	 * @return true if the triple can be read.
-	 */
-	public boolean canRead( SecTriple t );
-
-	/**
-	 * @return true if the securedModel allows items to to be updated.
-	 */
-	public boolean canUpdate();
-
-	/**
-	 * Return true if the triple can be updated.
-	 * If any s,p or o is SecNode.ANY then this method must return false if
-	 * there
-	 * are
-	 * any restrictions where the remaining nodes and held constant and the ANY
-	 * node
-	 * is allowed to vary.
-	 * 
-	 * See canRead(SecTriple t)
-	 * 
-	 * @param from
-	 *            The triple that will be changed
-	 * @param to
-	 *            The resulting triple.
-	 * @return true if the from triple can be updated as the to triple.
-	 */
-	public boolean canUpdate( SecTriple from, SecTriple to );
-
-	@Override
-	public boolean equals( Object o );
-
-	/**
-	 * @return the base item that is being secured.
-	 */
-	public Object getBaseItem();
-
-	/**
-	 * @return The IRI of the securedModel that the item belongs to.
-	 */
-	public String getModelIRI();
-
-	/**
-	 * @return The node represnetation of the securedModel IRI.
-	 */
-	public SecNode getModelNode();
-
-	/**
-	 * The SecurityEvaluator implementation that is being used to determine
-	 * access.
-	 * 
-	 * @return The SecurityEvaluator implementation.
-	 */
-	public SecurityEvaluator getSecurityEvaluator();
-
-	/**
-	 * Return true if this secured item is equivalent to another secured item.
-	 * Generally implemented by calling SecuredItem.Util.isEquivalent
-	 * 
-	 * @param securedItem
-	 *            the other secured item.
-	 * @return True if they are equivalent, false otherwise.
-	 */
-	public boolean isEquivalent( SecuredItem securedItem );
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemImpl.java
index 1d535c2..209423c 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemImpl.java
@@ -22,16 +22,19 @@ import java.lang.reflect.Proxy;
 import org.apache.commons.collections4.map.LRUMap;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.jena.graph.FrontsTriple;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
 import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
-import org.apache.jena.permissions.SecurityEvaluator.SecNode.Type;
 import org.apache.jena.permissions.UpdateDeniedException;
-import org.apache.jena.rdf.model.Statement ;
 import org.apache.jena.shared.AddDeniedException;
 import org.apache.jena.shared.DeleteDeniedException;
+import org.apache.jena.sparql.expr.Expr;
+import org.apache.jena.sparql.util.NodeUtils;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 import org.apache.jena.vocabulary.RDF ;
 
@@ -49,62 +52,89 @@ public abstract class SecuredItemImpl implements SecuredItem
 	private class CacheKey implements Comparable<CacheKey>
 	{
 		private final Action action;
-		private final SecNode modelNode;
-		private final SecTriple from;
-		private final SecTriple to;
+		private final Node modelNode;
+		private final Triple from;
+		private final Triple to;
 		private Integer hashCode;
 
-		public CacheKey( final Action action, final SecNode modelNode )
+		public CacheKey( final Action action, final Node modelNode )
 		{
 			this(action, modelNode, null, null);
 		}
 
-		public CacheKey( final Action action, final SecNode modelNode,
-				final SecTriple to )
+		public CacheKey( final Action action, final Node modelNode,
+				final Triple to )
 		{
 			this(action, modelNode, to, null);
 		}
 
-		public CacheKey( final Action action, final SecNode modelNode,
-				final SecTriple to, final SecTriple from )
+		public CacheKey( final Action action, final Node modelNode,
+				final Triple to, final Triple from )
 		{
 			this.action = action;
 			this.modelNode = modelNode;
 			this.to = to;
 			this.from = from;
 		}
+		
+		private int compare(Node n1, Node n2)
+		{
+			if (Node.ANY.equals( n1 ))
+			{
+				if (Node.ANY.equals(n2))
+				{
+					return Expr.CMP_EQUAL;
+				}
+				return Expr.CMP_LESS;
+			}
+			if (Node.ANY.equals( n2 ))
+			{
+				return Expr.CMP_GREATER;
+			}
+			return NodeUtils.compareRDFTerms( n1, n2 );
+		}
 
+		private int compare(Triple t1, Triple t2)
+		{
+			if (t1 == null)
+			{
+				if (t2 == null)
+				{
+					return Expr.CMP_EQUAL;
+				}
+				return Expr.CMP_LESS;
+			}
+			if (t2 == null)
+			{
+				return Expr.CMP_GREATER;
+			}
+			int retval = compare(t1.getSubject(), t2.getSubject());
+			if (retval == Expr.CMP_EQUAL)
+			{
+				retval = compare(t1.getPredicate(), t2.getPredicate());
+			}
+			if (retval == Expr.CMP_EQUAL)
+			{
+				retval = compare(t1.getObject(), t2.getObject());
+			}
+			return retval;
+		}
+		
 		@Override
 		public int compareTo( final CacheKey other )
 		{
 			int retval = this.action.compareTo(other.action);
-			if (retval == 0)
+			if (retval == Expr.CMP_EQUAL)
 			{
-				retval = this.modelNode.compareTo(other.modelNode);
+				retval = NodeUtils.compareRDFTerms(this.modelNode,other.modelNode);
 			}
-			if (retval == 0)
+			if (retval == Expr.CMP_EQUAL)
 			{
-				if (this.to == null)
-				{
-					if (other.to == null)
-					{
-						return 0;
-					}
-					return -1;
-				}
-				retval = this.to.compareTo(other.to);
+				retval =compare(this.to, other.to);
 			}
-			if (retval == 0)
+			if (retval == Expr.CMP_EQUAL)
 			{
-				if (this.from == null)
-				{
-					if (other.from == null)
-					{
-						return 0;
-					}
-					return -1;
-				}
-				retval = this.from.compareTo(other.from);
+				retval = compare(this.from, other.from);
 			}
 			return retval;
 		}
@@ -134,34 +164,23 @@ public abstract class SecuredItemImpl implements SecuredItem
 	// the maximum size of the cache
 	public static int MAX_CACHE = 100;
 	// the cache for this thread.
-	public static final ThreadLocal<LRUMap> CACHE = new ThreadLocal<LRUMap>();
+	public static final ThreadLocal<LRUMap<CacheKey,Boolean>> CACHE = new ThreadLocal<LRUMap<CacheKey,Boolean>>();
 	// the number of times this thread has recursively called the constructor.
 	public static final ThreadLocal<Integer> COUNT = new ThreadLocal<Integer>();
 	
 	/**
-	 * Convert a Jena Node object into a SecNode object.
+	 * May Convert a Jena Node object into the SecurityEvaluator.VARIABLE instance.
 	 * @param jenaNode The Jena node to convert.
-	 * @return The SecNode that represents the jenaNode.
+	 * @return The Node that represents the jenaNode.
 	 */
-	public static SecNode convert( final org.apache.jena.graph.Node jenaNode )
+	private static Node convert( final Node jenaNode )
 	{
-		if (org.apache.jena.graph.Node.ANY.equals(jenaNode))
-		{
-			return SecNode.ANY;
-		}
-		if (jenaNode.isLiteral())
-		{
-			return new SecNode(Type.Literal, jenaNode.getLiteral().toString());
-		}
-		if (jenaNode.isBlank())
-		{
-			return new SecNode(Type.Anonymous, jenaNode.getBlankNodeLabel());
-		}
+		
 		if (jenaNode.isVariable())
 		{
-			return SecNode.VARIABLE;
+			return SecurityEvaluator.VARIABLE;
 		}
-		return new SecNode(Type.URI, jenaNode.getURI());
+		return jenaNode;
 	}
 
 	/**
@@ -169,12 +188,16 @@ public abstract class SecuredItemImpl implements SecuredItem
 	 * @param jenaTriple The Jena Triple to convert.
 	 * @return The SecTriple that represents the jenaTriple.
 	 */
-	public static SecTriple convert(
-			final org.apache.jena.graph.Triple jenaTriple )
+	private static Triple convert(
+			final Triple jenaTriple )
 	{
-		return new SecTriple(SecuredItemImpl.convert(jenaTriple.getSubject()),
+		if (jenaTriple.getSubject().isVariable() || jenaTriple.getPredicate().isVariable() || jenaTriple.getObject().isVariable())
+		{ 
+			return new Triple(SecuredItemImpl.convert(jenaTriple.getSubject()),	
 				SecuredItemImpl.convert(jenaTriple.getPredicate()),
 				SecuredItemImpl.convert(jenaTriple.getObject()));
+		}
+		return jenaTriple;
 	}
 
 	/**
@@ -210,7 +233,7 @@ public abstract class SecuredItemImpl implements SecuredItem
 		final Integer i = SecuredItemImpl.COUNT.get();
 		if (i == null)
 		{
-			SecuredItemImpl.CACHE.set(new LRUMap(Math.max(
+			SecuredItemImpl.CACHE.set(new LRUMap<CacheKey,Boolean>(Math.max(
 					SecuredItemImpl.MAX_CACHE, 100)));
 			SecuredItemImpl.COUNT.set( 1 );
 		}
@@ -224,7 +247,7 @@ public abstract class SecuredItemImpl implements SecuredItem
 	private final SecurityEvaluator securityEvaluator;
 
 	// the secured node for that names the graph.
-	private final SecNode modelNode;
+	private final Node modelNode;
 
 	// the item holder that we are evaluating.
 	private final ItemHolder<?, ?> itemHolder;
@@ -253,8 +276,7 @@ public abstract class SecuredItemImpl implements SecuredItem
 			throw new IllegalArgumentException("ItemHolder may not be null");
 		}
 		this.securityEvaluator = securedItem.getSecurityEvaluator();
-		this.modelNode = new SecurityEvaluator.SecNode(
-				SecurityEvaluator.SecNode.Type.URI, securedItem.getModelIRI());
+		this.modelNode =  securedItem.getModelNode();
 		this.itemHolder = holder;
 	}
 
@@ -284,8 +306,7 @@ public abstract class SecuredItemImpl implements SecuredItem
 			throw new IllegalArgumentException("ItemHolder may not be null");
 		}
 		this.securityEvaluator = securityEvaluator;
-		this.modelNode = new SecurityEvaluator.SecNode(
-				SecurityEvaluator.SecNode.Type.URI, modelURI);
+		this.modelNode = NodeFactory.createURI(modelURI);
 		this.itemHolder = holder;
 	}
 
@@ -305,18 +326,18 @@ public abstract class SecuredItemImpl implements SecuredItem
 	 */
 	private Boolean cacheGet( final CacheKey key )
 	{
-		final LRUMap cache = SecuredItemImpl.CACHE.get();
+		final LRUMap<CacheKey,Boolean> cache = SecuredItemImpl.CACHE.get();
 		return (cache == null) ? null : (Boolean) cache.get(key);
 	}
 
 	/**
-	 * set teh cache value.
+	 * set the cache value.
 	 * @param key The key to set the value for.
 	 * @param value The value to set.
 	 */
-	void cachePut( final CacheKey key, final boolean value )
+	private void cachePut( final CacheKey key, final boolean value )
 	{
-		final LRUMap cache = SecuredItemImpl.CACHE.get();
+		final LRUMap<CacheKey,Boolean> cache = SecuredItemImpl.CACHE.get();
 		if (cache != null)
 		{
 			cache.put(key, value);
@@ -342,14 +363,11 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canCreate( final org.apache.jena.graph.Triple t )
-	{
-		return canCreate(SecuredItemImpl.convert(t));
-	}
-
+	
 	@Override
-	public boolean canCreate( final SecTriple t )
+	public boolean canCreate( final Triple triple )
 	{
+		Triple t = convert(triple);
 		final CacheKey key = new CacheKey(Action.Create, modelNode, t);
 		Boolean retval = cacheGet(key);
 		if (retval == null)
@@ -360,9 +378,10 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canCreate( final Statement s )
+	@Override
+	public boolean canCreate( final FrontsTriple frontsTriple )
 	{
-		return canCreate(s.asTriple());
+		return canCreate(frontsTriple.asTriple());
 	}
 
 	/*
@@ -383,14 +402,10 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canDelete( final org.apache.jena.graph.Triple t )
-	{
-		return canDelete(SecuredItemImpl.convert(t));
-	}
-
 	@Override
-	public boolean canDelete( final SecTriple t )
+	public boolean canDelete( final Triple triple )
 	{
+		Triple t = convert(triple);
 		final CacheKey key = new CacheKey(Action.Delete, modelNode, t);
 		Boolean retval = cacheGet(key);
 		if (retval == null)
@@ -401,9 +416,10 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canDelete( final Statement s )
+	@Override
+	public boolean canDelete( final FrontsTriple frontsTriple )
 	{
-		return canDelete(s.asTriple());
+		return canDelete(frontsTriple.asTriple());
 	}
 
 	/*
@@ -424,14 +440,10 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canRead( final org.apache.jena.graph.Triple t )
-	{
-		return canRead(SecuredItemImpl.convert(t));
-	}
-
 	@Override
-	public boolean canRead( final SecTriple t )
+	public boolean canRead( final Triple triple )
 	{
+		Triple t = convert(triple);
 		final CacheKey key = new CacheKey(Action.Read, modelNode, t);
 		Boolean retval = cacheGet(key);
 		if (retval == null)
@@ -442,9 +454,10 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canRead( final Statement s )
+	@Override
+	public boolean canRead( final FrontsTriple frontsTriple )
 	{
-		return canRead(s.asTriple());
+		return canRead(frontsTriple.asTriple());
 	}
 
 	/*
@@ -465,16 +478,11 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canUpdate( final org.apache.jena.graph.Triple from,
-			final org.apache.jena.graph.Triple to )
-	{
-		return canUpdate(SecuredItemImpl.convert(from),
-				SecuredItemImpl.convert(to));
-	}
-
 	@Override
-	public boolean canUpdate( final SecTriple from, final SecTriple to )
+	public boolean canUpdate( final Triple f, final Triple t )
 	{
+		Triple from = convert(f);
+		Triple to = convert(t);
 		final CacheKey key = new CacheKey(Action.Update, modelNode, from, to);
 		Boolean retval = cacheGet(key);
 		if (retval == null)
@@ -485,7 +493,8 @@ public abstract class SecuredItemImpl implements SecuredItem
 		return retval;
 	}
 
-	public boolean canUpdate( final Statement from, final Statement to )
+	@Override
+	public boolean canUpdate( final FrontsTriple from, final FrontsTriple to )
 	{
 		return canUpdate(from.asTriple(), to.asTriple());
 	}
@@ -504,22 +513,17 @@ public abstract class SecuredItemImpl implements SecuredItem
 		}
 	}
 
-	protected void checkCreate( final org.apache.jena.graph.Triple t )  throws AddDeniedException
-	{
-		checkCreate(SecuredItemImpl.convert(t));
-	}
-
 	/**
 	 * check that the triple can be created in the securedModel.,
 	 * 
 	 * @throws AddDeniedException
 	 *             on failure
 	 */
-	protected void checkCreate( final SecTriple t ) throws AddDeniedException
+	protected void checkCreate( final Triple t ) throws AddDeniedException
 	{
 		if (!canCreate(t))
 		{
-			throw new AddDeniedException(SecuredItem.Util.triplePermissionMsg(modelNode), t.asTriple() );
+			throw new AddDeniedException(SecuredItem.Util.triplePermissionMsg(modelNode), t );
 		}
 	}
 
@@ -528,34 +532,31 @@ public abstract class SecuredItemImpl implements SecuredItem
 	 * @param s The statement.
 	 * @throws AddDeniedException on failure
 	 */
-	protected void checkCreate( final Statement s ) throws AddDeniedException
+	protected void checkCreate( final FrontsTriple frontsTriple ) throws AddDeniedException
 	{
-		checkCreate(s.asTriple());
+		checkCreate(frontsTriple.asTriple());
 	}
 
 	/**
 	 * Check that a triple can be reified.
 	 * @param uri The URI for the reification subject.  May be null.
-	 * @param t the triple that is to be reified.
+	 * @param front the frontstriple that is to be reified.
 	 * @throws AddDeniedException on failure to add triple
 	 * @throws UpdateDenied if the updates of the graph are not allowed.
 	 */
-	protected void checkCreateReified( final String uri, final SecTriple t )  throws AddDeniedException, UpdateDeniedException
+	protected void checkCreateReified( final String uri, final FrontsTriple front )  throws AddDeniedException, UpdateDeniedException
 	{
 		checkUpdate();
-		final SecNode n = uri == null ? SecNode.FUTURE : new SecNode(Type.URI,
-				uri);
-		checkCreate(new SecTriple(n, SecuredItemImpl.convert(RDF.subject
-				.asNode()), t.getSubject()));
-		checkCreate(new SecTriple(n, SecuredItemImpl.convert(RDF.predicate
-				.asNode()), t.getPredicate()));
-		checkCreate(new SecTriple(n, SecuredItemImpl.convert(RDF.object
-				.asNode()), t.getObject()));
+		Triple t = front.asTriple();
+		final Node n = uri == null ? SecurityEvaluator.FUTURE : NodeFactory.createURI(uri);
+		checkCreate(new Triple(n, RDF.subject.asNode(), t.getSubject()));
+		checkCreate(new Triple(n, RDF.predicate.asNode(), t.getPredicate()));
+		checkCreate(new Triple(n, RDF.object.asNode(), t.getObject()));
 	}
 
-	protected void checkCreateStatement( final ExtendedIterator<Statement> stmts )  throws AddDeniedException
+	protected void checkCreateFrontsTriples( final ExtendedIterator<? extends FrontsTriple> stmts )  throws AddDeniedException
 	{
-		if (!canCreate(SecTriple.ANY))
+		if (!canCreate(Triple.ANY))
 		{
 			try
 			{
@@ -572,9 +573,9 @@ public abstract class SecuredItemImpl implements SecuredItem
 	}
 
 	protected void checkCreateTriples(
-			final ExtendedIterator<org.apache.jena.graph.Triple> triples ) throws AddDeniedException
+			final ExtendedIterator<Triple> triples ) throws AddDeniedException
 	{
-		if (!canCreate(SecTriple.ANY))
+		if (!canCreate(Triple.ANY))
 		{
 			try
 			{
@@ -604,34 +605,29 @@ public abstract class SecuredItemImpl implements SecuredItem
 		}
 	}
 
-	protected void checkDelete( final org.apache.jena.graph.Triple t )
-	{
-		checkDelete(SecuredItemImpl.convert(t));
-	}
-
 	/**
 	 * check that the triple can be deleted in the securedModel.,
 	 * 
 	 * @throws DeleteDeniedException
 	 *             on failure
 	 */
-	protected void checkDelete( final SecTriple t )
+	protected void checkDelete( final Triple t )
 	{
 		if (!canDelete(t))
 		{
-			throw new DeleteDeniedException(SecuredItem.Util.triplePermissionMsg(modelNode), t.asTriple());
+			throw new DeleteDeniedException(SecuredItem.Util.triplePermissionMsg(modelNode), t);
 		}
 	}
 
-	protected void checkDelete( final Statement s )
+	protected void checkDelete( final FrontsTriple frontsTriple )
 	{
-		checkDelete(s.asTriple());
+		checkDelete(frontsTriple.asTriple());
 	}
 
-	protected void checkDeleteStatements(
-			final ExtendedIterator<Statement> stmts )
+	protected void checkDeleteFrontsTriples(
+			final ExtendedIterator<? extends FrontsTriple> stmts )
 	{
-		if (!canDelete(SecTriple.ANY))
+		if (!canDelete(Triple.ANY))
 		{
 			try
 			{
@@ -648,9 +644,9 @@ public abstract class SecuredItemImpl implements SecuredItem
 	}
 
 	protected void checkDeleteTriples(
-			final ExtendedIterator<org.apache.jena.graph.Triple> triples )
+			final ExtendedIterator<Triple> triples )
 	{
-		if (!canDelete(SecTriple.ANY))
+		if (!canDelete(Triple.ANY))
 		{
 			try
 			{
@@ -680,31 +676,26 @@ public abstract class SecuredItemImpl implements SecuredItem
 		}
 	}
 
-	protected void checkRead( final org.apache.jena.graph.Triple t ) throws ReadDeniedException
-	{
-		checkRead(SecuredItemImpl.convert(t));
-	}
-
 	/**
 	 * check that the triple can be read in the securedModel.,
 	 * 
 	 * @throws ReadDeniedException
 	 *             on failure
 	 */
-	protected void checkRead( final SecTriple t ) throws ReadDeniedException
+	protected void checkRead( final Triple t ) throws ReadDeniedException
 	{
 		if (!canRead(t))
 		{
-			throw new ReadDeniedException(SecuredItem.Util.triplePermissionMsg(modelNode), t.asTriple());
+			throw new ReadDeniedException(SecuredItem.Util.triplePermissionMsg(modelNode), t);
 		}
 	}
 
-	protected void checkRead( final Statement s ) throws ReadDeniedException
+	protected void checkRead( final FrontsTriple frontsTriple ) throws ReadDeniedException
 	{
-		checkRead(s.asTriple());
+		checkRead(frontsTriple.asTriple());
 	}
 
-	protected void checkReadStatement( final ExtendedIterator<Statement> stmts ) throws ReadDeniedException
+	protected void checkReadFrontsTriples( final ExtendedIterator<FrontsTriple> stmts ) throws ReadDeniedException
 	{
 		try
 		{
@@ -720,7 +711,7 @@ public abstract class SecuredItemImpl implements SecuredItem
 	}
 
 	protected void checkReadTriples(
-			final ExtendedIterator<org.apache.jena.graph.Triple> triples ) throws ReadDeniedException
+			final ExtendedIterator<Triple> triples ) throws ReadDeniedException
 	{
 		try
 		{
@@ -750,18 +741,6 @@ public abstract class SecuredItemImpl implements SecuredItem
 	}
 
 	/**
-	 * Check that a triple can be changed from one value to another.
-	 * @param from The original triple
-	 * @param to The final triple
-	 * @throws UpdateDeniedException
-	 */
-	protected void checkUpdate( final org.apache.jena.graph.Triple from,
-			final org.apache.jena.graph.Triple to )  throws UpdateDeniedException
-	{
-		checkUpdate(SecuredItemImpl.convert(from), SecuredItemImpl.convert(to));
-	}
-
-	/**
 	 * check that the triple can be updated in the securedModel.,
 	 * 
 	 * @param from the starting triple
@@ -769,7 +748,7 @@ public abstract class SecuredItemImpl implements SecuredItem
 	 * @throws UpdateDeniedException
 	 *             on failure
 	 */
-	protected void checkUpdate( final SecTriple from, final SecTriple to ) throws UpdateDeniedException
+	protected void checkUpdate( final Triple from, final Triple to ) throws UpdateDeniedException
 	{
 		if (!canUpdate(from, to))
 		{
@@ -824,14 +803,14 @@ public abstract class SecuredItemImpl implements SecuredItem
 	@Override
 	public String getModelIRI()
 	{
-		return modelNode.getValue();
+		return modelNode.getURI();
 	}
 
 	/**
 	 * get the name of the model.
 	 */
 	@Override
-	public SecNode getModelNode()
+	public Node getModelNode()
 	{
 		return modelNode;
 	}

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemInvoker.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemInvoker.java b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemInvoker.java
index 94416e5..be4055b 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemInvoker.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/impl/SecuredItemInvoker.java
@@ -22,6 +22,8 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.Proxy;
 
+import org.apache.jena.permissions.SecuredItem;
+
 
 /**
  * A generic InvocationHandler that handles the general invocation of the

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
index e320469..543dc58 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java
@@ -19,7 +19,7 @@ package org.apache.jena.permissions.model;
 
 import org.apache.jena.graph.Node ;
 import org.apache.jena.permissions.ReadDeniedException;
-import org.apache.jena.permissions.impl.SecuredItem;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.RDFNode ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
index ba610be..bb7e858 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java
@@ -19,8 +19,8 @@ package org.apache.jena.permissions.model;
 
 
 import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.UpdateDeniedException;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.rdf.model.* ;
 import org.apache.jena.shared.AddDeniedException;
 import org.apache.jena.shared.DeleteDeniedException;


[2/4] jena git commit: initial changes on perm-interface-refactor as part of fix for JENA-992

Posted by cl...@apache.org.
http://git-wip-us.apache.org/repos/asf/jena/blob/1dd6cfd1/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
index 52f413a..f64372f 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java
@@ -17,260 +17,196 @@
  */
 package org.apache.jena.permissions.model.impl;
 
-import java.io.* ;
-import java.net.URL ;
-import java.util.* ;
+import java.io.*;
+import java.net.URL;
+import java.util.*;
 import java.util.function.Predicate;
 
-import org.apache.jena.datatypes.RDFDatatype ;
-import org.apache.jena.graph.Node ;
-import org.apache.jena.graph.NodeFactory ;
-import org.apache.jena.graph.Triple ;
-import org.apache.jena.graph.impl.CollectionGraph ;
+import org.apache.jena.datatypes.RDFDatatype;
+import org.apache.jena.graph.Node;
+import org.apache.jena.graph.NodeFactory;
+import org.apache.jena.graph.Triple;
+import org.apache.jena.graph.impl.CollectionGraph;
+import org.apache.jena.permissions.SecuredItem;
 import org.apache.jena.permissions.SecurityEvaluator;
-import org.apache.jena.permissions.SecurityEvaluator.SecTriple;
 import org.apache.jena.permissions.graph.SecuredGraph;
 import org.apache.jena.permissions.graph.SecuredPrefixMapping;
 import org.apache.jena.permissions.impl.ItemHolder;
-import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.permissions.impl.SecuredItemImpl;
 import org.apache.jena.permissions.impl.SecuredItemInvoker;
 import org.apache.jena.permissions.model.*;
-import org.apache.jena.rdf.model.* ;
-import org.apache.jena.rdf.model.impl.RDFReaderFImpl ;
-import org.apache.jena.shared.* ;
-import org.apache.jena.util.iterator.ExtendedIterator ;
-import org.apache.jena.util.iterator.WrappedIterator ;
-import org.apache.jena.vocabulary.RDF ;
+import org.apache.jena.rdf.model.*;
+import org.apache.jena.rdf.model.impl.RDFReaderFImpl;
+import org.apache.jena.shared.*;
+import org.apache.jena.util.iterator.ExtendedIterator;
+import org.apache.jena.util.iterator.WrappedIterator;
+import org.apache.jena.vocabulary.RDF;
 
 /**
  * Implementation of SecuredModel to be used by a SecuredItemInvoker proxy.
  */
-public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
-{
+public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel {
 
 	// a class that implements ModelChangedListener
-	private class SecuredModelChangedListener implements ModelChangedListener
-	{
+	private class SecuredModelChangedListener implements ModelChangedListener {
 		private final ModelChangedListener wrapped;
 
-		private SecuredModelChangedListener( final ModelChangedListener wrapped )
-		{
+		private SecuredModelChangedListener(final ModelChangedListener wrapped) {
 			this.wrapped = wrapped;
 		}
 
 		@Override
-		public void addedStatement( final Statement s )
-		{
-			if (canRead(s.asTriple()))
-			{
+		public void addedStatement(final Statement s) {
+			if (canRead(s)) {
 				wrapped.addedStatement(s);
 			}
 		}
 
 		@Override
-		public void addedStatements( final List<Statement> statements )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void addedStatements(final List<Statement> statements) {
+			if (canRead(Triple.ANY)) {
 				wrapped.addedStatements(statements);
-			}
-			else
-			{
+			} else {
 				final SecuredStatementIterator iter = new SecuredStatementIterator(
 						holder.getSecuredItem(),
 						WrappedIterator.create(statements.iterator()));
-				try
-				{
+				try {
 					wrapped.addedStatements(iter.toList());
-				}
-				finally
-				{
+				} finally {
 					iter.close();
 				}
 			}
 		}
 
 		@Override
-		public void addedStatements( final Model m )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void addedStatements(final Model m) {
+			if (canRead(Triple.ANY)) {
 				wrapped.addedStatements(m);
-			}
-			else
-			{
+			} else {
 				wrapped.addedStatements(SecuredModelImpl.getInstance(
 						holder.getSecuredItem(), m));
 			}
 		}
 
 		@Override
-		public void addedStatements( final Statement[] statements )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void addedStatements(final Statement[] statements) {
+			if (canRead(Triple.ANY)) {
 				wrapped.addedStatements(statements);
-			}
-			else
-			{
+			} else {
 				final SecuredStatementIterator iter = new SecuredStatementIterator(
 						holder.getSecuredItem(), WrappedIterator.create(Arrays
 								.asList(statements).iterator()));
-				try
-				{
+				try {
 					final List<Statement> stmts = iter.toList();
 					wrapped.addedStatements(stmts.toArray(new Statement[stmts
 							.size()]));
-				}
-				finally
-				{
+				} finally {
 					iter.close();
 				}
 			}
 		}
 
 		@Override
-		public void addedStatements( final StmtIterator statements )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void addedStatements(final StmtIterator statements) {
+			if (canRead(Triple.ANY)) {
 				wrapped.addedStatements(statements);
-			}
-			else
-			{
+			} else {
 				final SecuredStatementIterator iter = new SecuredStatementIterator(
 						holder.getSecuredItem(), statements);
-				try
-				{
+				try {
 					wrapped.addedStatements(iter);
-				}
-				finally
-				{
+				} finally {
 					iter.close();
 				}
 			}
 		}
 
 		@Override
-		public void notifyEvent( final Model m, final Object event )
-		{
+		public void notifyEvent(final Model m, final Object event) {
 			wrapped.notifyEvent(m, event);
 		}
 
 		@Override
-		public void removedStatement( final Statement s )
-		{
-			if (canRead(s.asTriple()))
-			{
+		public void removedStatement(final Statement s) {
+			if (canRead(s)) {
 				wrapped.removedStatement(s);
 			}
 		}
 
 		@Override
-		public void removedStatements( final List<Statement> statements )
-		{
+		public void removedStatements(final List<Statement> statements) {
 
-			if (canRead(Triple.ANY))
-			{
+			if (canRead(Triple.ANY)) {
 				wrapped.removedStatements(statements);
-			}
-			else
-			{
+			} else {
 				final SecuredStatementIterator iter = new SecuredStatementIterator(
 						holder.getSecuredItem(),
 						WrappedIterator.create(statements.iterator()));
-				try
-				{
+				try {
 					wrapped.removedStatements(iter.toList());
-				}
-				finally
-				{
+				} finally {
 					iter.close();
 				}
 			}
 		}
 
 		@Override
-		public void removedStatements( final Model m )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void removedStatements(final Model m) {
+			if (canRead(Triple.ANY)) {
 				wrapped.removedStatements(m);
-			}
-			else
-			{
+			} else {
 				wrapped.removedStatements(SecuredModelImpl.getInstance(
 						holder.getSecuredItem(), m));
 			}
 		}
 
 		@Override
-		public void removedStatements( final Statement[] statements )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void removedStatements(final Statement[] statements) {
+			if (canRead(Triple.ANY)) {
 				wrapped.removedStatements(statements);
-			}
-			else
-			{
+			} else {
 				final SecuredStatementIterator iter = new SecuredStatementIterator(
 						holder.getSecuredItem(), WrappedIterator.create(Arrays
 								.asList(statements).iterator()));
-				try
-				{
+				try {
 					final List<Statement> stmts = iter.toList();
 					wrapped.removedStatements(stmts.toArray(new Statement[stmts
 							.size()]));
-				}
-				finally
-				{
+				} finally {
 					iter.close();
 				}
 			}
 		}
 
 		@Override
-		public void removedStatements( final StmtIterator statements )
-		{
-			if (canRead(Triple.ANY))
-			{
+		public void removedStatements(final StmtIterator statements) {
+			if (canRead(Triple.ANY)) {
 				wrapped.removedStatements(statements);
-			}
-			else
-			{
+			} else {
 				final SecuredStatementIterator iter = new SecuredStatementIterator(
 						holder.getSecuredItem(), statements);
-				try
-				{
+				try {
 					wrapped.removedStatements(iter);
-				}
-				finally
-				{
+				} finally {
 					iter.close();
 				}
 			}
 		}
 	}
 
-	/*private class  ReadFilter extends Filter<Resource> {
-		private SecuredItem si;
-		private SecuredResource r;
-		private Property p;
-		ReadFilter( SecuredItem si, SecuredResource r, Property p )
-		{
-			this.si = si;
-			this.r = r;
-			this.p = p;
-		}
-		@Override
-		public boolean test(Resource o) {
-			Triple t = new Triple( r.asNode(), p.asNode(), o.asNode());
-			return si.canRead( SecuredItemImpl.convert( t ) );
-		}};
-*/
+	/*
+	 * private class ReadFilter extends Filter<Resource> { private SecuredItem
+	 * si; private SecuredResource r; private Property p; ReadFilter(
+	 * SecuredItem si, SecuredResource r, Property p ) { this.si = si; this.r =
+	 * r; this.p = p; }
+	 * 
+	 * @Override public boolean test(Resource o) { Triple t = new Triple(
+	 * r.asNode(), p.asNode(), o.asNode()); return si.canRead(
+	 * SecuredItemImpl.convert( t ) ); }};
+	 */
 	private static final RDFReaderF readerFactory = new RDFReaderFImpl();
-	//private static final RDFWriterF writerFactory = new RDFWriterFImpl();
+
+	// private static final RDFWriterF writerFactory = new RDFWriterFImpl();
 
 	/**
 	 * Get an instance of SecuredModel
@@ -281,9 +217,8 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	 *            the Model to secure.
 	 * @return The SecuredModel
 	 */
-	public static SecuredModel getInstance( final SecuredItem securedItem,
-			final Model model )
-	{
+	public static SecuredModel getInstance(final SecuredItem securedItem,
+			final Model model) {
 		return org.apache.jena.permissions.Factory.getInstance(
 				securedItem.getSecurityEvaluator(), securedItem.getModelIRI(),
 				model);
@@ -302,8 +237,7 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	 */
 	public static SecuredModel getInstance(
 			final SecurityEvaluator securityEvaluator, final String modelIRI,
-			final Model model )
-	{
+			final Model model) {
 		final ItemHolder<Model, SecuredModel> holder = new ItemHolder<Model, SecuredModel>(
 				model);
 
@@ -311,10 +245,8 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 				securityEvaluator, modelIRI, holder);
 		// if we are going to create a duplicate proxy, just return this
 		// one.
-		if (model instanceof SecuredModel)
-		{
-			if (checker.isEquivalent((SecuredModel) model))
-			{
+		if (model instanceof SecuredModel) {
+			if (checker.isEquivalent((SecuredModel) model)) {
 				return (SecuredModel) model;
 			}
 		}
@@ -341,51 +273,45 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	 * @param holder
 	 *            The item holder that will contain this SecuredModel.
 	 */
-	private SecuredModelImpl( final SecurityEvaluator securityEvaluator,
-			final String modelURI, final ItemHolder<Model, SecuredModel> holder )
-	{
+	private SecuredModelImpl(final SecurityEvaluator securityEvaluator,
+			final String modelURI, final ItemHolder<Model, SecuredModel> holder) {
 		super(securityEvaluator, modelURI, holder);
-		this.graph = org.apache.jena.permissions.Factory.getInstance(securityEvaluator, modelURI, holder
-				.getBaseItem().getGraph());
-		this.holder = holder; 
+		this.graph = org.apache.jena.permissions.Factory.getInstance(
+				securityEvaluator, modelURI, holder.getBaseItem().getGraph());
+		this.holder = holder;
+	}
+
+	private RDFNode asObject(Object o) {
+		return o instanceof RDFNode ? (RDFNode) o : ResourceFactory
+				.createTypedLiteral(o);
 	}
-	
-	 private RDFNode asObject( Object o )
-     { 
-		 return o instanceof RDFNode ? (RDFNode) o : ResourceFactory.createTypedLiteral( o ); 
-     }
 
 	@Override
-	public SecuredModel abort()
-	{
+	public SecuredModel abort() {
 		holder.getBaseItem().abort();
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final List<Statement> statements )
-	{
+	public SecuredModel add(final List<Statement> statements) {
 		checkUpdate();
-		checkCreateStatement(WrappedIterator.create(statements.iterator()));
+		checkCreateFrontsTriples(WrappedIterator.create(statements.iterator()));
 		holder.getBaseItem().add(statements);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final Model m )
-	{
+	public SecuredModel add(final Model m) {
 		checkUpdate();
-		if (!canCreate(Triple.ANY))
-		{
-			checkCreateStatement(m.listStatements());
+		if (!canCreate(Triple.ANY)) {
+			checkCreateFrontsTriples(m.listStatements());
 		}
 		holder.getBaseItem().add(m);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final Resource s, final Property p, final RDFNode o )
-	{
+	public SecuredModel add(final Resource s, final Property p, final RDFNode o) {
 		checkUpdate();
 		checkCreate(new Triple(s.asNode(), p.asNode(), o.asNode()));
 		holder.getBaseItem().add(s, p, o);
@@ -393,62 +319,54 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	}
 
 	@Override
-	public SecuredModel add( final Resource s, final Property p, final String o )
-	{
-		return add( s, p, o, false );
+	public SecuredModel add(final Resource s, final Property p, final String o) {
+		return add(s, p, o, false);
 	}
 
 	@Override
-	public SecuredModel add( final Resource s, final Property p,
-			final String o, final boolean wellFormed )
-	{
+	public SecuredModel add(final Resource s, final Property p, final String o,
+			final boolean wellFormed) {
 		checkUpdate();
-		checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(o,
-				"", wellFormed)));
+		checkCreate(new Triple(s.asNode(), p.asNode(),
+				NodeFactory.createLiteral(o, "", wellFormed)));
 		holder.getBaseItem().add(s, p, o, wellFormed);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final Resource s, final Property p,
-			final String lex, final RDFDatatype datatype )
-	{
+	public SecuredModel add(final Resource s, final Property p,
+			final String lex, final RDFDatatype datatype) {
 		checkUpdate();
-		checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(lex,
-				datatype)));
+		checkCreate(new Triple(s.asNode(), p.asNode(),
+				NodeFactory.createLiteral(lex, datatype)));
 		holder.getBaseItem().add(s, p, lex, datatype);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final Resource s, final Property p,
-			final String o, final String l )
-	{
+	public SecuredModel add(final Resource s, final Property p, final String o,
+			final String l) {
 		checkUpdate();
-		checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(o, l,
-				false)));
+		checkCreate(new Triple(s.asNode(), p.asNode(),
+				NodeFactory.createLiteral(o, l, false)));
 		holder.getBaseItem().add(s, p, o, l);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final Statement s )
-	{
+	public SecuredModel add(final Statement s) {
 		checkUpdate();
-		checkCreate(s.asTriple());
+		checkCreate(s);
 		holder.getBaseItem().add(s);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel add( final Statement[] statements )
-	{
+	public SecuredModel add(final Statement[] statements) {
 		checkUpdate();
-		if (!canCreate(Triple.ANY))
-		{
-			for (final Statement s : statements)
-			{
-				checkCreate(s.asTriple());
+		if (!canCreate(Triple.ANY)) {
+			for (final Statement s : statements) {
+				checkCreate(s);
 			}
 		}
 		holder.getBaseItem().add(statements);
@@ -457,386 +375,314 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	}
 
 	@Override
-	public SecuredModel add( final StmtIterator iter )
-	{
+	public SecuredModel add(final StmtIterator iter) {
 		checkUpdate();
-		if (!canCreate(Triple.ANY))
-		{
+		if (!canCreate(Triple.ANY)) {
 			final List<Triple> lst = new ArrayList<Triple>();
-			try
-			{
-				while (iter.hasNext())
-				{
+			try {
+				while (iter.hasNext()) {
 					final Statement s = iter.next();
-					checkCreate(s.asTriple());
+					checkCreate(s);
 					lst.add(s.asTriple());
 				}
 				final Model m = ModelFactory
 						.createModelForGraph(new CollectionGraph(lst));
 				holder.getBaseItem().add(m.listStatements());
-			}
-			finally
-			{
+			} finally {
 				iter.close();
 			}
-		}
-		else
-		{
+		} else {
 			holder.getBaseItem().add(iter);
 		}
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final boolean o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final boolean o) {
 		final Literal l = ResourceFactory.createTypedLiteral(o);
-		if (l == null)
-		{
-			throw new IllegalArgumentException( "HOw did we get a null");
+		if (l == null) {
+			throw new IllegalArgumentException("HOw did we get a null");
 		}
 		return add(s, p, l);
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final char o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final char o) {
 		final Literal l = ResourceFactory.createTypedLiteral(o);
 		return add(s, p, l);
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final double o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final double o) {
 		final Literal l = ResourceFactory.createTypedLiteral(o);
 		return add(s, p, l);
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final float o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final float o) {
 		final Literal l = ResourceFactory.createTypedLiteral(o);
 		return add(s, p, l);
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final int o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final int o) {
 		final Literal l = ResourceFactory.createTypedLiteral(o);
 		return add(s, p, l);
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final Literal o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final Literal o) {
 		return add(s, p, o);
 	}
 
 	@Override
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final long o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final long o) {
 		final Literal l = ResourceFactory.createTypedLiteral(o);
 		return add(s, p, l);
 	}
 
 	@Override
 	@Deprecated
-	public SecuredModel addLiteral( final Resource s, final Property p,
-			final Object o )
-	{
+	public SecuredModel addLiteral(final Resource s, final Property p,
+			final Object o) {
 		return add(s, p, asObject(o));
 	}
 
 	@Override
-	public SecuredRDFNode asRDFNode( final Node n )
-	{
-		return SecuredRDFNodeImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.asRDFNode(n));
+	public SecuredRDFNode asRDFNode(final Node n) {
+		return SecuredRDFNodeImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().asRDFNode(n));
 	}
 
 	@Override
-	public SecuredStatement asStatement( final Triple t )
-	{
+	public SecuredStatement asStatement(final Triple t) {
 		final ExtendedIterator<Triple> iter = holder.getBaseItem().getGraph()
 				.find(t);
 		final boolean exists = iter.hasNext();
 		iter.close();
-		if (exists)
-		{
+		if (exists) {
 			checkRead();
 			checkRead(t);
-		}
-		else
-		{
+		} else {
 			checkUpdate();
 			checkCreate(t);
 		}
-		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.asStatement(t));
+		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().asStatement(t));
 	}
 
 	@Override
-	public SecuredModel begin()
-	{
+	public SecuredModel begin() {
 		holder.getBaseItem().begin();
 		return holder.getSecuredItem();
 	}
 
-	private void checkCreate( final SecurityEvaluator.SecNode n, final Triple t )
-	{
-		checkRead(t);
-		checkCreate(new SecurityEvaluator.SecTriple(n,
-				SecuredItemImpl.convert(RDF.subject.asNode()),
-				SecuredItemImpl.convert(t.getSubject())));
-		checkCreate(new SecurityEvaluator.SecTriple(n,
-				SecuredItemImpl.convert(RDF.predicate.asNode()),
-				SecuredItemImpl.convert(t.getPredicate())));
-		checkCreate(new SecurityEvaluator.SecTriple(n,
-				SecuredItemImpl.convert(RDF.object.asNode()),
-				SecuredItemImpl.convert(t.getObject())));
-	}
+	// private void checkCreate( final Node n, final Triple t )
+	// {
+	// checkRead(t);
+	// checkCreate(new SecurityEvaluator.SecTriple(n,
+	// SecuredItemImpl.convert(RDF.subject.asNode()),
+	// SecuredItemImpl.convert(t.getSubject())));
+	// checkCreate(new SecurityEvaluator.SecTriple(n,
+	// SecuredItemImpl.convert(RDF.predicate.asNode()),
+	// SecuredItemImpl.convert(t.getPredicate())));
+	// checkCreate(new SecurityEvaluator.SecTriple(n,
+	// SecuredItemImpl.convert(RDF.object.asNode()),
+	// SecuredItemImpl.convert(t.getObject())));
+	// }
 
 	/*
 	 * private void checkCreateAnonymousResource( final
-	 * SecurityEvaluator.SecNode n )
-	 * {
-	 * checkUpdate();
-	 * final SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple(n,
+	 * SecurityEvaluator.SecNode n ) { checkUpdate(); final
+	 * SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple(n,
 	 * SecurityEvaluator.SecNode.IGNORE, SecurityEvaluator.SecNode.IGNORE);
-	 * checkCreate(t);
-	 * }
+	 * checkCreate(t); }
 	 */
 	@Override
-	public void close()
-	{
+	public void close() {
 		holder.getBaseItem().close();
 	}
 
 	@Override
-	public SecuredModel commit()
-	{
+	public SecuredModel commit() {
 		holder.getBaseItem().commit();
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public boolean contains( final Resource s, final Property p )
-	{
+	public boolean contains(final Resource s, final Property p) {
 		checkRead();
 		final SecuredStatementIterator iter = new SecuredStatementIterator(
-				holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, (RDFNode) null));
-		try
-		{
+				holder.getSecuredItem(), holder.getBaseItem().listStatements(s,
+						p, (RDFNode) null));
+		try {
 			return iter.hasNext();
-		}
-		finally
-		{
+		} finally {
 			iter.close();
 		}
 	}
 
 	@Override
-	public boolean contains( final Resource s, final Property p, final RDFNode o )
-	{
+	public boolean contains(final Resource s, final Property p, final RDFNode o) {
 		checkRead();
 		final SecuredStatementIterator iter = new SecuredStatementIterator(
-				holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, o));
-		try
-		{
+				holder.getSecuredItem(), holder.getBaseItem().listStatements(s,
+						p, o));
+		try {
 			return iter.hasNext();
-		}
-		finally
-		{
+		} finally {
 			iter.close();
 		}
 	}
 
 	@Override
-	public boolean contains( final Resource s, final Property p, final String o )
-	{
+	public boolean contains(final Resource s, final Property p, final String o) {
 		checkRead();
 		final SecuredStatementIterator iter = new SecuredStatementIterator(
-				holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, o));
-		try
-		{
+				holder.getSecuredItem(), holder.getBaseItem().listStatements(s,
+						p, o));
+		try {
 			return iter.hasNext();
-		}
-		finally
-		{
+		} finally {
 			iter.close();
 		}
 	}
 
 	@Override
-	public boolean contains( final Resource s, final Property p,
-			final String o, final String l )
-	{
+	public boolean contains(final Resource s, final Property p, final String o,
+			final String l) {
 		checkRead();
 		final SecuredStatementIterator iter = new SecuredStatementIterator(
-				holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, o, l));
-		try
-		{
+				holder.getSecuredItem(), holder.getBaseItem().listStatements(s,
+						p, o, l));
+		try {
 			return iter.hasNext();
-		}
-		finally
-		{
+		} finally {
 			iter.close();
 		}
 	}
 
 	@Override
-	public boolean contains( final Statement s )
-	{
+	public boolean contains(final Statement s) {
 		checkRead();
 		checkRead(s);
 		return holder.getBaseItem().contains(s);
 	}
 
 	@Override
-	public boolean containsAll( final Model model )
-	{
+	public boolean containsAll(final Model model) {
 		return containsAll(model.listStatements());
 	}
 
 	@Override
-	public boolean containsAll( final StmtIterator iter )
-	{
+	public boolean containsAll(final StmtIterator iter) {
 		checkRead();
 		final boolean doCheck = canRead(Triple.ANY);
-		try
-		{
-			while (iter.hasNext())
-			{
+		try {
+			while (iter.hasNext()) {
 				final Statement stmt = iter.next();
-				if (doCheck)
-				{
+				if (doCheck) {
 					checkRead(stmt);
 				}
-				if (!holder.getBaseItem().contains(stmt))
-				{
+				if (!holder.getBaseItem().contains(stmt)) {
 					return false;
 				}
 			}
 			return true;
-		}
-		finally
-		{
+		} finally {
 			iter.close();
 		}
 	}
 
 	@Override
-	public boolean containsAny( final Model model )
-	{
+	public boolean containsAny(final Model model) {
 		return containsAny(model.listStatements());
 
 	}
 
 	@Override
-	public boolean containsAny( final StmtIterator iter )
-	{
+	public boolean containsAny(final StmtIterator iter) {
 		checkRead();
 		final boolean skipCheck = canRead(Triple.ANY);
-		try
-		{
-			while (iter.hasNext())
-			{
+		try {
+			while (iter.hasNext()) {
 				final Statement stmt = iter.next();
-				if (skipCheck || canRead(stmt))
-				{
-					if (holder.getBaseItem().contains(stmt))
-					{
+				if (skipCheck || canRead(stmt)) {
+					if (holder.getBaseItem().contains(stmt)) {
 						return true;
 					}
 				}
 			}
 			return false;
-		}
-		finally
-		{
+		} finally {
 			iter.close();
 		}
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final boolean o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final boolean o) {
 		return contains(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final char o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final char o) {
 		return contains(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final double o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final double o) {
 		return contains(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final float o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final float o) {
 		return contains(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final int o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final int o) {
 		return contains(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final long o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final long o) {
 		return contains(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public boolean containsLiteral( final Resource s, final Property p,
-			final Object o )
-	{
+	public boolean containsLiteral(final Resource s, final Property p,
+			final Object o) {
 		return contains(s, p, asObject(o));
 	}
 
 	@Override
-	public boolean containsResource( final RDFNode r )
-	{
+	public boolean containsResource(final RDFNode r) {
 		checkRead();
-		if (canRead(new Triple(Node.ANY, Node.ANY, Node.ANY)))
-		{
+		if (canRead(new Triple(Node.ANY, Node.ANY, Node.ANY))) {
 			return holder.getBaseItem().containsResource(r);
-		}
-		else
-		{
+		} else {
 			ExtendedIterator<Statement> iter = listStatements(null, null, r);
-			if (r.isResource())
-			{
+			if (r.isResource()) {
 
-				if (r.isURIResource())
-				{
+				if (r.isURIResource()) {
 					iter = iter
 							.andThen(listStatements(null, ResourceFactory
 									.createProperty(r.asNode().getURI()),
 									(RDFNode) null));
-				}
-				else
-				{
+				} else {
 					iter = iter.andThen(listStatements(null, ResourceFactory
 							.createProperty(r.asNode().getBlankNodeLabel()),
 							(RDFNode) null));
@@ -844,695 +690,567 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 				iter = iter.andThen(listStatements(r.asResource(), null,
 						(RDFNode) null));
 			}
-			try
-			{
+			try {
 				return iter.hasNext();
-			}
-			finally
-			{
+			} finally {
 				iter.close();
 			}
 		}
 	}
 
 	@Override
-	public SecuredAlt createAlt()
-	{
+	public SecuredAlt createAlt() {
 		checkUpdate();
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(RDF.type.asNode()),
-				SecuredItemImpl.convert(RDF.Alt.asNode())));
-		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createAlt());
+		checkCreate(new Triple(SecurityEvaluator.FUTURE, RDF.type.asNode(),
+				RDF.Alt.asNode()));
+		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createAlt());
 	}
 
 	@Override
-	public SecuredAlt createAlt( final String uri )
-	{
+	public SecuredAlt createAlt(final String uri) {
 		checkUpdate();
 		checkCreate(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(),
 				RDF.Alt.asNode()));
-		return SecuredAltImpl.getInstance(holder.getSecuredItem(),
-				holder.getBaseItem().createAlt(uri));
+		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createAlt(uri));
 	}
 
 	@Override
-	public SecuredBag createBag()
-	{
+	public SecuredBag createBag() {
 		checkUpdate();
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(RDF.type.asNode()),
-				SecuredItemImpl.convert(RDF.Bag.asNode())));
-		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createBag());
+		checkCreate(new Triple(SecurityEvaluator.FUTURE,
+				RDF.type.asNode(),
+				RDF.Bag.asNode()));
+		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createBag());
 	}
 
 	@Override
-	public SecuredBag createBag( final String uri )
-	{
+	public SecuredBag createBag(final String uri) {
 		checkUpdate();
 		checkCreate(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(),
 				RDF.Bag.asNode()));
-		return SecuredBagImpl.getInstance(holder.getSecuredItem(),
-				holder.getBaseItem().createBag(uri));
+		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createBag(uri));
 	}
 
-	private Model createCopy()
-	{
+	private Model createCopy() {
 		return ModelFactory.createDefaultModel().add(holder.getSecuredItem());
 	}
 
 	@Override
-	public SecuredRDFList createList()
-	{
+	public SecuredRDFList createList() {
 		checkUpdate();
-		return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createList());
+		return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createList());
 	}
 
 	@Override
-	public SecuredRDFList createList( final Iterator<? extends RDFNode> members )
-	{
+	public SecuredRDFList createList(final Iterator<? extends RDFNode> members) {
 		checkUpdate();
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(RDF.rest.asNode()),
-				SecurityEvaluator.SecNode.FUTURE));
-		if (!(canCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(RDF.first.asNode()),
-				SecuredItemImpl.convert(Node.ANY)))))
-		{
+		checkCreate(new Triple(SecurityEvaluator.FUTURE, RDF.rest.asNode(),
+				SecurityEvaluator.FUTURE));
+
+		boolean canCreateAny = canCreate(new Triple(SecurityEvaluator.FUTURE,
+				RDF.first.asNode(), Node.ANY));
+		if (!canCreateAny) {
+			// have to check each of the possible entries in the list for
+			// creation.
 			final List<RDFNode> nodes = new ArrayList<RDFNode>();
-			while (members.hasNext())
-			{
+			while (members.hasNext()) {
 
 				final RDFNode n = members.next();
-				checkCreate(new SecurityEvaluator.SecTriple(
-						SecurityEvaluator.SecNode.FUTURE,
-						SecuredItemImpl.convert(RDF.first.asNode()),
-						SecuredItemImpl.convert(n.asNode())));
+				checkCreate(new Triple(SecurityEvaluator.FUTURE,
+						RDF.first.asNode(), n.asNode()));
 				nodes.add(n);
 			}
-			return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-					.createList(nodes.iterator()));
+			return SecuredRDFListImpl.getInstance(holder.getSecuredItem(),
+					holder.getBaseItem().createList(nodes.iterator()));
 
-		}
-		else
-		{
-			return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-					.createList(members));
+		} else {
+			return SecuredRDFListImpl.getInstance(holder.getSecuredItem(),
+					holder.getBaseItem().createList(members));
 		}
 	}
 
 	@Override
-	public SecuredRDFList createList( final RDFNode[] members )
-	{
+	public SecuredRDFList createList(final RDFNode[] members) {
 		return createList(Arrays.asList(members).iterator());
 	}
 
 	@Override
-	public SecuredLiteral createLiteral( final String v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createLiteral(v));
+	public SecuredLiteral createLiteral(final String v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createLiteral( final String v,
-			final boolean wellFormed )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createLiteral(v, wellFormed));
+	public SecuredLiteral createLiteral(final String v, final boolean wellFormed) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createLiteral(v, wellFormed));
 
 	}
 
 	@Override
-	public SecuredLiteral createLiteral( final String v, final String language )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createLiteral(v, language));
+	public SecuredLiteral createLiteral(final String v, final String language) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createLiteral(v, language));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final boolean o )
-	{
-		return createStatement(s, p,
-				ResourceFactory.createTypedLiteral(o));
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final boolean o) {
+		return createStatement(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final char o )
-	{
-		return createStatement(s, p,
-				ResourceFactory.createTypedLiteral(o));
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final char o) {
+		return createStatement(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final double o )
-	{
-		return createStatement(s, p,
-				ResourceFactory.createTypedLiteral(o));
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final double o) {
+		return createStatement(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final float o )
-	{
-		return createStatement(s, p,
-				ResourceFactory.createTypedLiteral(o));
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final float o) {
+		return createStatement(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final int o )
-	{
-		return createStatement(s, p,
-				ResourceFactory.createTypedLiteral(o));
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final int o) {
+		return createStatement(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final long o )
-	{
-		return createStatement(s, p,
-				ResourceFactory.createTypedLiteral(o));
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final long o) {
+		return createStatement(s, p, ResourceFactory.createTypedLiteral(o));
 	}
 
 	@Override
-	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final Object o )
-	{
+	public SecuredStatement createLiteralStatement(final Resource s,
+			final Property p, final Object o) {
 		return createStatement(s, p, asObject(o));
 	}
 
 	@Override
-	public SecuredProperty createProperty( final String uri )
-	{
-		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createProperty(uri));
+	public SecuredProperty createProperty(final String uri) {
+		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createProperty(uri));
 	}
 
 	@Override
-	public SecuredProperty createProperty( final String nameSpace,
-			final String localName )
-	{
+	public SecuredProperty createProperty(final String nameSpace,
+			final String localName) {
 		checkUpdate();
-		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createProperty(nameSpace, localName));
+		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createProperty(nameSpace, localName));
 	}
 
 	@Override
-	public ReifiedStatement createReifiedStatement( final Statement s )
-	{
+	public ReifiedStatement createReifiedStatement(final Statement s) {
 		checkUpdate();
-		checkCreate(SecurityEvaluator.SecNode.FUTURE, s.asTriple());
-		return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(), holder
-				.getBaseItem().createReifiedStatement(s));
+		checkCreateReified(null, s);
+		return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(),
+				holder.getBaseItem().createReifiedStatement(s));
 	}
 
 	@Override
-	public ReifiedStatement createReifiedStatement( final String uri,
-			final Statement s )
-	{
+	public ReifiedStatement createReifiedStatement(final String uri,
+			final Statement s) {
 		checkUpdate();
-		checkCreate(new SecurityEvaluator.SecNode(
-				SecurityEvaluator.SecNode.Type.URI, uri), s.asTriple());
-		return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(), holder
-				.getBaseItem().createReifiedStatement(uri, s));
+		checkCreateReified(uri, s);
+		return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(),
+				holder.getBaseItem().createReifiedStatement(uri, s));
 	}
 
 	@Override
-	public SecuredResource createResource()
-	{
-		// checkCreateAnonymousResource(SecurityEvaluator.SecNode.FUTURE);
-		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createResource());
+	public SecuredResource createResource() {
+		// checkCreateAnonymousResource(SecurityEvaluator.FUTURE);
+		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createResource());
 	}
 
 	@Override
-	public SecuredResource createResource( final AnonId id )
-	{
+	public SecuredResource createResource(final AnonId id) {
 		// checkCreateAnonymousResource(new SecurityEvaluator.SecNode(
 		// SecurityEvaluator.SecNode.Type.Anonymous, id.getLabelString()));
-		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createResource(id));
+		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createResource(id));
 	}
 
 	@Override
-	public SecuredResource createResource( final Resource type )
-	{
+	public SecuredResource createResource(final Resource type) {
 		checkUpdate();
-		final SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(RDF.type.asNode()),
-				SecuredItemImpl.convert(type.asNode()));
+		final Triple t = new Triple(SecurityEvaluator.FUTURE,
+				RDF.type.asNode(), type.asNode());
 		checkCreate(t);
 
-		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createResource(type));
+		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createResource(type));
 	}
 
 	@Override
 	@Deprecated
-	public SecuredResource createResource( final ResourceF f )
-	{
+	public SecuredResource createResource(final ResourceF f) {
 		return createResource(null, f);
 	}
 
 	@Override
-	public SecuredResource createResource( final String uri )
-	{
-		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createResource(uri));
+	public SecuredResource createResource(final String uri) {
+		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createResource(uri));
 
 	}
 
 	@Override
-	public SecuredResource createResource( final String uri, final Resource type )
-	{
+	public SecuredResource createResource(final String uri, final Resource type) {
 		final Resource r = ResourceFactory.createResource(uri);
-		final SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple(
-				SecuredItemImpl.convert(r.asNode()),
-				SecuredItemImpl.convert(RDF.type.asNode()),
-				SecuredItemImpl.convert(type.asNode()));
-		if (holder.getBaseItem().contains(r, RDF.type, type))
-		{
+		final Triple t = new Triple(r.asNode(), RDF.type.asNode(),
+				type.asNode());
+		if (holder.getBaseItem().contains(r, RDF.type, type)) {
 			checkRead();
 			checkRead(t);
-		}
-		else
-		{
+		} else {
 			checkUpdate();
 			checkCreate(t);
 		}
-		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createResource(uri, type));
+		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createResource(uri, type));
 
 	}
 
 	@Override
 	@Deprecated
-	public SecuredResource createResource( final String uri, final ResourceF f )
-	{
-		// Resource resource = f.createResource( ResourceFactory.createResource( uri )
-		// );
-		// checkCreateResource( resource );
-		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createResource(uri, f));
+	public SecuredResource createResource(final String uri, final ResourceF f) {
+		return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createResource(uri, f));
 	}
 
 	@Override
-	public SecuredSeq createSeq()
-	{
+	public SecuredSeq createSeq() {
 		checkUpdate();
-		checkCreate(new SecurityEvaluator.SecTriple(
-				SecurityEvaluator.SecNode.FUTURE,
-				SecuredItemImpl.convert(RDF.type.asNode()),
-				SecuredItemImpl.convert(RDF.Alt.asNode())));
-		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createSeq());
+		checkCreate(new Triple(SecurityEvaluator.FUTURE,
+				RDF.type.asNode(),
+				RDF.Alt.asNode()));
+		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createSeq());
 	}
 
 	@Override
-	public SecuredSeq createSeq( final String uri )
-	{
+	public SecuredSeq createSeq(final String uri) {
 		checkUpdate();
 		checkCreate(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(),
 				RDF.Alt.asNode()));
-		return SecuredSeqImpl.getInstance(holder.getSecuredItem(),
-				holder.getBaseItem().createSeq(uri));
+		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createSeq(uri));
 	}
 
 	@Override
-	public SecuredStatement createStatement( final Resource s,
-			final Property p, final RDFNode o )
-	{
+	public SecuredStatement createStatement(final Resource s, final Property p,
+			final RDFNode o) {
 		checkUpdate();
 		checkCreate(new Triple(s.asNode(), p.asNode(), o.asNode()));
-		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createStatement(s, p, o));
+		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createStatement(s, p, o));
 	}
 
 	@Override
-	public SecuredStatement createStatement( final Resource s,
-			final Property p, final String o )
-	{
+	public SecuredStatement createStatement(final Resource s, final Property p,
+			final String o) {
 		checkUpdate();
 		checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createURI(o)));
-		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createStatement(s, p, o));
+		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createStatement(s, p, o));
 	}
 
 	@Override
-	public SecuredStatement createStatement( final Resource s,
-			final Property p, final String o, final boolean wellFormed )
-	{
+	public SecuredStatement createStatement(final Resource s, final Property p,
+			final String o, final boolean wellFormed) {
 		return createStatement(s, p, o, "", wellFormed);
 	}
 
 	@Override
-	public SecuredStatement createStatement( final Resource s,
-			final Property p, final String o, final String l )
-	{
+	public SecuredStatement createStatement(final Resource s, final Property p,
+			final String o, final String l) {
 		return createStatement(s, p, o, l, false);
 	}
 
 	@Override
-	public SecuredStatement createStatement( final Resource s,
-			final Property p, final String o, final String l,
-			final boolean wellFormed )
-	{
+	public SecuredStatement createStatement(final Resource s, final Property p,
+			final String o, final String l, final boolean wellFormed) {
 		checkUpdate();
-		checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(o, l,
-				wellFormed)));
-		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createStatement(s, p, o, l, wellFormed));
+		checkCreate(new Triple(s.asNode(), p.asNode(),
+				NodeFactory.createLiteral(o, l, wellFormed)));
+		return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createStatement(s, p, o, l, wellFormed));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final boolean v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final boolean v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final Calendar d )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(d));
+	public SecuredLiteral createTypedLiteral(final Calendar d) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(d));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final char v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final char v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final double v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final double v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final float v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final float v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final int v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final int v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final long v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final long v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final Object value )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(value));
+	public SecuredLiteral createTypedLiteral(final Object value) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(value));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final Object value,
-			final RDFDatatype dtype )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(value, dtype));
+	public SecuredLiteral createTypedLiteral(final Object value,
+			final RDFDatatype dtype) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(value, dtype));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final Object value,
-			final String typeURI )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(value, typeURI));
+	public SecuredLiteral createTypedLiteral(final Object value,
+			final String typeURI) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(value, typeURI));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final String v )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(v));
+	public SecuredLiteral createTypedLiteral(final String v) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(v));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final String lex,
-			final RDFDatatype dtype )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(lex, dtype));
+	public SecuredLiteral createTypedLiteral(final String lex,
+			final RDFDatatype dtype) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(lex, dtype));
 	}
 
 	@Override
-	public SecuredLiteral createTypedLiteral( final String lex,
-			final String typeURI )
-	{
-		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.createTypedLiteral(lex, typeURI));
+	public SecuredLiteral createTypedLiteral(final String lex,
+			final String typeURI) {
+		return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().createTypedLiteral(lex, typeURI));
 	}
 
 	@Override
-	public Model difference( final Model model )
-	{
+	public Model difference(final Model model) {
 		checkRead();
-		if (canRead(Triple.ANY))
-		{
+		if (canRead(Triple.ANY)) {
 			return holder.getBaseItem().difference(model);
-		}
-		else
-		{
+		} else {
 			return createCopy().difference(model);
 		}
 	}
 
 	@Override
-	public void enterCriticalSection( final boolean readLockRequested )
-	{
-		if (readLockRequested)
-		{
+	public void enterCriticalSection(final boolean readLockRequested) {
+		if (readLockRequested) {
 			checkRead();
-		}
-		else
-		{
+		} else {
 			checkUpdate();
 		}
 		holder.getBaseItem().enterCriticalSection(readLockRequested);
 	}
 
 	@Override
-	public Object executeInTransaction( final Command cmd )
-	{
+	public Object executeInTransaction(final Command cmd) {
 		return holder.getBaseItem().executeInTransaction(cmd);
 	}
 
 	@Override
-	public String expandPrefix( final String prefixed )
-	{
+	public String expandPrefix(final String prefixed) {
 		checkRead();
 		return holder.getBaseItem().expandPrefix(prefixed);
 	}
 
 	@Override
-	public SecuredAlt getAlt( final Resource r )
-	{
+	public SecuredAlt getAlt(final Resource r) {
 		checkRead();
 		checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Alt.asNode()));
-		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getAlt(r));
+		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getAlt(r));
 	}
 
 	@Override
-	public SecuredAlt getAlt( final String uri )
-	{
+	public SecuredAlt getAlt(final String uri) {
 		checkRead();
 		checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(),
 				RDF.Alt.asNode()));
-		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.getAlt(uri));
+		return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getAlt(uri));
 	}
 
 	@Override
-	public SecuredResource getAnyReifiedStatement( final Statement s )
-	{
+	public SecuredResource getAnyReifiedStatement(final Statement s) {
 		final RSIterator it = listReifiedStatements(s);
-		if (it.hasNext())
-		{
-			try
-			{
-				return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(),
-						it.nextRS());
-			}
-			finally
-			{
+		if (it.hasNext()) {
+			try {
+				return SecuredReifiedStatementImpl.getInstance(
+						holder.getSecuredItem(), it.nextRS());
+			} finally {
 				it.close();
 			}
-		}
-		else
-		{
-			return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(),
-					createReifiedStatement(s));
+		} else {
+			return SecuredReifiedStatementImpl.getInstance(
+					holder.getSecuredItem(), createReifiedStatement(s));
 		}
 	}
 
 	@Override
-	public SecuredBag getBag( final Resource r )
-	{
+	public SecuredBag getBag(final Resource r) {
 		checkRead();
 		checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Bag.asNode()));
-		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getBag(r));
+		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getBag(r));
 	}
 
 	@Override
-	public SecuredBag getBag( final String uri )
-	{
+	public SecuredBag getBag(final String uri) {
 		checkRead();
 		checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(),
 				RDF.Bag.asNode()));
-		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.getBag(uri));
+		return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getBag(uri));
 	}
 
 	@Override
-	public SecuredGraph getGraph()
-	{
+	public SecuredGraph getGraph() {
 		return graph;
 	}
 
 	@Override
-	public Lock getLock()
-	{
+	public Lock getLock() {
 		return holder.getBaseItem().getLock();
 	}
 
 	@Override
-	public Map<String, String> getNsPrefixMap()
-	{
+	public Map<String, String> getNsPrefixMap() {
 		checkRead();
 		return holder.getBaseItem().getNsPrefixMap();
 	}
 
 	@Override
-	public String getNsPrefixURI( final String prefix )
-	{
+	public String getNsPrefixURI(final String prefix) {
 		checkRead();
 		return holder.getBaseItem().getNsPrefixURI(prefix);
 	}
 
 	@Override
-	public String getNsURIPrefix( final String uri )
-	{
+	public String getNsURIPrefix(final String uri) {
 		checkRead();
 		return holder.getBaseItem().getNsURIPrefix(uri);
 	}
 
 	@Override
-	public SecuredStatement getProperty( final Resource s, final Property p )
-	{
+	public SecuredStatement getProperty(final Resource s, final Property p) {
 		final StmtIterator stmt = listStatements(s, p, (RDFNode) null);
-		try
-		{
-			if (stmt.hasNext())
-			{
-				return SecuredStatementImpl.getInstance(holder.getSecuredItem(), stmt.next());
+		try {
+			if (stmt.hasNext()) {
+				return SecuredStatementImpl.getInstance(
+						holder.getSecuredItem(), stmt.next());
 			}
 			return null;
-		}
-		finally
-		{
-			if (stmt != null)
-			{
+		} finally {
+			if (stmt != null) {
 				stmt.close();
 			}
 		}
 	}
 
 	@Override
-	public SecuredProperty getProperty( final String uri )
-	{
+	public SecuredProperty getProperty(final String uri) {
 		checkRead();
-		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.getProperty(uri));
+		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getProperty(uri));
 	}
 
 	@Override
-	public SecuredProperty getProperty( final String nameSpace,
-			final String localName )
-	{
+	public SecuredProperty getProperty(final String nameSpace,
+			final String localName) {
 		checkRead();
-		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.getProperty(nameSpace, localName));
+		return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getProperty(nameSpace, localName));
 	}
 
 	@Override
-	public SecuredRDFNode getRDFNode( final Node n )
-	{
+	public SecuredRDFNode getRDFNode(final Node n) {
 		RDFNode rdfNode = null;
-		if (n.isLiteral())
-		{
+		if (n.isLiteral()) {
 			rdfNode = ResourceFactory.createTypedLiteral(
 					n.getLiteralLexicalForm(), n.getLiteralDatatype());
-		}
-		else if (n.isURI())
-		{
+		} else if (n.isURI()) {
 			rdfNode = ResourceFactory.createProperty(n.getURI());
-		}
-		else if (n.isBlank())
-		{
+		} else if (n.isBlank()) {
 			rdfNode = ResourceFactory.createResource(n.getBlankNodeId()
 					.toString());
-		}
-		else
-		{
+		} else {
 			throw new IllegalArgumentException("Illegal SecNode type: " + n);
 		}
 
-		if (holder.getBaseItem().containsResource(rdfNode))
-		{
+		if (holder.getBaseItem().containsResource(rdfNode)) {
 			checkRead();
-		}
-		else
-		{
+		} else {
 			checkUpdate();
 		}
-		if (n.isLiteral())
-		{
-			return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-					.getRDFNode(n).asLiteral());
-		}
-		else
-		{
-			return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-					.getRDFNode(n).asResource());
+		if (n.isLiteral()) {
+			return SecuredLiteralImpl.getInstance(holder.getSecuredItem(),
+					holder.getBaseItem().getRDFNode(n).asLiteral());
+		} else {
+			return SecuredResourceImpl.getInstance(holder.getSecuredItem(),
+					holder.getBaseItem().getRDFNode(n).asResource());
 		}
 	}
 
 	@Override
-	public RDFReader getReader()
-	{
+	public RDFReader getReader() {
 		return holder.getBaseItem().getReader();
 	}
 
 	@Override
-	public RDFReader getReader( final String lang )
-	{
+	public RDFReader getReader(final String lang) {
 		return holder.getBaseItem().getReader(lang);
 	}
 
@@ -1547,82 +1265,67 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	public String removeReader(String lang) throws IllegalArgumentException {
 		return holder.getBaseItem().removeReader(lang);
 	}
-	
+
 	@Override
-	public SecuredStatement getRequiredProperty( final Resource s,
-			final Property p )
-	{
+	public SecuredStatement getRequiredProperty(final Resource s,
+			final Property p) {
 		checkRead();
-		if (canRead(Triple.ANY))
-		{
-			return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-					.getRequiredProperty(s, p));
-		}
-		else
-		{
+		if (canRead(Triple.ANY)) {
+			return SecuredStatementImpl.getInstance(holder.getSecuredItem(),
+					holder.getBaseItem().getRequiredProperty(s, p));
+		} else {
 			final SecuredStatementIterator si = listStatements(s, p,
 					(RDFNode) null);
-			try
-			{
-				if (si.hasNext())
-				{
+			try {
+				if (si.hasNext()) {
 					return (SecuredStatement) si.next();
-				}
-				else
-				{
+				} else {
 					throw new PropertyNotFoundException(p);
 				}
-			}
-			finally
-			{
+			} finally {
 				si.close();
 			}
 		}
 	}
 
 	@Override
-	public SecuredResource getResource( final String uri )
-	{
+	public SecuredResource getResource(final String uri) {
 		return createResource(uri);
 	}
 
 	@Override
 	@Deprecated
-	public SecuredResource getResource( final String uri, final ResourceF f )
-	{
+	public SecuredResource getResource(final String uri, final ResourceF f) {
 		return createResource(uri, f);
 	}
 
 	@Override
-	public SecuredSeq getSeq( final Resource r )
-	{
+	public SecuredSeq getSeq(final Resource r) {
 		checkRead();
 		checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Seq.asNode()));
-		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getSeq(r));
+		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getSeq(r));
 	}
 
 	@Override
-	public SecuredSeq getSeq( final String uri )
-	{
+	public SecuredSeq getSeq(final String uri) {
 		checkRead();
 		checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(),
 				RDF.Seq.asNode()));
-		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem()
-				.getSeq(uri));
+		return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder
+				.getBaseItem().getSeq(uri));
 	}
 
 	@Override
-	public RDFWriter getWriter()
-	{
+	public RDFWriter getWriter() {
 		return holder.getBaseItem().getWriter();
 	}
 
 	@Override
-	public RDFWriter getWriter( final String lang )
-	{
+	public RDFWriter getWriter(final String lang) {
 		return holder.getBaseItem().getWriter(lang);
 	}
-	
+
 	@SuppressWarnings("deprecation")
 	@Override
 	public void resetRDFWriterF() {
@@ -1636,64 +1339,49 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	}
 
 	@Override
-	public boolean independent()
-	{
+	public boolean independent() {
 		return false;
 	}
 
 	@Override
-	public Model intersection( final Model model )
-	{
+	public Model intersection(final Model model) {
 		checkRead();
-		if (!canRead(Triple.ANY))
-		{
+		if (!canRead(Triple.ANY)) {
 			return holder.getBaseItem().intersection(model);
-		}
-		else
-		{
+		} else {
 			return createCopy().intersection(model);
 		}
 	}
 
 	@Override
-	public boolean isClosed()
-	{
+	public boolean isClosed() {
 		return holder.getBaseItem().isClosed();
 	}
 
 	@Override
-	public boolean isEmpty()
-	{
+	public boolean isEmpty() {
 		checkRead();
 		return holder.getBaseItem().isEmpty();
 	}
 
 	@Override
-	public boolean isIsomorphicWith( final Model g )
-	{
+	public boolean isIsomorphicWith(final Model g) {
 		checkRead();
 		final boolean retval = holder.getBaseItem().isIsomorphicWith(g);
-		if (retval && !canRead(Triple.ANY))
-		{
+		if (retval && !canRead(Triple.ANY)) {
 			// in this case we have to check all the items in the graph to see
 			// if the user can read
 			// them all.
 			final ExtendedIterator<Statement> stmtIter = holder.getBaseItem()
 					.listStatements();
-			try
-			{
-				while (stmtIter.hasNext())
-				{
-					if (!canRead(stmtIter.next().asTriple()))
-					{
+			try {
+				while (stmtIter.hasNext()) {
+					if (!canRead(stmtIter.next())) {
 						return false;
 					}
 				}
-			}
-			finally
-			{
-				if (stmtIter != null)
-				{
+			} finally {
+				if (stmtIter != null) {
 					stmtIter.close();
 				}
 			}
@@ -1702,531 +1390,495 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel
 	}
 
 	@Override
-	public boolean isReified( final Statement s )
-	{
+	public boolean isReified(final Statement s) {
 		checkRead();
-		checkRead(s.asTriple());
+		checkRead(s);
 
 		final RSIterator it = listReifiedStatements(s);
-		try
-		{
+		try {
 			return it.hasNext();
-		}
-		finally
-		{
+		} finally {
 			it.close();
 		}
 	}
 
 	@Override
-	public void leaveCriticalSection()
-	{
+	public void leaveCriticalSection() {
 		holder.getBaseItem().leaveCriticalSection();
 	}
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate,
-			final boolean object )
-	{
+			final boolean object) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem()
 				.listLiteralStatements(subject, predicate, object));
 	}
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
-			final Resource subject, final Property predicate, final char object )
-	{
+			final Resource subject, final Property predicate, final char object) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem()
 				.listLiteralStatements(subject, predicate, object));
 	}
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate,
-			final double object )
-	{
+			final double object) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem()
 				.listLiteralStatements(subject, predicate, object));
 	}
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
-			final Resource subject, final Property predicate, final float object )
-	{
+			final Resource subject, final Property predicate, final float object) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem()
 				.listLiteralStatements(subject, predicate, object));
 	}
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
-			final Resource subject, final Property predicate, final long object )
-	{
+			final Resource subject, final Property predicate, final long object) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem()
 				.listLiteralStatements(subject, predicate, object));
 	}
 
 	@Override
-	public NsIterator listNameSpaces()
-	{
+	public NsIterator listNameSpaces() {
 		checkRead();
 		return holder.getBaseItem().listNameSpaces();
 	}
 
 	@Override
-	public SecuredNodeIterator<RDFNode> listObjects()
-	{
+	public SecuredNodeIterator<RDFNode> listObjects() {
 		checkRead();
 		ExtendedIterator<RDFNode> nIter = holder.getBaseItem().listObjects();
-		if (!canRead(SecTriple.ANY))
-		{
-			nIter = nIter.filterKeep( new ObjectFilter());
+		if (!canRead(Triple.ANY)) {
+			nIter = nIter.filterKeep(new ObjectFilter());
 		}
 		return new SecuredNodeIterator<RDFNode>(holder.getSecuredItem(), nIter);
 	}
 
 	@Override
-	public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Property p )
-	{
+	public SecuredNodeIterator<RDFNode> listObjectsOfProperty(final Property p) {
 		checkRead();
-		ExtendedIterator<RDFNode> nIter = holder.getBaseItem().listObjectsOfProperty(p);
-		if (!canRead(SecTriple.ANY))
-		{
-			nIter = nIter.filterKeep( new ObjectFilter(p));
+		ExtendedIterator<RDFNode> nIter = holder.getBaseItem()
+				.listObjectsOfProperty(p);
+		if (!canRead(Triple.ANY)) {
+			nIter = nIter.filterKeep(new ObjectFilter(p));
 		}
 		return new SecuredNodeIterator<RDFNode>(holder.getSecuredItem(), nIter);
 	}
 
 	@Override
-	public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Resource s,
-			final Property p )
-	{
+	public SecuredNodeIterator<RDFNode> listObjectsOfProperty(final Resource s,
+			final Property p) {
 		checkRead();
-		ExtendedIterator<RDFNode> nIter = holder.getBaseItem().listObjectsOfProperty(s, p);
-		if (!canRead(SecTriple.ANY))
-		{
-			nIter = nIter.filterKeep( new ObjectFilter(p));
+		ExtendedIterator<RDFNode> nIter = holder.getBaseItem()
+				.listObjectsOfProperty(s, p);
+		if (!canRead(Triple.ANY)) {
+			nIter = nIter.filterKeep(new ObjectFilter(p));
 		}
 		return new SecuredNodeIterator<RDFNode>(holder.getSecuredItem(), nIter);
 	}
 
 	@Override
-	public SecuredRSIterator listReifiedStatements()
-	{
+	public SecuredRSIterator listReifiedStatements() {
 		checkRead();
-		return new SecuredRSIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listReifiedStatements());
+		return new SecuredRSIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listReifiedStatements());
 	}
 
 	@Override
-	public SecuredRSIterator listReifiedStatements( final Statement st )
-	{
+	public SecuredRSIterator listReifiedStatements(final Statement st) {
 		checkRead();
 		checkRead(st);
-		return new SecuredRSIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listReifiedStatements(st));
+		return new SecuredRSIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listReifiedStatements(st));
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
-		
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
+
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final boolean o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final boolean o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createTypedLiteral(o)));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final char o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final char o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createTypedLiteral(o)));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final double o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final double o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createTypedLiteral(o)));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final float o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final float o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createTypedLiteral(o)));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final long o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final long o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createTypedLiteral(o)));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final Object o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final Object o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createTypedLiteral(o)));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final RDFNode o )
-	{
+	public SecuredResIterator listResourcesWithProperty(final Property p,
+			final RDFNode o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, o));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listResourcesWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, o));
 		}
-		return new SecuredResIterator( holder.getSecuredItem(), rIter );
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredStatementIterator listStatements()
-	{
+	public SecuredStatementIterator listStatements() {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listStatements());
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listStatements());
 	}
 
 	@Override
-	public SecuredStatementIterator listStatements( final Resource s,
-			final Property p, final RDFNode o )
-	{
+	public SecuredStatementIterator listStatements(final Resource s,
+			final Property p, final RDFNode o) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listStatements(s, p, o));
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listStatements(s, p, o));
 	}
 
 	@Override
-	public SecuredStatementIterator listStatements( final Resource subject,
-			final Property predicate, final String object )
-	{
+	public SecuredStatementIterator listStatements(final Resource subject,
+			final Property predicate, final String object) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listStatements(subject, predicate, object));
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listStatements(subject, predicate, object));
 	}
 
 	@Override
-	public SecuredStatementIterator listStatements( final Resource subject,
-			final Property predicate, final String object, final String lang )
-	{
+	public SecuredStatementIterator listStatements(final Resource subject,
+			final Property predicate, final String object, final String lang) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listStatements(subject, predicate, object, lang));
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listStatements(subject, predicate, object, lang));
 	}
 
 	@Override
-	public SecuredStatementIterator listStatements( final Selector s )
-	{
+	public SecuredStatementIterator listStatements(final Selector s) {
 		checkRead();
-		return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem()
-				.listStatements(s));
+		return new SecuredStatementIterator(holder.getSecuredItem(), holder
+				.getBaseItem().listStatements(s));
 	}
 
 	@Override
-	public SecuredResIterator listSubjects()
-	{
+	public SecuredResIterator listSubjects() {
 		checkRead();
 		ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjects();
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter());
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter());
 		}
-		return new SecuredResIterator(holder.getSecuredItem(),rIter);
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listSubjectsWithProperty( final Property p )
-	{
+	public SecuredResIterator listSubjectsWithProperty(final Property p) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listSubjectsWithProperty(p);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p));
 		}
-		return new SecuredResIterator(holder.getSecuredItem(),rIter);
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listSubjectsWithProperty( final Property p,
-			final RDFNode o )
-	{
+	public SecuredResIterator listSubjectsWithProperty(final Property p,
+			final RDFNode o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, o));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listSubjectsWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, o));
 		}
-		return new SecuredResIterator(holder.getSecuredItem(),rIter);
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listSubjectsWithProperty( final Property p,
-			final String o )
-	{
+	public SecuredResIterator listSubjectsWithProperty(final Property p,
+			final String o) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p, o);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createPlainLiteral(o)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listSubjectsWithProperty(p, o);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createPlainLiteral(o)));
 		}
-		return new SecuredResIterator(holder.getSecuredItem(),rIter);
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredResIterator listSubjectsWithProperty( final Property p,
-			final String o, final String l )
-	{
+	public SecuredResIterator listSubjectsWithProperty(final Property p,
+			final String o, final String l) {
 		checkRead();
-		ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p, o, l);
-		if (!canRead( SecTriple.ANY))
-		{
-			rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createLangLiteral(o, l)));
+		ExtendedIterator<Resource> rIter = holder.getBaseItem()
+				.listSubjectsWithProperty(p, o, l);
+		if (!canRead(Triple.ANY)) {
+			rIter = rIter.filterKeep(new ResourceFilter(p, ResourceFactory
+					.createLangLiteral(o, l)));
 		}
-		return new SecuredResIterator(holder.getSecuredItem(),rIter);	
+		return new SecuredResIterator(holder.getSecuredItem(), rIter);
 	}
 
 	@Override
-	public SecuredPrefixMapping lock()
-	{
+	public SecuredPrefixMapping lock() {
 		checkUpdate();
 		holder.getBaseItem().lock();
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public SecuredModel notifyEvent( final Object e )
-	{
+	public SecuredModel notifyEvent(final Object e) {
 		holder.getBaseItem().notifyEvent(e);
 		return holder.getSecuredItem();
 	}
 
 	@Override
-	public String qnameFor( final String uri )
-	{
+	public String qnameFor(final String uri) {
 		checkRead();
 		return holder.getBaseItem().qnameFor(uri);
 	}
 
 	@Override
-	public SecuredModel query( final Selector s )
-	{
+	public SecuredModel query(final Selector s) {
 		checkRead();
-		return SecuredModelImpl.getInstance(holder.getSecuredItem(),
-				holder.getBaseItem().query(new SecuredSelector(holder.getSecuredItem(), s)));
+		return SecuredModelImpl.getInstance(
+				holder.getSecuredItem(),
+				holder.getBaseItem().query(
+						new SecuredSelector(holder.getSecuredItem(), s)));
 	}
 
 	@Override
-	public SecuredModel read( final InputStream in, final String base )
-	{
+	public SecuredModel read(final InputStream in, final String base) {
 		checkUpdate();
-//		try
-//		{
-			SecuredModelImpl.readerFactory.getReader().read(holder.getSecuredItem(), in, base);
-			return holder.getSecuredItem();
-//		}
-//		catch (final JenaException e)
-//		{
-//			if ((e.getCause() != null)
-//					&& (e.getCause() instanceof AccessDeniedRuntimeException))
-//			{
-//				throw (AccessDeniedRuntimeException) e.getCause();
-//			}
-//			throw e;
-//		}
-	}
-
-	@Override
-	public SecuredModel read( final InputStream in, final String base,
-			final String lang )
-	{
+		// try
+		// {
+		SecuredModelImpl.readerFactory.getReader().read(
+				holder.getSecuredItem(), in, base);
+		return holder.getSecuredItem();
+		// }
+		// catch (final JenaException e)
+		// {
+		// if ((e.getCause() != null)
+		// && (e.getCause() instanceof AccessDeniedRuntimeException))
+		// {
+		// throw (AccessDeniedRuntimeException) e.getCause();
+		// }
+		// throw e;
+		// }
+	}
+
+	@Override
+	public SecuredModel read(final InputStream in, final String base,
+			final String lang) {
 		checkUpdate();
-//		try
-//		{
-			SecuredModelImpl.readerFactory.getReader(lang).read(holder.getSecuredItem(), in, base);
-			return holder.getSecuredItem();
-//		}
-//		catch (final JenaException e)
-//		{
-//			if ((e.getCause() != null)
-//					&& (e.getCause() instanceof AccessDeniedRuntimeException))
-//			{
-//				throw (AccessDeniedRuntimeException) e.getCause();
-//			}
-//			throw e;
-//		}
-	}
-
-	@Override
-	public SecuredModel read( final Reader reader, final String base )
-	{
+		// try
+		// {
+		SecuredModelImpl.readerFactory.getReader(lang).read(
+				holder.getSecuredItem(), in, base);
+		return holder.getSecuredItem();
+		// }
+		// catch (final JenaException e)
+		// {
+		// if ((e.getCause() != null)
+		// && (e.getCause() instanceof AccessDeniedRuntimeException))
+		// {
+		// throw (AccessDeniedRuntimeException) e.getCause();
+		// }
+		// throw e;
+		// }
+	}
+
+	@Override
+	public SecuredModel read(final Reader reader, final String base) {
 		checkUpdate();
-//		try
-//		{
-			SecuredModelImpl.readerFactory.getReader().read(holder.getSecuredItem(), reader, base);
-			return holder.getSecuredItem();
-//		}
-//		catch (final JenaException e)
-//		{
-//			if ((e.getCause() != null)
-//					&& (e.getCause() instanceof AccessDeniedRuntimeException))
-//			{
-//				throw (AccessDeniedRuntimeException) e.getCause();
-//			}
-//			throw e;
-//		}
-	}
-
-	@Override
-	public SecuredModel read( final Reader reader, final String base,
-			final String lang )
-	{
+		// try
+		// {
+		SecuredModelImpl.readerFactory.getReader().read(
+				holder.getSecuredItem(), reader, base);
+		return holder.getSecuredItem();
+		// }
+		// catch (final JenaException e)
+		// {
+		// if ((e.getCause() != null)
+		// && (e.getCause() instanceof AccessDeniedRuntimeException))
+		// {
+		// throw (AccessDeniedRuntimeException) e.getCause();
+		// }
+		// throw e;
+		// }
+	}
+
+	@Override
+	public SecuredModel read(final Reader reader, final String base,
+			final String lang) {
 		checkUpdate();
-//		try
-//		{
-			SecuredModelImpl.readerFactory.getReader(lang).read(holder.getSecuredItem(), reader,
-					base);
-			return holder.getSecuredItem();
-//		}
-//		catch (final JenaException e)
-//		{
-//			if ((e.getCause() != null)
-//					&& (e.getCause() instanceof AccessDeniedRuntimeException))
-//			{
-//				throw (AccessDeniedRuntimeException) e.getCause();
-//			}
-//			throw e;
-//		}
-	}
-
-	@Override
-	public SecuredModel read( final String url )
-	{
+		// try
+		// {
+		SecuredModelImpl.readerFactory.getReader(lang).read(
+				holder.getSecuredItem(), reader, base);
+		return holder.getSecuredItem();
+		// }
+		// catch (final JenaException e)
+		// {
+		// if ((e.getCause() != null)
+		// && (e.getCause() instanceof AccessDeniedRuntimeException))
+		// {
+		// throw (AccessDeniedRuntimeException) e.getCause();
+		// }
+		// throw e;
+		// }
+	}
+
+	@Override
+	public SecuredModel read(final String url) {
 		checkUpdate();
-//		try
-//		{
-			SecuredModelImpl.readerFactory.getReader().read(holder.getSecuredItem(), url);
-			return holder.getSecuredItem();
-//		}
-//		catch (final JenaException e)
-//		{
-//			if ((e.getCause() != null)
-//					&& (e.getCause() instanceof AccessDeniedRuntimeException))
-//			{
-//				throw (AccessDeniedRuntimeException) e.getCause();
-//			}
-//			throw e;
-//		}
-	}
-
-	@Override
-	public SecuredModel read( final String url, final String lang )
-	{
+		// try
+		// {
+		SecuredModelImpl.readerFactory.getReader().read(
+				holder.getSecuredItem(), url);
+		return holder.getSecuredItem();
+		// }
+		// catch (final JenaException e)
+		// {
+		// if ((e.getCause() != null)
+		// && (e.getCause() instanceof AccessDeniedRuntimeException))
+		// {
+		// throw (AccessDeniedRuntimeException) e.getCause();
+		// }
+		// throw e;
+		// }
+	}
+
+	@Override
+	public SecuredModel read(final String url, final String lang) {
 		checkUpdate();
-//		try
-//		{
-			SecuredModelImpl.readerFactory.getReader(lang).read(holder.getSecuredItem(), url);
-			return holder.getSecuredItem();
-//		}
-//		catch (final JenaException e)
-//		{
-//			if ((e.getCause() != null)
-//					&& (e.getCause() instanceof AccessDeniedRuntimeException))
-//			{
-//				throw (AccessDeniedRuntimeException) e.getCause();
-//			}
-//			throw e;
-//		}
-	}
-
-	@Override
-	public SecuredModel read( final String url, final String base,
-			final String lang )
-	{
-		try
-		{
+		// try
+		// {
+		SecuredModelImpl.readerFactory.getReader(lang).read(
+				holder.getSecuredItem(), url);
+		return holder.getSecuredItem();
+		// }
+		// catch (final JenaException e)
+		// {
+		// if ((e.getCause() != null)
+		// && (e.getCause() instanceof AccessDeniedRuntimeException))
+		// {
+		// throw (AccessDeniedRuntimeException) e.getCause();
+		// }
+		// throw e;
+		// }
+	}
+
+	@Override
+	public SecuredModel read(final String url, final String base,
+			final String lang) {
+		try {
 			final InputStream is = new URL(url).openStream();
-			try
-			{
+			try {
 				read(is, base, lang);
-			}
-			finally
-			{
-				if (null != is)
-				{
+			} finally {
+				if (null != is) {
 					is.close();
 				}
 			}
-		}
-		catch (fin

<TRUNCATED>

[4/4] jena git commit: Removed AccessDeniedRuntimeException as it was all commented out.

Posted by cl...@apache.org.
Removed AccessDeniedRuntimeException as it was all commented out.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2940ec30
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2940ec30
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2940ec30

Branch: refs/heads/master
Commit: 2940ec308561234bb39e7ab9436cdf4dea58bc14
Parents: 1dd6cfd
Author: Claude Warren <cl...@apache.org>
Authored: Sun Jul 19 10:26:10 2015 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Sun Jul 19 10:26:10 2015 +0100

----------------------------------------------------------------------
 .../AccessDeniedRuntimeException.java           | 66 --------------------
 1 file changed, 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/2940ec30/jena-permissions/src/main/java/org/apache/jena/permissions/AccessDeniedRuntimeException.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/AccessDeniedRuntimeException.java b/jena-permissions/src/main/java/org/apache/jena/permissions/AccessDeniedRuntimeException.java
deleted file mode 100644
index 19bba34..0000000
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/AccessDeniedRuntimeException.java
+++ /dev/null
@@ -1,66 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements. See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership. The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License. You may obtain a copy of the License at
-// * 
-// * http://www.apache.org/licenses/LICENSE-2.0
-// * 
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.jena.permissions;
-//
-//import org.apache.jena.permissions.SecurityEvaluator.Action;
-//import org.apache.jena.permissions.SecurityEvaluator.SecNode;
-//
-///**
-// * Exception thrown by the security system when an action is not allowed.
-// * 
-// * Contains the graphIRI and the action that was not allowed.
-// */
-//public class AccessDeniedRuntimeException extends RuntimeException
-//{
-//	private static final long serialVersionUID = 2789332975364811725L;
-//
-//	private String triple;
-//
-//	/**
-//	 * Constructor.
-//	 * @param uri The SecNode that identifies graph with the security.
-//	 * @param action The action that was prohibited.
-//	 */
-//	public AccessDeniedRuntimeException( final SecNode uri, final Action action )
-//	{
-//		super(String.format("securedModel sec. %s: %s", uri, action));
-//	}
-//
-//	/**
-//	 * Constructor.
-//	 * @param uri The SecNode that identifies graph with the security.
-//	 * @param triple The triple The triple on which the action was prohibited.
-//	 * @param action The action that was prohibited.
-//	 */
-//	public AccessDeniedRuntimeException( final SecNode uri, final String triple,
-//			final Action action )
-//	{
-//		super(String.format("triple sec. %s: %s", uri, action));
-//		this.triple = triple;
-//	}
-//
-//	/**
-//	 * @return The triple on which the action was prohibited.  May be null.
-//	 */
-//	public String getTriple()
-//	{
-//		return triple;
-//	}
-//
-//}