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/17 20:06:14 UTC

[07/10] jena git commit: Updates for JENA-990 Modified permissions to use new Exceptions. Added ReadDeniedException Added UpdateDeniedException

http://git-wip-us.apache.org/repos/asf/jena/blob/fcf71889/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
index f506308..a8b5530 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java
@@ -28,7 +28,8 @@ import java.util.List ;
 import org.apache.jena.datatypes.RDFDatatype ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.Triple ;
-import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.UpdateDeniedException;
 import org.apache.jena.permissions.graph.SecuredGraph;
 import org.apache.jena.permissions.graph.SecuredPrefixMapping;
 import org.apache.jena.permissions.model.impl.SecuredNodeIterator;
@@ -36,6 +37,8 @@ import org.apache.jena.permissions.model.impl.SecuredRSIterator;
 import org.apache.jena.permissions.model.impl.SecuredResIterator;
 import org.apache.jena.permissions.model.impl.SecuredStatementIterator;
 import org.apache.jena.rdf.model.* ;
+import org.apache.jena.shared.AddDeniedException;
+import org.apache.jena.shared.DeleteDeniedException;
 import org.apache.jena.shared.PropertyNotFoundException ;
 
 /**
@@ -52,165 +55,183 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create for each statement as a triple.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final List<Statement> statements )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create for each statement in the securedModel as a triple.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public SecuredModel add( final Model m ) throws AccessDeniedException;
+	public SecuredModel add( final Model m ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create the triple SecTriple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final Resource s, final Property p, final RDFNode o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create the triple SecTriple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final Resource s, final Property p, final String o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create the triple SecTriple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final Resource s, final Property p,
 			final String o, final boolean wellFormed )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create the triple SecTriple(s,p,literal(lex,datatype))
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final Resource s, final Property p,
 			final String lex, final RDFDatatype datatype )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create the triple SecTriple(s,p,literal(o,l,false))
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final Resource s, final Property p,
-			final String o, final String l ) throws AccessDeniedException;
+			final String o, final String l ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create the statement as a triple
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public SecuredModel add( final Statement s ) throws AccessDeniedException;
+	public SecuredModel add( final Statement s ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create all the statements as triples.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final Statement[] statements )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create all the statements as triples.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel add( final StmtIterator iter )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final boolean o ) throws AccessDeniedException;
+			final boolean o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final char o ) throws AccessDeniedException;
+			final char o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final double o ) throws AccessDeniedException;
+			final double o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final float o ) throws AccessDeniedException;
+			final float o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final int o ) throws AccessDeniedException;
+			final int o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final Literal o ) throws AccessDeniedException;
+			final Literal o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final long o ) throws AccessDeniedException;
+			final long o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create triple(s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	@Deprecated
 	public SecuredModel addLiteral( final Resource s, final Property p,
-			final Object o ) throws AccessDeniedException;
+			final Object o ) throws UpdateDeniedException, AddDeniedException;
 
 	@Override
 	public SecuredRDFNode asRDFNode( final Node n );
@@ -221,10 +242,12 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.graph Update it t does not exist
 	 * @sec.triple Read if t does exist
 	 * @sec.triple Create if t does exist
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
+	 * @throws ReadException
 	 */
 	public SecuredStatement asStatement( final Triple t )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException, ReadDeniedException;
 
 	@Override
 	public SecuredModel begin();
@@ -235,199 +258,203 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, SecNode.ANY )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean contains( final Resource s, final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, o )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean contains( final Resource s, final Property p, final RDFNode o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, o )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean contains( final Resource s, final Property p, final String o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o,l,null) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean contains( final Resource s, final Property p,
-			final String o, final String l ) throws AccessDeniedException;
+			final String o, final String l ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read s as a triple with null replaced by SecNode.ANY
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean contains( final Statement s ) throws AccessDeniedException;
+	public boolean contains( final Statement s ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read every statement in securedModel.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsAll( final Model model )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read every statement
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsAll( final StmtIterator iter )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read any statement in securedModel to be included in check, if
 	 *            no
 	 *            statement in securedModel can be read will return false;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsAny( final Model model )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read any statement in iter to be included in check, if no
 	 *            statement in iter can be read will return false;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsAny( final StmtIterator iter )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final boolean o ) throws AccessDeniedException;
+			final boolean o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final char o ) throws AccessDeniedException;
+			final char o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final double o ) throws AccessDeniedException;
+			final double o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final float o ) throws AccessDeniedException;
+			final float o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final int o ) throws AccessDeniedException;
+			final int o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, literal(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final long o ) throws AccessDeniedException;
+			final long o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, typedLiteral(o) )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsLiteral( final Resource s, final Property p,
-			final Object o ) throws AccessDeniedException;
+			final Object o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( s, p, resource) where SecTriple(s,p,resource) is in the
 	 *            securedModel.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean containsResource( final RDFNode r )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.ANY, RDF.type, Rdf.Alt)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public SecuredAlt createAlt() throws AccessDeniedException;
+	public SecuredAlt createAlt() throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( uri, RDF.type, Rdf.Alt)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredAlt createAlt( final String uri )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.ANY, RDF.type, Rdf.Bag)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public SecuredBag createBag() throws AccessDeniedException;
+	public SecuredBag createBag() throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( uri, RDF.type, Rdf.Bag)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredBag createBag( final String uri )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
-	public SecuredRDFList createList() throws AccessDeniedException;
+	public SecuredRDFList createList() throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
@@ -436,11 +463,12 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 *            RDF.first.asNode(),
 	 *            member.asNode())
 	 * @sec.triple Create SecTriple(SecNode.ANY, RDF.rest.asNode(), SecNode.ANY)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredRDFList createList( final Iterator<? extends RDFNode> members )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
@@ -449,92 +477,102 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 *            RDF.first.asNode(),
 	 *            member.asNode())
 	 * @sec.triple Create SecTriple(SecNode.ANY, RDF.rest.asNode(), SecNode.ANY)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredRDFList createList( final RDFNode[] members )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final boolean o ) throws AccessDeniedException;
+			final Property p, final boolean o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final char o ) throws AccessDeniedException;
+			final Property p, final char o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final double o ) throws AccessDeniedException;
+			final Property p, final double o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final float o ) throws AccessDeniedException;
+			final Property p, final float o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final int o ) throws AccessDeniedException;
+			final Property p, final int o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final long o ) throws AccessDeniedException;
+			final Property p, final long o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createLiteralStatement( final Resource s,
-			final Property p, final Object o ) throws AccessDeniedException;
+			final Property p, final Object o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Property createProperty( final String uri )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s,p,o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Property createProperty( final String nameSpace,
-			final String localName ) throws AccessDeniedException;
+			final String localName ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
@@ -544,11 +582,13 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple create SecTriple( SecNode.Future, RDF.subject,
 	 *            t.getPredicate() )
 	 * @sec.triple create SecTriple( SecNode.Future, RDF.subject, t.getObject() )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws ReadDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public ReifiedStatement createReifiedStatement( final Statement s )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, ReadDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
@@ -556,41 +596,48 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple create SecTriple( uri, RDF.subject, t.getSubject() )
 	 * @sec.triple create SecTriple( uri, RDF.subject, t.getPredicate() )
 	 * @sec.triple create SecTriple( uri, RDF.subject, t.getObject() )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws ReadDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public ReifiedStatement createReifiedStatement( final String uri,
-			final Statement s ) throws AccessDeniedException;
+			final Statement s ) throws UpdateDeniedException, ReadDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Read s as a triple
-	 * @sec.triple create SecTriple( SecNode.FUTURE, SecNode.IGNORE,
+	 * @sec.triple Create SecTriple( SecNode.FUTURE, SecNode.IGNORE,
 	 *            SecNode.IGNORE )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws ReadDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public SecuredResource createResource() throws AccessDeniedException;
+	public SecuredResource createResource() throws UpdateDeniedException, ReadDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Read s as a triple
-	 * @sec.triple create SecTriple( Anonymous(id), SecNode.IGNORE,
+	 * @sec.triple Create SecTriple( Anonymous(id), SecNode.IGNORE,
 	 *            SecNode.IGNORE )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws ReadDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredResource createResource( final AnonId id )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, ReadDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.type, type )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredResource createResource( final Resource type )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	@Override
 	@Deprecated
@@ -604,11 +651,13 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.graph Create if uri does not exist
 	 * @sec.triple Read if SecTriple( uri, RDF.type, type ) exists
 	 * @sec.triple Create if SecTriple( uri, RDF.type, type ) does not exist
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws ReadDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredResource createResource( final String uri, final Resource type )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, ReadDeniedException, AddDeniedException;
 
 	@Override
 	@Deprecated
@@ -617,67 +666,73 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.type, RDF.Alt )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @trhows AddDeniedException
 	 */
 	@Override
-	public SecuredSeq createSeq() throws AccessDeniedException;
+	public SecuredSeq createSeq() throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( uri, RDF.type, RDF.Alt )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @trhows AddDeniedException
 	 */
 	@Override
 	public SecuredSeq createSeq( final String uri )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @trhows AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createStatement( final Resource s,
-			final Property p, final RDFNode o ) throws AccessDeniedException;
+			final Property p, final RDFNode o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @trhows AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createStatement( final Resource s,
-			final Property p, final String o ) throws AccessDeniedException;
+			final Property p, final String o ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s, p, o )
-	 * @throws AccessDeniedException
+	 * @throws AccessDeniedRuntimeException
 	 */
 	@Override
 	public SecuredStatement createStatement( final Resource s,
 			final Property p, final String o, final boolean wellFormed )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s, p, literal(o,l,false ))
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @trhows AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createStatement( final Resource s,
 			final Property p, final String o, final String l )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( s, p, literal(o,l,wellFormed )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @trhows AddDeniedException
 	 */
 	@Override
 	public SecuredStatement createStatement( final Resource s,
 			final Property p, final String o, final String l,
-			final boolean wellFormed ) throws AccessDeniedException;
+			final boolean wellFormed ) throws UpdateDeniedException, AddDeniedException;
 
 	@Override
 	public SecuredLiteral createTypedLiteral( final boolean v );
@@ -725,43 +780,44 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read for every triple contributed to the difference.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public Model difference( final Model model ) throws AccessDeniedException;
+	public Model difference( final Model model ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read if read lock is requested
 	 * @sec.graph Update if write lock is requested
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public void enterCriticalSection( final boolean readLockRequested )
-			throws AccessDeniedException;
+			throws ReadDeniedException, UpdateDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public String expandPrefix( final String prefixed )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( resource, RDF.type, RDF.alt )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredAlt getAlt( final Resource r ) throws AccessDeniedException;
+	public SecuredAlt getAlt( final Resource r ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( uri, RDF.type, RDF.alt )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredAlt getAlt( final String uri ) throws AccessDeniedException;
+	public SecuredAlt getAlt( final String uri ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read if statement exists
@@ -779,27 +835,29 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 *            reification did not exist
 	 * @sec.triple Create SecTriple( result, RDF.object, s.getObject() ) if
 	 *            reification did not exist
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredResource getAnyReifiedStatement( final Statement s )
-			throws AccessDeniedException;
+			throws ReadDeniedException, UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( resource, RDF.type, RDF.Bag )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredBag getBag( final Resource r ) throws AccessDeniedException;
+	public SecuredBag getBag( final Resource r ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple( uri, RDF.type, RDF.Bag )
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredBag getBag( final String uri ) throws AccessDeniedException;
+	public SecuredBag getBag( final String uri ) throws ReadDeniedException;
 
 	@Override
 	public SecuredGraph getGraph();
@@ -807,35 +865,35 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read on the returned statement.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatement getProperty( final Resource s, final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public Property getProperty( final String uri )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public Property getProperty( final String nameSpace, final String localName )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read if the node exists
 	 * @sec.graph Update if the node does not exist
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public RDFNode getRDFNode( final Node n ) throws AccessDeniedException;
+	public RDFNode getRDFNode( final Node n ) throws ReadDeniedException;
 
 	/**
 	 * .
@@ -850,13 +908,13 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read on SecTriple(s, p, SecNode.ANY) if
 	 *            PropertyNotFoundException
 	 *            was thrown
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws PropertyNotFoundException
 	 */
 	@Override
 	public SecuredStatement getRequiredProperty( final Resource s,
 			final Property p ) throws PropertyNotFoundException,
-			AccessDeniedException;
+			ReadDeniedException;
 
 	@Override
 	public SecuredResource getResource( final String uri );
@@ -869,173 +927,172 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on SecTriple(resource, RDF.type, RDF.Seq)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredSeq getSeq( final Resource r ) throws AccessDeniedException;
+	public SecuredSeq getSeq( final Resource r ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on SecTriple(uri, RDF.type, RDF.Seq)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredSeq getSeq( final String uri ) throws AccessDeniedException;
+	public SecuredSeq getSeq( final String uri ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples contributed to the new securedModel.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public Model intersection( final Model model ) throws AccessDeniedException;
+	public Model intersection( final Model model ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean isEmpty() throws AccessDeniedException;
+	public boolean isEmpty() throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read all compared triples. Triples that can not be read will
 	 *            not be compared.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean isIsomorphicWith( final Model g )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on s as triple
 	 * @sec.triple Read on at least one set reified statements.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean isReified( final Statement s ) throws AccessDeniedException;
+	public boolean isReified( final Statement s ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate,
-			final boolean object ) throws AccessDeniedException;
+			final boolean object ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate, final char object )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate,
-			final double object ) throws AccessDeniedException;
+			final double object ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
-
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate, final float object )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 
 	@Override
 	public SecuredStatementIterator listLiteralStatements(
 			final Resource subject, final Property predicate, final long object )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public NsIterator listNameSpaces() throws AccessDeniedException;
+	public NsIterator listNameSpaces() throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on each RDFNode returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredNodeIterator<RDFNode> listObjects() throws AccessDeniedException;
+	public SecuredNodeIterator<RDFNode> listObjects() throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on each RDFNode returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on each RDFNode returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Resource s,
-			final Property p ) throws AccessDeniedException;
+			final Property p ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on each Reified statement returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredRSIterator listReifiedStatements()
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on each Reified statement returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredRSIterator listReifiedStatements( final Statement st )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1043,11 +1100,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1055,12 +1112,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
-
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final boolean o ) throws AccessDeniedException;
+			final boolean o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1068,12 +1124,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
-
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final char o ) throws AccessDeniedException;
+			final char o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1081,11 +1136,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final double o ) throws AccessDeniedException;
+			final double o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1093,11 +1148,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final float o ) throws AccessDeniedException;
+			final float o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1105,11 +1160,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final long o ) throws AccessDeniedException;
+			final long o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1117,11 +1172,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned;
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final Object o ) throws AccessDeniedException;
+			final Object o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1129,63 +1184,63 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listResourcesWithProperty( final Property p,
-			final RDFNode o ) throws AccessDeniedException;
+			final RDFNode o ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listStatements()
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listStatements( final Resource s,
-			final Property p, final RDFNode o ) throws AccessDeniedException;
+			final Property p, final RDFNode o ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listStatements( final Resource subject,
 			final Property predicate, final String object )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listStatements( final Resource subject,
 			final Property predicate, final String object, final String lang )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all triples returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listStatements( final Selector s )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1193,10 +1248,10 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredResIterator listSubjects() throws AccessDeniedException;
+	public SecuredResIterator listSubjects() throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1204,11 +1259,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listSubjectsWithProperty( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1216,11 +1271,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listSubjectsWithProperty( final Property p,
-			final RDFNode o ) throws AccessDeniedException;
+			final RDFNode o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1228,11 +1283,11 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listSubjectsWithProperty( final Property p,
-			final String o ) throws AccessDeniedException;
+			final String o ) throws ReadDeniedException;
 
 	/**
 	 * 
@@ -1240,19 +1295,19 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * @sec.triple Read at least one SecTriple( resource, p, o ) for each
 	 *            resource
 	 *            returned
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResIterator listSubjectsWithProperty( final Property p,
-			final String o, final String l ) throws AccessDeniedException;
+			final String o, final String l ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredPrefixMapping lock() throws AccessDeniedException;
+	public SecuredPrefixMapping lock() throws ReadDeniedException;
 
 	@Override
 	public SecuredModel notifyEvent( final Object e );
@@ -1260,242 +1315,252 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	/**
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public String qnameFor( final String uri ) throws AccessDeniedException;
+	public String qnameFor( final String uri ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredModel query( final Selector s ) throws AccessDeniedException;
+	public SecuredModel query( final Selector s ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredModel read( final InputStream in, final String base )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredModel read( final InputStream in, final String base,
-			final String lang ) throws AccessDeniedException;
+			final String lang ) throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredModel read( final Reader reader, final String base )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredModel read( final Reader reader, final String base,
-			final String lang ) throws AccessDeniedException;
+			final String lang ) throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
-	public SecuredModel read( final String url ) throws AccessDeniedException;
+	public SecuredModel read( final String url ) throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredModel read( final String url, final String lang )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredModel read( final String url, final String base,
-			final String lang ) throws AccessDeniedException;
+			final String lang ) throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * Listener will be filtered to only report events that the user can see.
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel register( final ModelChangedListener listener )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every statement in statments.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredModel remove( final List<Statement> statements )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every statement in baseModel.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
-	public SecuredModel remove( final Model m ) throws AccessDeniedException;
+	public SecuredModel remove( final Model m ) throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on SecTriple( s, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
-	public SecuredModel remove( final Resource s, final Property p, final RDFNode o ) throws AccessDeniedException;
+	public SecuredModel remove( final Resource s, final Property p, final RDFNode o ) throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on statment.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredModel remove( final Statement s )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every statement in statments.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredModel remove( final Statement[] statements )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every statement in iter.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredModel remove( final StmtIterator iter )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every statement in the securedModel
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
-	public SecuredModel removeAll() throws AccessDeniedException;
+	public SecuredModel removeAll() throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every statement identified by SecTriple( s,p,o)
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredModel removeAll( final Resource s, final Property p,
-			final RDFNode r ) throws AccessDeniedException;
+			final RDFNode r ) throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every reification statement for each statement in
 	 *            statments.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public void removeAllReifications( final Statement s )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public SecuredPrefixMapping removeNsPrefix( final String prefix )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
 	 * @sec.triple Delete on every reification statement fore each statement in
 	 *            rs.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public void removeReification( final ReifiedStatement rs )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public String setReaderClassName( final String lang, final String className )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
 	public String setWriterClassName( final String lang, final String className )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public String shortForm( final String uri ) throws AccessDeniedException;
+	public String shortForm( final String uri ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public long size() throws AccessDeniedException;
+	public long size() throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements contributed to the union.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public Model union( final Model model ) throws AccessDeniedException;
+	public Model union( final Model model ) throws ReadDeniedException;
 
 	@Override
 	public SecuredModel unregister( final ModelChangedListener listener );
@@ -1507,60 +1572,60 @@ public interface SecuredModel extends Model, SecuredPrefixMapping
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements that are written.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel write( final OutputStream out )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements that are written.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel write( final OutputStream out, final String lang )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements that are written.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel write( final OutputStream out, final String lang,
-			final String base ) throws AccessDeniedException;
+			final String base ) throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements that are written.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel write( final Writer writer )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements that are written.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel write( final Writer writer, final String lang )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read on all statements that are written.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredModel write( final Writer writer, final String lang,
-			final String base ) throws AccessDeniedException;
+			final String base ) throws ReadDeniedException;
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/fcf71889/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
index 9a5add6..222ebef 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java
@@ -17,7 +17,7 @@
  */
 package org.apache.jena.permissions.model;
 
-import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.ReadDeniedException;
 import org.apache.jena.rdf.model.Property ;
 
 /**
@@ -30,9 +30,9 @@ public interface SecuredProperty extends SecuredResource, Property
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public int getOrdinal() throws AccessDeniedException;
+	public int getOrdinal() throws ReadDeniedException;
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/fcf71889/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
index b629333..6552a26 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java
@@ -21,9 +21,12 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.ReadDeniedException;
 import org.apache.jena.permissions.SecurityEvaluator.Action;
+import org.apache.jena.permissions.UpdateDeniedException;
 import org.apache.jena.rdf.model.* ;
+import org.apache.jena.shared.AddDeniedException;
+import org.apache.jena.shared.DeleteDeniedException;
 import org.apache.jena.util.iterator.ExtendedIterator ;
 
 public interface SecuredRDFList extends RDFList, SecuredResource
@@ -33,10 +36,11 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple(SecNode.FUTURE, listFirst(), value)
 	 * @sec.triple Create SecTriple(SecNode.FUTURE, listFirst(), listNil())
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public void add( final RDFNode value ) throws AccessDeniedException;
+	public void add( final RDFNode value ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * Resulting list will contain the readable nodes from this list
@@ -44,10 +48,12 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public RDFList append( final Iterator<? extends RDFNode> nodes )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * Resulting list will contain the readable nodes from this list
@@ -56,9 +62,11 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public RDFList append( final RDFList list ) throws AccessDeniedException;
+	public RDFList append( final RDFList list ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * Uses the security settings for the application of the function calls.
@@ -67,11 +75,11 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * @sec.graph Read
 	 * @sec.triple Read (to be included in the calculation)
 	 * @sec.triple other permissions required by the function.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 *             graph Read or other permissions are not met
 	 */
 	@Override
-	public void apply( final ApplyFn fn ) throws AccessDeniedException;
+	public void apply( final ApplyFn fn ) throws ReadDeniedException;
 
 	/**
 	 * This method is intended to provide the capabilities to apply functions
@@ -89,10 +97,10 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read and constraints
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	public void apply( Set<Action> constraints, final ApplyFn fn )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.triple Read for triples containing the returned RDFNodes.
@@ -106,39 +114,42 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, node ) for each
 	 *            node in
 	 *            nodes.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public void concatenate( final Iterator<? extends RDFNode> nodes )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, node ) for each
 	 *            node in
 	 *            list.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public void concatenate( final RDFList list ) throws AccessDeniedException;
+	public void concatenate( final RDFList list ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredRDFList cons( final RDFNode value )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean contains( final RDFNode value ) throws AccessDeniedException;
+	public boolean contains( final RDFNode value ) throws ReadDeniedException;
 
 	/**
 	 * Creates a copy of this list comprising the readable elements of this
@@ -147,9 +158,11 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * @sec.triple Read on each triple to be read.
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value )
 	 * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this )
+	 * @throws ReadDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
-	public SecuredRDFList copy();
+	public SecuredRDFList copy() throws ReadDeniedException, AddDeniedException;
 
 	/**
 	 * Answer the node that is the i'th element of the list, assuming that the
@@ -159,13 +172,13 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * List may be shortened by security constraints.
 	 * 
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public SecuredRDFNode get( final int i ) throws AccessDeniedException,
+	public SecuredRDFNode get( final int i ) throws ReadDeniedException,
 			EmptyListException, ListIndexException, InvalidListException;
 
 	/**
@@ -175,11 +188,11 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 */
 	@Override
-	public RDFNode getHead() throws AccessDeniedException, EmptyListException;
+	public RDFNode getHead() throws ReadDeniedException, EmptyListException;
 
 	/**
 	 * The value that is at the tail of the list.
@@ -188,77 +201,78 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public SecuredRDFList getTail() throws AccessDeniedException,
+	public SecuredRDFList getTail() throws ReadDeniedException,
 			EmptyListException, ListIndexException, InvalidListException;
 
 	/**
 	 * @sec.graph Read
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public String getValidityErrorMessage() throws AccessDeniedException;
+	public String getValidityErrorMessage() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public int indexOf( final RDFNode value ) throws AccessDeniedException,
+	public int indexOf( final RDFNode value ) throws ReadDeniedException,
 			EmptyListException, ListIndexException, InvalidListException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
 	public int indexOf( final RDFNode value, final int start )
-			throws AccessDeniedException, EmptyListException,
+			throws ReadDeniedException, EmptyListException,
 			ListIndexException, InvalidListException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean isEmpty() throws AccessDeniedException;
+	public boolean isEmpty() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean isValid() throws AccessDeniedException, EmptyListException,
+	public boolean isValid() throws ReadDeniedException, EmptyListException,
 			ListIndexException, InvalidListException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value to be included in the result.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public ExtendedIterator<RDFNode> iterator() throws AccessDeniedException;
+	public ExtendedIterator<RDFNode> iterator() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read + requiredPerms for triple containing value to be
 	 *            included in the result.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	public ExtendedIterator<RDFNode> iterator( Set<Action> requiredPerms )
-			throws AccessDeniedException, EmptyListException,
+			throws ReadDeniedException, EmptyListException,
 			ListIndexException, InvalidListException;
 
 	/**
@@ -268,14 +282,14 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
 	public Object reduce( final ReduceFn fn, final Object initial )
-			throws AccessDeniedException, EmptyListException,
+			throws ReadDeniedException, EmptyListException,
 			ListIndexException, InvalidListException;
 
 	/**
@@ -292,123 +306,129 @@ public interface SecuredRDFList extends RDFList, SecuredResource
 	 *            The reduction function
 	 * @param initial
 	 *            The initial state for the ruduce value.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	public Object reduce( Set<Action> requiredActions, final ReduceFn fn,
-			final Object initial ) throws AccessDeniedException,
+			final Object initial ) throws ReadDeniedException,
 			EmptyListException, ListIndexException, InvalidListException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Delete for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public RDFList remove( final RDFNode val ) throws AccessDeniedException;
+	public RDFList remove( final RDFNode val ) throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Delete for all triples.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
 	@Deprecated
-	public void removeAll() throws AccessDeniedException;
+	public void removeAll() throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Delete for the head triple.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public RDFList removeHead() throws AccessDeniedException;
+	public RDFList removeHead() throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Delete for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public void removeList() throws AccessDeniedException;
+	public void removeList() throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * @sec.graph Update
-	 * @sec.triple Update for triplie i, and value.
-	 * @throws AccessDeniedException
+	 * @sec.triple Update for triple i, and value.
+	 * @throws UpdateDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
 	public SecuredRDFNode replace( final int i, final RDFNode value )
-			throws AccessDeniedException;
+			throws UpdateDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read for triples included in the comparison.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
 	public boolean sameListAs( final RDFList list )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
 	public SecuredRDFNode setHead( final RDFNode value )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * @sec.graph Update
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
 	 */
 	@Override
-	public void setStrict( final boolean strict ) throws AccessDeniedException;
+	public void setStrict( final boolean strict ) throws UpdateDeniedException;
 
 	/**
 	 * Size may be modified by security constraionts.
 	 * 
 	 * @sec.graph Read
 	 * @sec.triple Read for triples counted in the result.
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 * @throws EmptyListException
 	 * @throws ListIndexException
 	 * @throws InvalidListException
 	 */
 	@Override
-	public int size() throws AccessDeniedException;
+	public int size() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create for triple containing value.
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredRDFList with( final RDFNode value )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/fcf71889/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 fee3a91..e320469 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
@@ -18,7 +18,7 @@
 package org.apache.jena.permissions.model;
 
 import org.apache.jena.graph.Node ;
-import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.ReadDeniedException;
 import org.apache.jena.permissions.impl.SecuredItem;
 import org.apache.jena.rdf.model.Model ;
 import org.apache.jena.rdf.model.RDFNode ;
@@ -33,27 +33,27 @@ public interface SecuredRDFNode extends RDFNode, SecuredItem
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public Node asNode() throws AccessDeniedException;
+	public Node asNode() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public <T extends RDFNode> boolean canAs( final Class<T> view )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	@Override
 	public SecuredModel getModel();
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public RDFNode inModel( final Model m ) throws AccessDeniedException;
+	public RDFNode inModel( final Model m ) throws ReadDeniedException;
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/fcf71889/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
index 471f718..1eea2dc 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java
@@ -17,7 +17,8 @@
  */
 package org.apache.jena.permissions.model;
 
-import org.apache.jena.permissions.AccessDeniedException;
+
+import org.apache.jena.permissions.ReadDeniedException;
 import org.apache.jena.rdf.model.ReifiedStatement ;
 
 /**
@@ -30,9 +31,9 @@ public interface SecuredReifiedStatement extends ReifiedStatement,
 {
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public SecuredStatement getStatement();
+	public SecuredStatement getStatement() throws ReadDeniedException;
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/fcf71889/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
----------------------------------------------------------------------
diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
index 45576e7..8f9ce38 100644
--- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
+++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java
@@ -18,9 +18,12 @@
 package org.apache.jena.permissions.model;
 
 import org.apache.jena.datatypes.RDFDatatype ;
-import org.apache.jena.permissions.AccessDeniedException;
+import org.apache.jena.permissions.ReadDeniedException;
+import org.apache.jena.permissions.UpdateDeniedException;
 import org.apache.jena.permissions.model.impl.SecuredStatementIterator;
 import org.apache.jena.rdf.model.* ;
+import org.apache.jena.shared.AddDeniedException;
+import org.apache.jena.shared.DeleteDeniedException;
 
 /**
  * The interface for secured Resource instances.
@@ -36,101 +39,112 @@ public interface SecuredResource extends Resource, SecuredRDFNode
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public SecuredResource addLiteral( final Property p, final boolean o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addLiteral( final Property p, final char o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, value, d )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addLiteral( final Property value, final double d )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, value, d )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addLiteral( final Property value, final float d )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addLiteral( final Property p, final Literal o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addLiteral( final Property p, final long o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addLiteral( final Property p, final Object o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addProperty( final Property p, final RDFNode o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addProperty( final Property p, final String o )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, literal(lexicalForm,datatype) )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addProperty( final Property p, final String lexicalForm,
-			final RDFDatatype datatype ) throws AccessDeniedException;
+			final RDFDatatype datatype ) throws UpdateDeniedException, AddDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Create (this, p, o )
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws AddDeniedException
 	 */
 	@Override
 	public Resource addProperty( final Property p, final String o,
-			final String l ) throws AccessDeniedException;
+			final String l ) throws UpdateDeniedException, AddDeniedException;
 
 	@Override
 	public SecuredResource asResource();
@@ -143,191 +157,193 @@ public interface SecuredResource extends Resource, SecuredRDFNode
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean equals( final Object o ) throws AccessDeniedException;
+	public boolean equals( final Object o ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public AnonId getId() throws AccessDeniedException;
+	public AnonId getId() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public String getLocalName() throws AccessDeniedException;
+	public String getLocalName() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public String getNameSpace() throws AccessDeniedException;
+	public String getNameSpace() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatement getProperty( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredResource getPropertyResourceValue( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatement getRequiredProperty( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public String getURI() throws AccessDeniedException;
+	public String getURI() throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasLiteral( final Property p, final boolean o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasLiteral( final Property p, final char o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasLiteral( final Property p, final double o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasLiteral( final Property p, final float o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasLiteral( final Property p, final long o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasLiteral( final Property p, final Object o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean hasProperty( final Property p ) throws AccessDeniedException;
+	public boolean hasProperty( final Property p ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasProperty( final Property p, final RDFNode o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,o)
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasProperty( final Property p, final String o )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read SecTriple(this,p,literal(o,l))
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public boolean hasProperty( final Property p, final String o, final String l )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
-	public boolean hasURI( final String uri ) throws AccessDeniedException;
+	public boolean hasURI( final String uri ) throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read on returned Statements
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listProperties()
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Read
 	 * @sec.triple Read on returned Statements
-	 * @throws AccessDeniedException
+	 * @throws ReadDeniedException
 	 */
 	@Override
 	public SecuredStatementIterator listProperties( final Property p )
-			throws AccessDeniedException;
+			throws ReadDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Delete on associated Statements
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
 	public SecuredResource removeAll( final Property p )
-			throws AccessDeniedException;
+			throws UpdateDeniedException, DeleteDeniedException;
 
 	/**
 	 * @sec.graph Update
 	 * @sec.triple Delete on all Statements
-	 * @throws AccessDeniedException
+	 * @throws UpdateDeniedException
+	 * @throws DeleteDeniedException
 	 */
 	@Override
-	public SecuredResource removeProperties() throws AccessDeniedException;
+	public SecuredResource removeProperties() throws UpdateDeniedException, DeleteDeniedException;
 }