http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..f506308 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredModel.java @@ -0,0 +1,1566 @@ +/* + * 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.model; + +import java.io.InputStream ; +import java.io.OutputStream ; +import java.io.Reader ; +import java.io.Writer ; +import java.util.Calendar ; +import java.util.Iterator ; +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.graph.SecuredGraph; +import org.apache.jena.permissions.graph.SecuredPrefixMapping; +import org.apache.jena.permissions.model.impl.SecuredNodeIterator; +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.PropertyNotFoundException ; + +/** + * The interface for secured Model instances. + * + * Use the SecuredModel.Factory to create instances + */ +public interface SecuredModel extends Model, SecuredPrefixMapping +{ + + @Override + public SecuredModel abort(); + + /** + * @sec.graph Update + * @sec.triple Create for each statement as a triple. + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final List<Statement> statements ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create for each statement in the securedModel as a triple. + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Model m ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create the triple SecTriple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Resource s, final Property p, final RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create the triple SecTriple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Resource s, final Property p, final String o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create the triple SecTriple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Resource s, final Property p, + final String o, final boolean wellFormed ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create the triple SecTriple(s,p,literal(lex,datatype)) + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Resource s, final Property p, + final String lex, final RDFDatatype datatype ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create the triple SecTriple(s,p,literal(o,l,false)) + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Resource s, final Property p, + final String o, final String l ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create the statement as a triple + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Statement s ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create all the statements as triples. + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final Statement[] statements ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create all the statements as triples. + * @throws AccessDeniedException + */ + @Override + public SecuredModel add( final StmtIterator iter ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final boolean o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final char o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final double o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final float o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final int o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final Literal o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel addLiteral( final Resource s, final Property p, + final long o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create triple(s,p,o) + * @throws AccessDeniedException + */ + @Override + @Deprecated + public SecuredModel addLiteral( final Resource s, final Property p, + final Object o ) throws AccessDeniedException; + + @Override + public SecuredRDFNode asRDFNode( final Node n ); + + @Override + /** + * @sec.graph Read if t does exist + * @sec.graph Update it t does not exist + * @sec.triple Read if t does exist + * @sec.triple Create if t does exist + * @throws AccessDeniedException + */ + public SecuredStatement asStatement( final Triple t ) + throws AccessDeniedException; + + @Override + public SecuredModel begin(); + + @Override + public SecuredModel commit(); + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, SecNode.ANY ) + * @throws AccessDeniedException + */ + @Override + public boolean contains( final Resource s, final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, o ) + * @throws AccessDeniedException + */ + @Override + public boolean contains( final Resource s, final Property p, final RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, o ) + * @throws AccessDeniedException + */ + @Override + public boolean contains( final Resource s, final Property p, final String o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o,l,null) ) + * @throws AccessDeniedException + */ + @Override + public boolean contains( final Resource s, final Property p, + final String o, final String l ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read s as a triple with null replaced by SecNode.ANY + * @throws AccessDeniedException + */ + @Override + public boolean contains( final Statement s ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read every statement in securedModel. + * @throws AccessDeniedException + */ + @Override + public boolean containsAll( final Model model ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read every statement + * @throws AccessDeniedException + */ + @Override + public boolean containsAll( final StmtIterator iter ) + throws AccessDeniedException; + + /** + * @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 + */ + @Override + public boolean containsAny( final Model model ) + throws AccessDeniedException; + + /** + * @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 + */ + @Override + public boolean containsAny( final StmtIterator iter ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final boolean o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final char o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final double o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final float o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final int o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, literal(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final long o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, typedLiteral(o) ) + * @throws AccessDeniedException + */ + @Override + public boolean containsLiteral( final Resource s, final Property p, + final Object o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( s, p, resource) where SecTriple(s,p,resource) is in the + * securedModel. + * @throws AccessDeniedException + */ + @Override + public boolean containsResource( final RDFNode r ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.ANY, RDF.type, Rdf.Alt) + * @throws AccessDeniedException + */ + @Override + public SecuredAlt createAlt() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( uri, RDF.type, Rdf.Alt) + * @throws AccessDeniedException + */ + @Override + public SecuredAlt createAlt( final String uri ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.ANY, RDF.type, Rdf.Bag) + * @throws AccessDeniedException + */ + @Override + public SecuredBag createBag() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( uri, RDF.type, Rdf.Bag) + * @throws AccessDeniedException + */ + @Override + public SecuredBag createBag( final String uri ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredRDFList createList() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( RDF.nil, SecNode.IGNORE, SecNode.IGNORE) + * @sec.triple Create for each member SecTriple(SecNode.ANY, + * RDF.first.asNode(), + * member.asNode()) + * @sec.triple Create SecTriple(SecNode.ANY, RDF.rest.asNode(), SecNode.ANY) + * @throws AccessDeniedException + */ + @Override + public SecuredRDFList createList( final Iterator<? extends RDFNode> members ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( RDF.nil, SecNode.IGNORE, SecNode.IGNORE) + * @sec.triple Create for each member SecTriple(SecNode.ANY, + * RDF.first.asNode(), + * member.asNode()) + * @sec.triple Create SecTriple(SecNode.ANY, RDF.rest.asNode(), SecNode.ANY) + * @throws AccessDeniedException + */ + @Override + public SecuredRDFList createList( final RDFNode[] members ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final boolean o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final char o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final double o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final float o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final int o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final long o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createLiteralStatement( final Resource s, + final Property p, final Object o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public Property createProperty( final String uri ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s,p,o ) + * @throws AccessDeniedException + */ + @Override + public Property createProperty( final String nameSpace, + final String localName ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Read s as a triple + * @sec.triple create SecTriple( SecNode.Future, RDF.subject, t.getSubject() + * ) + * @sec.triple create SecTriple( SecNode.Future, RDF.subject, + * t.getPredicate() ) + * @sec.triple create SecTriple( SecNode.Future, RDF.subject, t.getObject() ) + * @throws AccessDeniedException + */ + @Override + public ReifiedStatement createReifiedStatement( final Statement s ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Read s as a triple + * @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 + */ + @Override + public ReifiedStatement createReifiedStatement( final String uri, + final Statement s ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Read s as a triple + * @sec.triple create SecTriple( SecNode.FUTURE, SecNode.IGNORE, + * SecNode.IGNORE ) + * @throws AccessDeniedException + */ + @Override + public SecuredResource createResource() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Read s as a triple + * @sec.triple create SecTriple( Anonymous(id), SecNode.IGNORE, + * SecNode.IGNORE ) + * @throws AccessDeniedException + */ + @Override + public SecuredResource createResource( final AnonId id ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.type, type ) + * @throws AccessDeniedException + */ + @Override + public SecuredResource createResource( final Resource type ) + throws AccessDeniedException; + + @Override + @Deprecated + public SecuredResource createResource( final ResourceF f ); + + @Override + public SecuredResource createResource( final String uri ); + + /** + * @sec.graph Update if uri exists + * @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 + */ + @Override + public SecuredResource createResource( final String uri, final Resource type ) + throws AccessDeniedException; + + @Override + @Deprecated + public SecuredResource createResource( final String uri, final ResourceF f ); + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.type, RDF.Alt ) + * @throws AccessDeniedException + */ + @Override + public SecuredSeq createSeq() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( uri, RDF.type, RDF.Alt ) + * @throws AccessDeniedException + */ + @Override + public SecuredSeq createSeq( final String uri ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s, p, o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createStatement( final Resource s, + final Property p, final RDFNode o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s, p, o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createStatement( final Resource s, + final Property p, final String o ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s, p, o ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createStatement( final Resource s, + final Property p, final String o, final boolean wellFormed ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s, p, literal(o,l,false )) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createStatement( final Resource s, + final Property p, final String o, final String l ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( s, p, literal(o,l,wellFormed ) + * @throws AccessDeniedException + */ + @Override + public SecuredStatement createStatement( final Resource s, + final Property p, final String o, final String l, + final boolean wellFormed ) throws AccessDeniedException; + + @Override + public SecuredLiteral createTypedLiteral( final boolean v ); + + @Override + public Literal createTypedLiteral( final Calendar d ); + + @Override + public SecuredLiteral createTypedLiteral( final char v ); + + @Override + public SecuredLiteral createTypedLiteral( final double v ); + + @Override + public SecuredLiteral createTypedLiteral( final float v ); + + @Override + public SecuredLiteral createTypedLiteral( final int v ); + + @Override + public SecuredLiteral createTypedLiteral( final long v ); + + @Override + public SecuredLiteral createTypedLiteral( final Object value ); + + @Override + public SecuredLiteral createTypedLiteral( final Object value, + final RDFDatatype dtype ); + + @Override + public SecuredLiteral createTypedLiteral( final Object value, + final String typeURI ); + + @Override + public SecuredLiteral createTypedLiteral( final String v ); + + @Override + public SecuredLiteral createTypedLiteral( final String lex, + final RDFDatatype dtype ); + + @Override + public SecuredLiteral createTypedLiteral( final String lex, + final String typeURI ); + + /** + * @sec.graph Read + * @sec.triple Read for every triple contributed to the difference. + * @throws AccessDeniedException + */ + @Override + public Model difference( final Model model ) throws AccessDeniedException; + + /** + * @sec.graph Read if read lock is requested + * @sec.graph Update if write lock is requested + * @throws AccessDeniedException + */ + @Override + public void enterCriticalSection( final boolean readLockRequested ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String expandPrefix( final String prefixed ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( resource, RDF.type, RDF.alt ) + * @throws AccessDeniedException + */ + @Override + public SecuredAlt getAlt( final Resource r ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( uri, RDF.type, RDF.alt ) + * @throws AccessDeniedException + */ + @Override + public SecuredAlt getAlt( final String uri ) throws AccessDeniedException; + + /** + * @sec.graph Read if statement exists + * @sec.graph Update if statement does not exist + * @sec.triple Read s as a triple + * @sec.triple Read SecTriple( result, RDF.subject, s.getSubject() ) if + * reification existed + * @sec.triple Read SecTriple( result, RDF.predicate, s.getPredicate() ) if + * reification existed + * @sec.triple Read SecTriple( result, RDF.object, s.getObject() ) if + * reification existed + * @sec.triple Create SecTriple( result, RDF.subject, s.getSubject() ) if + * reification did not exist. + * @sec.triple Create SecTriple( result, RDF.redicate, s.getPredicate() ) if + * reification did not exist + * @sec.triple Create SecTriple( result, RDF.object, s.getObject() ) if + * reification did not exist + * @throws AccessDeniedException + */ + @Override + public SecuredResource getAnyReifiedStatement( final Statement s ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( resource, RDF.type, RDF.Bag ) + * @throws AccessDeniedException + */ + @Override + public SecuredBag getBag( final Resource r ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( uri, RDF.type, RDF.Bag ) + * @throws AccessDeniedException + */ + @Override + public SecuredBag getBag( final String uri ) throws AccessDeniedException; + + @Override + public SecuredGraph getGraph(); + + /** + * @sec.graph Read + * @sec.triple Read on the returned statement. + * @throws AccessDeniedException + */ + @Override + public SecuredStatement getProperty( final Resource s, final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public Property getProperty( final String uri ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public Property getProperty( final String nameSpace, final String localName ) + throws AccessDeniedException; + + /** + * @sec.graph Read if the node exists + * @sec.graph Update if the node does not exist + * @throws AccessDeniedException + */ + @Override + public RDFNode getRDFNode( final Node n ) throws AccessDeniedException; + + /** + * . + * If the PropertyNotFoundException was thrown by the enclosed securedModel + * and the + * user can not read SecTriple(s, p, SecNode.ANY) AccessDeniedExcepiton is + * thrown, + * otherwise the PropertyNotFoundException will be thrown. + * + * @sec.graph Read + * @sec.triple Read on the returned statement + * @sec.triple Read on SecTriple(s, p, SecNode.ANY) if + * PropertyNotFoundException + * was thrown + * @throws AccessDeniedException + * @throws PropertyNotFoundException + */ + @Override + public SecuredStatement getRequiredProperty( final Resource s, + final Property p ) throws PropertyNotFoundException, + AccessDeniedException; + + @Override + public SecuredResource getResource( final String uri ); + + @Override + @Deprecated + public SecuredResource getResource( final String uri, final ResourceF f ); + + /** + * + * @sec.graph Read + * @sec.triple Read on SecTriple(resource, RDF.type, RDF.Seq) + * @throws AccessDeniedException + */ + @Override + public SecuredSeq getSeq( final Resource r ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on SecTriple(uri, RDF.type, RDF.Seq) + * @throws AccessDeniedException + */ + @Override + public SecuredSeq getSeq( final String uri ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples contributed to the new securedModel. + * @throws AccessDeniedException + */ + @Override + public Model intersection( final Model model ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public boolean isEmpty() throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read all compared triples. Triples that can not be read will + * not be compared. + * @throws AccessDeniedException + */ + @Override + public boolean isIsomorphicWith( final Model g ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on s as triple + * @sec.triple Read on at least one set reified statements. + * @throws AccessDeniedException + */ + @Override + public boolean isReified( final Statement s ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned. + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listLiteralStatements( + final Resource subject, final Property predicate, + final boolean object ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned. + * @throws AccessDeniedException + */ + + @Override + public SecuredStatementIterator listLiteralStatements( + final Resource subject, final Property predicate, final char object ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned. + * @throws AccessDeniedException + */ + + @Override + public SecuredStatementIterator listLiteralStatements( + final Resource subject, final Property predicate, + final double object ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned. + * @throws AccessDeniedException + */ + + @Override + public SecuredStatementIterator listLiteralStatements( + final Resource subject, final Property predicate, final float object ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned. + * @throws AccessDeniedException + */ + + @Override + public SecuredStatementIterator listLiteralStatements( + final Resource subject, final Property predicate, final long object ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public NsIterator listNameSpaces() throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on each RDFNode returned + * @throws AccessDeniedException + */ + @Override + public SecuredNodeIterator<RDFNode> listObjects() throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on each RDFNode returned + * @throws AccessDeniedException + */ + @Override + public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Property p ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on each RDFNode returned + * @throws AccessDeniedException + */ + @Override + public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Resource s, + final Property p ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on each Reified statement returned + * @throws AccessDeniedException + */ + @Override + public SecuredRSIterator listReifiedStatements() + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on each Reified statement returned + * @throws AccessDeniedException + */ + @Override + public SecuredRSIterator listReifiedStatements( final Statement st ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listResourcesWithProperty( final Property p ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final boolean o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final char o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final double o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final float o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final long o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned; + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final Object o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listResourcesWithProperty( final Property p, + final RDFNode o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listStatements() + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listStatements( final Resource s, + final Property p, final RDFNode o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listStatements( final Resource subject, + final Property predicate, final String object ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listStatements( final Resource subject, + final Property predicate, final String object, final String lang ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all triples returned + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listStatements( final Selector s ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listSubjects() throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listSubjectsWithProperty( final Property p ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listSubjectsWithProperty( final Property p, + final RDFNode o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listSubjectsWithProperty( final Property p, + final String o ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read at least one SecTriple( resource, p, o ) for each + * resource + * returned + * @throws AccessDeniedException + */ + @Override + public SecuredResIterator listSubjectsWithProperty( final Property p, + final String o, final String l ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredPrefixMapping lock() throws AccessDeniedException; + + @Override + public SecuredModel notifyEvent( final Object e ); + + /** + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String qnameFor( final String uri ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public SecuredModel query( final Selector s ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final InputStream in, final String base ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final InputStream in, final String base, + final String lang ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final Reader reader, final String base ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final Reader reader, final String base, + final String lang ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final String url ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final String url, final String lang ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredModel read( final String url, final String base, + final String lang ) throws AccessDeniedException; + + /** + * + * Listener will be filtered to only report events that the user can see. + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public SecuredModel register( final ModelChangedListener listener ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every statement in statments. + * @throws AccessDeniedException + */ + @Override + public SecuredModel remove( final List<Statement> statements ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every statement in baseModel. + * @throws AccessDeniedException + */ + @Override + public SecuredModel remove( final Model m ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on SecTriple( s, p, o ) + * @throws AccessDeniedException + */ + @Override + public SecuredModel remove( final Resource s, final Property p, final RDFNode o ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on statment. + * @throws AccessDeniedException + */ + @Override + public SecuredModel remove( final Statement s ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every statement in statments. + * @throws AccessDeniedException + */ + @Override + public SecuredModel remove( final Statement[] statements ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every statement in iter. + * @throws AccessDeniedException + */ + @Override + public SecuredModel remove( final StmtIterator iter ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every statement in the securedModel + * @throws AccessDeniedException + */ + @Override + public SecuredModel removeAll() throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every statement identified by SecTriple( s,p,o) + * @throws AccessDeniedException + */ + @Override + public SecuredModel removeAll( final Resource s, final Property p, + final RDFNode r ) throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every reification statement for each statement in + * statments. + * @throws AccessDeniedException + */ + @Override + public void removeAllReifications( final Statement s ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public SecuredPrefixMapping removeNsPrefix( final String prefix ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @sec.triple Delete on every reification statement fore each statement in + * rs. + * @throws AccessDeniedException + */ + @Override + public void removeReification( final ReifiedStatement rs ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public String setReaderClassName( final String lang, final String className ) + throws AccessDeniedException; + + /** + * + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public String setWriterClassName( final String lang, final String className ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String shortForm( final String uri ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public long size() throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements contributed to the union. + * @throws AccessDeniedException + */ + @Override + public Model union( final Model model ) throws AccessDeniedException; + + @Override + public SecuredModel unregister( final ModelChangedListener listener ); + + @Override + public SecuredResource wrapAsResource( final Node n ); + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements that are written. + * @throws AccessDeniedException + */ + @Override + public SecuredModel write( final OutputStream out ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements that are written. + * @throws AccessDeniedException + */ + @Override + public SecuredModel write( final OutputStream out, final String lang ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements that are written. + * @throws AccessDeniedException + */ + @Override + public SecuredModel write( final OutputStream out, final String lang, + final String base ) throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements that are written. + * @throws AccessDeniedException + */ + @Override + public SecuredModel write( final Writer writer ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements that are written. + * @throws AccessDeniedException + */ + @Override + public SecuredModel write( final Writer writer, final String lang ) + throws AccessDeniedException; + + /** + * + * @sec.graph Read + * @sec.triple Read on all statements that are written. + * @throws AccessDeniedException + */ + @Override + public SecuredModel write( final Writer writer, final String lang, + final String base ) throws AccessDeniedException; + +}
http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..9a5add6 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredProperty.java @@ -0,0 +1,38 @@ +/* + * 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.model; + +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.rdf.model.Property ; + +/** + * The interface for secured Property instances. + * + * Use the SecuredProperty.Factory to create instances + */ +public interface SecuredProperty extends SecuredResource, Property +{ + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public int getOrdinal() throws AccessDeniedException; + +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..b629333 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFList.java @@ -0,0 +1,414 @@ +/* + * 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.model; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.permissions.SecurityEvaluator.Action; +import org.apache.jena.rdf.model.* ; +import org.apache.jena.util.iterator.ExtendedIterator ; + +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 + */ + @Override + public void add( final RDFNode value ) throws AccessDeniedException; + + /** + * Resulting list will contain the readable nodes from this list + * concatenated with nodes + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value ) + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this ) + */ + @Override + public RDFList append( final Iterator<? extends RDFNode> nodes ) + throws AccessDeniedException; + + /** + * Resulting list will contain the readable nodes from this list + * concatenated + * with the list argument + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value ) + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this ) + */ + @Override + public RDFList append( final RDFList list ) throws AccessDeniedException; + + /** + * Uses the security settings for the application of the function calls. + * Thus if the function reads data the Read must be allowed, etc. + * + * @sec.graph Read + * @sec.triple Read (to be included in the calculation) + * @sec.triple other permissions required by the function. + * @throws AccessDeniedException + * graph Read or other permissions are not met + */ + @Override + public void apply( final ApplyFn fn ) throws AccessDeniedException; + + /** + * This method is intended to provide the capabilities to apply functions + * that + * need to do more than read the graph. + * + * If the user does not have constraints access to the item in the list the + * item + * is not included in the function. + * + * @param constraints + * The permissions the user must have on the items in the list. + * @param fn + * The function to apply. + * + * @sec.graph Read + * @sec.triple Read and constraints + * @throws AccessDeniedException + */ + public void apply( Set<Action> constraints, final ApplyFn fn ) + throws AccessDeniedException; + + /** + * @sec.triple Read for triples containing the returned RDFNodes. + * @return List<SecuredRDFNode> + */ + @Override + public List<RDFNode> asJavaList(); + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, node ) for each + * node in + * nodes. + * @throws AccessDeniedException + */ + @Override + public void concatenate( final Iterator<? extends RDFNode> nodes ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, node ) for each + * node in + * list. + * @throws AccessDeniedException + */ + @Override + public void concatenate( final RDFList list ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.first, value ) + * @sec.triple Create SecTriple( SecNode.FUTURE, RDF.rest, this ) + * @throws AccessDeniedException + */ + @Override + public SecuredRDFList cons( final RDFNode value ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @throws AccessDeniedException + */ + @Override + public boolean contains( final RDFNode value ) throws AccessDeniedException; + + /** + * Creates a copy of this list comprising the readable elements of this + * list. + * @sec.graph Read to read the items to copy + * @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 ) + */ + @Override + public SecuredRDFList copy(); + + /** + * Answer the node that is the i'th element of the list, assuming that the + * head is item zero. If the list is too + * short to have an i'th element, throws a ListIndexException. + * + * List may be shortened by security constraints. + * + * @sec.graph Read + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public SecuredRDFNode get( final int i ) throws AccessDeniedException, + EmptyListException, ListIndexException, InvalidListException; + + /** + * The value that is at the head of the list. + * + * head may be shifted by security constraints. + * + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + */ + @Override + public RDFNode getHead() throws AccessDeniedException, EmptyListException; + + /** + * The value that is at the tail of the list. + * + * tail may be shifted by security constraints. + * + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public SecuredRDFList getTail() throws AccessDeniedException, + EmptyListException, ListIndexException, InvalidListException; + + /** + * @sec.graph Read + */ + @Override + public String getValidityErrorMessage() throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public int indexOf( final RDFNode value ) throws AccessDeniedException, + EmptyListException, ListIndexException, InvalidListException; + + /** + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public int indexOf( final RDFNode value, final int start ) + throws AccessDeniedException, EmptyListException, + ListIndexException, InvalidListException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public boolean isEmpty() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public boolean isValid() throws AccessDeniedException, EmptyListException, + ListIndexException, InvalidListException; + + /** + * @sec.graph Read + * @sec.triple Read for triple containing value to be included in the result. + * @throws AccessDeniedException + */ + @Override + public ExtendedIterator<RDFNode> iterator() throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read + requiredPerms for triple containing value to be + * included in the result. + * @throws AccessDeniedException + */ + public ExtendedIterator<RDFNode> iterator( Set<Action> requiredPerms ) + throws AccessDeniedException, EmptyListException, + ListIndexException, InvalidListException; + + /** + * Only readable triples will be passed to the function. If the function + * does + * any action other than read those permissions must also be granted. + * + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public Object reduce( final ReduceFn fn, final Object initial ) + throws AccessDeniedException, EmptyListException, + ListIndexException, InvalidListException; + + /** + * Only readable triples will be passed to the function. In addition, + * only triples that pass the requiredActions tests will be passed to the + * function. + * + * @sec.graph Read + * @sec.triple Read for triple containing value. + * @param requiredActions + * The set of permission (in addition to Read) that the user must + * have + * @param fn + * The reduction function + * @param initial + * The initial state for the ruduce value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + public Object reduce( Set<Action> requiredActions, final ReduceFn fn, + final Object initial ) throws AccessDeniedException, + EmptyListException, ListIndexException, InvalidListException; + + /** + * @sec.graph Update + * @sec.triple Delete for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public RDFList remove( final RDFNode val ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete for all triples. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + @Deprecated + public void removeAll() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete for the head triple. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public RDFList removeHead() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public void removeList() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update for triplie i, and value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public SecuredRDFNode replace( final int i, final RDFNode value ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read for triples included in the comparison. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public boolean sameListAs( final RDFList list ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create for triple containing value. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public SecuredRDFNode setHead( final RDFNode value ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @throws AccessDeniedException + */ + @Override + public void setStrict( final boolean strict ) throws AccessDeniedException; + + /** + * Size may be modified by security constraionts. + * + * @sec.graph Read + * @sec.triple Read for triples counted in the result. + * @throws AccessDeniedException + * @throws EmptyListException + * @throws ListIndexException + * @throws InvalidListException + */ + @Override + public int size() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create for triple containing value. + * @throws AccessDeniedException + */ + @Override + public SecuredRDFList with( final RDFNode value ) + throws AccessDeniedException; + +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..fee3a91 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredRDFNode.java @@ -0,0 +1,59 @@ +/* + * 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.model; + +import org.apache.jena.graph.Node ; +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.permissions.impl.SecuredItem; +import org.apache.jena.rdf.model.Model ; +import org.apache.jena.rdf.model.RDFNode ; + +/** + * The interface for secured RDFNode instances. + * + * Use one the SecuredRDFNode derived class Factories to create instances + */ +public interface SecuredRDFNode extends RDFNode, SecuredItem +{ + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public Node asNode() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public <T extends RDFNode> boolean canAs( final Class<T> view ) + throws AccessDeniedException; + + @Override + public SecuredModel getModel(); + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public RDFNode inModel( final Model m ) throws AccessDeniedException; + +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..471f718 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredReifiedStatement.java @@ -0,0 +1,38 @@ +/* + * 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.model; + +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.rdf.model.ReifiedStatement ; + +/** + * The interface for secured ReifiedStatement instances. + * + * Use the SecuredReifiedStatement.Factory to create instances + */ +public interface SecuredReifiedStatement extends ReifiedStatement, + SecuredResource +{ + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public SecuredStatement getStatement(); + +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..45576e7 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredResource.java @@ -0,0 +1,333 @@ +/* + * 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.model; + +import org.apache.jena.datatypes.RDFDatatype ; +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.permissions.model.impl.SecuredStatementIterator; +import org.apache.jena.rdf.model.* ; + +/** + * The interface for secured Resource instances. + * + * Use the SecuredResource.Factory to create instances + */ +public interface SecuredResource extends Resource, SecuredRDFNode +{ + + @Override + public SecuredResource abort(); + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public SecuredResource addLiteral( final Property p, final boolean o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addLiteral( final Property p, final char o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, value, d ) + * @throws AccessDeniedException + */ + @Override + public Resource addLiteral( final Property value, final double d ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, value, d ) + * @throws AccessDeniedException + */ + @Override + public Resource addLiteral( final Property value, final float d ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addLiteral( final Property p, final Literal o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addLiteral( final Property p, final long o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addLiteral( final Property p, final Object o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addProperty( final Property p, final RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addProperty( final Property p, final String o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, literal(lexicalForm,datatype) ) + * @throws AccessDeniedException + */ + @Override + public Resource addProperty( final Property p, final String lexicalForm, + final RDFDatatype datatype ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create (this, p, o ) + * @throws AccessDeniedException + */ + @Override + public Resource addProperty( final Property p, final String o, + final String l ) throws AccessDeniedException; + + @Override + public SecuredResource asResource(); + + @Override + public SecuredResource begin(); + + @Override + public SecuredResource commit(); + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public boolean equals( final Object o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public AnonId getId() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String getLocalName() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String getNameSpace() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public SecuredStatement getProperty( final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public SecuredResource getPropertyResourceValue( final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public SecuredStatement getRequiredProperty( final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String getURI() throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasLiteral( final Property p, final boolean o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasLiteral( final Property p, final char o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasLiteral( final Property p, final double o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasLiteral( final Property p, final float o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasLiteral( final Property p, final long o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasLiteral( final Property p, final Object o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasProperty( final Property p ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasProperty( final Property p, final RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,o) + * @throws AccessDeniedException + */ + @Override + public boolean hasProperty( final Property p, final String o ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple(this,p,literal(o,l)) + * @throws AccessDeniedException + */ + @Override + public boolean hasProperty( final Property p, final String o, final String l ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public boolean hasURI( final String uri ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read on returned Statements + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listProperties() + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read on returned Statements + * @throws AccessDeniedException + */ + @Override + public SecuredStatementIterator listProperties( final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete on associated Statements + * @throws AccessDeniedException + */ + @Override + public SecuredResource removeAll( final Property p ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete on all Statements + * @throws AccessDeniedException + */ + @Override + public SecuredResource removeProperties() throws AccessDeniedException; +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java new file mode 100644 index 0000000..7ce88b4 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredSeq.java @@ -0,0 +1,385 @@ +/* + * 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.model; + +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.rdf.model.RDFNode ; +import org.apache.jena.rdf.model.ResourceF ; +import org.apache.jena.rdf.model.Seq ; + +/** + * The interface for secured Seq instances. + * + * Use the SecuredSeq.Factory to create instances + * + * Sequence may have breaks in the order. + * http://www.w3.org/TR/2004/REC-rdf-mt-20040210/#Containers + * + */ +public interface SecuredSeq extends Seq, SecuredContainer +{ + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final boolean o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final char o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final double o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final float o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final long o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final Object o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final String o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Create SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq add( final int index, final String o, final String l ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredAlt getAlt( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredBag getBag( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public boolean getBoolean( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public byte getByte( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public char getChar( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public double getDouble( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public float getFloat( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int getInt( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public String getLanguage( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredLiteral getLiteral( final int index ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public long getLong( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredRDFNode getObject( final int index ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredResource getResource( final int index ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + @Deprecated + public SecuredResource getResource( final int index, final ResourceF f ) + throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public SecuredSeq getSeq( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public short getShort( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public String getString( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final boolean o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final char o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final double o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final float o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final long o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final Object o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final RDFNode o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final String o ) throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read SecTriple( this, RDF.li(1), o ) + */ + @Override + public int indexOf( final String o, final String l ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete SecTriple( this, RDF.li(1), o ) + * @sec.triple Update Triples after index + */ + @Override + public SecuredSeq remove( final int index ) throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final boolean o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final char o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final double o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final float o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final long o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final Object o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final String o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update SecTriple( this, RDF.li(index), old ) SecTriple( this, + * RDF.li(index), o ) + */ + @Override + public SecuredSeq set( final int index, final String o, final String l ) + throws AccessDeniedException; + +} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/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 new file mode 100644 index 0000000..c10a9a2 --- /dev/null +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/SecuredStatement.java @@ -0,0 +1,295 @@ +/* + * 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.model; + +import org.apache.jena.permissions.AccessDeniedException; +import org.apache.jena.permissions.impl.SecuredItem; +import org.apache.jena.rdf.model.* ; + +/** + * The interface for secured Statement instances. + * + * Use the SecuredStatement.Factory to create instances + */ +public interface SecuredStatement extends Statement, SecuredItem +{ + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeLiteralObject( boolean o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeLiteralObject( char o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeLiteralObject( double o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeLiteralObject( float o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeLiteralObject( int o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeLiteralObject( long o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeObject( RDFNode o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeObject( String o ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeObject( String o, boolean wellFormed ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeObject( String o, String l ) + throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Update + * @throws AccessDeniedException + */ + @Override + public SecuredStatement changeObject( String o, String l, boolean wellFormed ) + throws AccessDeniedException; + + /** + * @sec.graph Read, Update + * @sec.triple Create + * @throws AccessDeniedException + */ + @Override + public SecuredReifiedStatement createReifiedStatement() + throws AccessDeniedException; + + /** + * @sec.graph Read, Update + * @sec.triple Create + * @throws AccessDeniedException + */ + @Override + public SecuredReifiedStatement createReifiedStatement( String uri ) + throws AccessDeniedException; + + @Override + public SecuredAlt getAlt(); + + @Override + public SecuredBag getBag(); + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public boolean getBoolean() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public byte getByte() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public char getChar() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public double getDouble() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public float getFloat() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public int getInt() throws AccessDeniedException; + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String getLanguage() throws AccessDeniedException; + + @Override + public SecuredLiteral getLiteral(); + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public long getLong() throws AccessDeniedException; + + @Override + public SecuredModel getModel(); + + @Override + public SecuredRDFNode getObject(); + + @Override + public SecuredProperty getPredicate(); + + @Override + public SecuredStatement getProperty( Property p ); + + @Override + public SecuredResource getResource(); + + @Override + @Deprecated + public SecuredResource getResource( ResourceF f ); + + @Override + public SecuredSeq getSeq(); + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public short getShort() throws AccessDeniedException; + + @Override + public SecuredStatement getStatementProperty( Property p ); + + /** + * @sec.graph Read + * @throws AccessDeniedException + */ + @Override + public String getString() throws AccessDeniedException; + + @Override + public SecuredResource getSubject(); + + /** + * @sec.graph Read + * @sec.triple Read + * @throws AccessDeniedException + */ + @Override + public boolean hasWellFormedXML() throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read + * @throws AccessDeniedException + */ + @Override + public boolean isReified() throws AccessDeniedException; + + /** + * @sec.graph Read + * @sec.triple Read + * @throws AccessDeniedException + */ + @Override + public RSIterator listReifiedStatements() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete + * @throws AccessDeniedException + */ + @Override + public SecuredStatement remove() throws AccessDeniedException; + + /** + * @sec.graph Update + * @sec.triple Delete + * @throws AccessDeniedException + */ + @Override + public void removeReification() throws AccessDeniedException; + +}
