http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredModelImpl.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredModelImpl.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredModelImpl.java deleted file mode 100644 index d0a21c5..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredModelImpl.java +++ /dev/null @@ -1,2739 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.model.impl; - -import java.io.* ; -import java.net.URL ; -import java.util.* ; - -import org.apache.jena.datatypes.RDFDatatype ; -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.NodeFactory ; -import org.apache.jena.graph.Triple ; -import org.apache.jena.graph.impl.CollectionGraph ; -import org.apache.jena.rdf.model.* ; -import org.apache.jena.rdf.model.impl.RDFReaderFImpl ; -import org.apache.jena.security.AccessDeniedException ; -import org.apache.jena.security.SecurityEvaluator ; -import org.apache.jena.security.SecurityEvaluator.SecTriple ; -import org.apache.jena.security.graph.SecuredGraph ; -import org.apache.jena.security.graph.SecuredPrefixMapping ; -import org.apache.jena.security.impl.ItemHolder ; -import org.apache.jena.security.impl.SecuredItem ; -import org.apache.jena.security.impl.SecuredItemImpl ; -import org.apache.jena.security.impl.SecuredItemInvoker ; -import org.apache.jena.security.model.* ; -import org.apache.jena.shared.* ; -import org.apache.jena.util.iterator.ExtendedIterator ; -import org.apache.jena.util.iterator.Filter ; -import org.apache.jena.util.iterator.WrappedIterator ; -import org.apache.jena.vocabulary.RDF ; - -/** - * Implementation of SecuredModel to be used by a SecuredItemInvoker proxy. - */ -public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel -{ - - // a class that implements ModelChangedListener - private class SecuredModelChangedListener implements ModelChangedListener - { - private final ModelChangedListener wrapped; - - private SecuredModelChangedListener( final ModelChangedListener wrapped ) - { - this.wrapped = wrapped; - } - - @Override - public void addedStatement( final Statement s ) - { - if (canRead(s.asTriple())) - { - wrapped.addedStatement(s); - } - } - - @Override - public void addedStatements( final List<Statement> statements ) - { - if (canRead(Triple.ANY)) - { - wrapped.addedStatements(statements); - } - else - { - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), - WrappedIterator.create(statements.iterator())); - try - { - wrapped.addedStatements(iter.toList()); - } - finally - { - iter.close(); - } - } - } - - @Override - public void addedStatements( final Model m ) - { - if (canRead(Triple.ANY)) - { - wrapped.addedStatements(m); - } - else - { - wrapped.addedStatements(SecuredModelImpl.getInstance( - holder.getSecuredItem(), m)); - } - } - - @Override - public void addedStatements( final Statement[] statements ) - { - if (canRead(Triple.ANY)) - { - wrapped.addedStatements(statements); - } - else - { - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), WrappedIterator.create(Arrays - .asList(statements).iterator())); - try - { - final List<Statement> stmts = iter.toList(); - wrapped.addedStatements(stmts.toArray(new Statement[stmts - .size()])); - } - finally - { - iter.close(); - } - } - } - - @Override - public void addedStatements( final StmtIterator statements ) - { - if (canRead(Triple.ANY)) - { - wrapped.addedStatements(statements); - } - else - { - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), statements); - try - { - wrapped.addedStatements(iter); - } - finally - { - iter.close(); - } - } - } - - @Override - public void notifyEvent( final Model m, final Object event ) - { - wrapped.notifyEvent(m, event); - } - - @Override - public void removedStatement( final Statement s ) - { - if (canRead(s.asTriple())) - { - wrapped.removedStatement(s); - } - } - - @Override - public void removedStatements( final List<Statement> statements ) - { - - if (canRead(Triple.ANY)) - { - wrapped.removedStatements(statements); - } - else - { - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), - WrappedIterator.create(statements.iterator())); - try - { - wrapped.removedStatements(iter.toList()); - } - finally - { - iter.close(); - } - } - } - - @Override - public void removedStatements( final Model m ) - { - if (canRead(Triple.ANY)) - { - wrapped.removedStatements(m); - } - else - { - wrapped.removedStatements(SecuredModelImpl.getInstance( - holder.getSecuredItem(), m)); - } - } - - @Override - public void removedStatements( final Statement[] statements ) - { - if (canRead(Triple.ANY)) - { - wrapped.removedStatements(statements); - } - else - { - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), WrappedIterator.create(Arrays - .asList(statements).iterator())); - try - { - final List<Statement> stmts = iter.toList(); - wrapped.removedStatements(stmts.toArray(new Statement[stmts - .size()])); - } - finally - { - iter.close(); - } - } - } - - @Override - public void removedStatements( final StmtIterator statements ) - { - if (canRead(Triple.ANY)) - { - wrapped.removedStatements(statements); - } - else - { - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), statements); - try - { - wrapped.removedStatements(iter); - } - finally - { - iter.close(); - } - } - } - } - - /*private class ReadFilter extends Filter<Resource> { - private SecuredItem si; - private SecuredResource r; - private Property p; - ReadFilter( SecuredItem si, SecuredResource r, Property p ) - { - this.si = si; - this.r = r; - this.p = p; - } - @Override - public boolean accept(Resource o) { - Triple t = new Triple( r.asNode(), p.asNode(), o.asNode()); - return si.canRead( SecuredItemImpl.convert( t ) ); - }}; -*/ - private static final RDFReaderF readerFactory = new RDFReaderFImpl(); - //private static final RDFWriterF writerFactory = new RDFWriterFImpl(); - - /** - * Get an instance of SecuredModel - * - * @param securedItem - * the item providing the security context. - * @param model - * the Model to secure. - * @return The SecuredModel - */ - public static SecuredModel getInstance( final SecuredItem securedItem, - final Model model ) - { - return org.apache.jena.security.Factory.getInstance( - securedItem.getSecurityEvaluator(), securedItem.getModelIRI(), - model); - } - - /** - * Get an instance of SecuredModel - * - * @param securityEvaluator - * The security evaluator to use - * @param modelIRI - * The IRI (graph IRI) to name this model. - * @param model - * The Model to secure. - * @return the SecuredModel - */ - public static SecuredModel getInstance( - final SecurityEvaluator securityEvaluator, final String modelIRI, - final Model model ) - { - final ItemHolder<Model, SecuredModel> holder = new ItemHolder<Model, SecuredModel>( - model); - - final SecuredModelImpl checker = new SecuredModelImpl( - securityEvaluator, modelIRI, holder); - // if we are going to create a duplicate proxy, just return this - // one. - if (model instanceof SecuredModel) - { - if (checker.isEquivalent((SecuredModel) model)) - { - return (SecuredModel) model; - } - } - return holder.setSecuredItem(new SecuredItemInvoker(model.getClass(), - checker)); - } - - // the item holder that contains this SecuredModel. - private final ItemHolder<Model, SecuredModel> holder; - - // The secured graph that this securedModel contains. - private final SecuredGraph graph; - - // - Map<ModelChangedListener, SecuredModelChangedListener> listeners = new HashMap<ModelChangedListener, SecuredModelChangedListener>(); - - /** - * Constructor. - * - * @param securityEvaluator - * The security evaluator to use - * @param modelURI - * The securedModel IRI to verify against. - * @param holder - * The item holder that will contain this SecuredModel. - */ - private SecuredModelImpl( final SecurityEvaluator securityEvaluator, - final String modelURI, final ItemHolder<Model, SecuredModel> holder ) - { - super(securityEvaluator, modelURI, holder); - this.graph = org.apache.jena.security.Factory.getInstance(securityEvaluator, modelURI, holder - .getBaseItem().getGraph()); - this.holder = holder; // FIXME -- this should just access the super holder. - } - - private RDFNode asObject( Object o ) - { - return o instanceof RDFNode ? (RDFNode) o : ResourceFactory.createTypedLiteral( o ); - } - - @Override - public SecuredModel abort() - { - holder.getBaseItem().abort(); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final List<Statement> statements ) - { - checkUpdate(); - checkCreateStatement(WrappedIterator.create(statements.iterator())); - holder.getBaseItem().add(statements); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Model m ) - { - checkUpdate(); - if (!canCreate(Triple.ANY)) - { - checkCreateStatement(m.listStatements()); - } - holder.getBaseItem().add(m); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Resource s, final Property p, final RDFNode o ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), o.asNode())); - holder.getBaseItem().add(s, p, o); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Resource s, final Property p, final String o ) - { - return add( s, p, o, false ); - } - - @Override - public SecuredModel add( final Resource s, final Property p, - final String o, final boolean wellFormed ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(o, - "", wellFormed))); - holder.getBaseItem().add(s, p, o, wellFormed); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Resource s, final Property p, - final String lex, final RDFDatatype datatype ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(lex, - datatype))); - holder.getBaseItem().add(s, p, lex, datatype); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Resource s, final Property p, - final String o, final String l ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(o, l, - false))); - holder.getBaseItem().add(s, p, o, l); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Statement s ) - { - checkUpdate(); - checkCreate(s.asTriple()); - holder.getBaseItem().add(s); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel add( final Statement[] statements ) - { - checkUpdate(); - if (!canCreate(Triple.ANY)) - { - for (final Statement s : statements) - { - checkCreate(s.asTriple()); - } - } - holder.getBaseItem().add(statements); - return holder.getSecuredItem(); - - } - - @Override - public SecuredModel add( final StmtIterator iter ) - { - checkUpdate(); - if (!canCreate(Triple.ANY)) - { - final List<Triple> lst = new ArrayList<Triple>(); - try - { - while (iter.hasNext()) - { - final Statement s = iter.next(); - checkCreate(s.asTriple()); - lst.add(s.asTriple()); - } - final Model m = ModelFactory - .createModelForGraph(new CollectionGraph(lst)); - holder.getBaseItem().add(m.listStatements()); - } - finally - { - iter.close(); - } - } - else - { - holder.getBaseItem().add(iter); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final boolean o ) - { - final Literal l = ResourceFactory.createTypedLiteral(o); - if (l == null) - { - throw new IllegalArgumentException( "HOw did we get a null"); - } - return add(s, p, l); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final char o ) - { - final Literal l = ResourceFactory.createTypedLiteral(o); - return add(s, p, l); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final double o ) - { - final Literal l = ResourceFactory.createTypedLiteral(o); - return add(s, p, l); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final float o ) - { - final Literal l = ResourceFactory.createTypedLiteral(o); - return add(s, p, l); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final int o ) - { - final Literal l = ResourceFactory.createTypedLiteral(o); - return add(s, p, l); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final Literal o ) - { - return add(s, p, o); - } - - @Override - public SecuredModel addLiteral( final Resource s, final Property p, - final long o ) - { - final Literal l = ResourceFactory.createTypedLiteral(o); - return add(s, p, l); - } - - @Override - @Deprecated - public SecuredModel addLiteral( final Resource s, final Property p, - final Object o ) - { - return add(s, p, asObject(o)); - } - - @Override - public SecuredRDFNode asRDFNode( final Node n ) - { - return SecuredRDFNodeImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .asRDFNode(n)); - } - - @Override - public SecuredStatement asStatement( final Triple t ) - { - final ExtendedIterator<Triple> iter = holder.getBaseItem().getGraph() - .find(t); - final boolean exists = iter.hasNext(); - iter.close(); - if (exists) - { - checkRead(); - checkRead(t); - } - else - { - checkUpdate(); - checkCreate(t); - } - return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .asStatement(t)); - } - - @Override - public SecuredModel begin() - { - holder.getBaseItem().begin(); - return holder.getSecuredItem(); - } - - private void checkCreate( final SecurityEvaluator.SecNode n, final Triple t ) - { - checkRead(t); - checkCreate(new SecurityEvaluator.SecTriple(n, - SecuredItemImpl.convert(RDF.subject.asNode()), - SecuredItemImpl.convert(t.getSubject()))); - checkCreate(new SecurityEvaluator.SecTriple(n, - SecuredItemImpl.convert(RDF.predicate.asNode()), - SecuredItemImpl.convert(t.getPredicate()))); - checkCreate(new SecurityEvaluator.SecTriple(n, - SecuredItemImpl.convert(RDF.object.asNode()), - SecuredItemImpl.convert(t.getObject()))); - } - - /* - * private void checkCreateAnonymousResource( final - * SecurityEvaluator.SecNode n ) - * { - * checkUpdate(); - * final SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple(n, - * SecurityEvaluator.SecNode.IGNORE, SecurityEvaluator.SecNode.IGNORE); - * checkCreate(t); - * } - */ - @Override - public void close() - { - holder.getBaseItem().close(); - } - - @Override - public SecuredModel commit() - { - holder.getBaseItem().commit(); - return holder.getSecuredItem(); - } - - @Override - public boolean contains( final Resource s, final Property p ) - { - checkRead(); - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, (RDFNode) null)); - try - { - return iter.hasNext(); - } - finally - { - iter.close(); - } - } - - @Override - public boolean contains( final Resource s, final Property p, final RDFNode o ) - { - checkRead(); - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, o)); - try - { - return iter.hasNext(); - } - finally - { - iter.close(); - } - } - - @Override - public boolean contains( final Resource s, final Property p, final String o ) - { - checkRead(); - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, o)); - try - { - return iter.hasNext(); - } - finally - { - iter.close(); - } - } - - @Override - public boolean contains( final Resource s, final Property p, - final String o, final String l ) - { - checkRead(); - final SecuredStatementIterator iter = new SecuredStatementIterator( - holder.getSecuredItem(), holder.getBaseItem().listStatements(s, p, o, l)); - try - { - return iter.hasNext(); - } - finally - { - iter.close(); - } - } - - @Override - public boolean contains( final Statement s ) - { - checkRead(); - checkRead(s); - return holder.getBaseItem().contains(s); - } - - @Override - public boolean containsAll( final Model model ) - { - return containsAll(model.listStatements()); - } - - @Override - public boolean containsAll( final StmtIterator iter ) - { - checkRead(); - final boolean doCheck = canRead(Triple.ANY); - try - { - while (iter.hasNext()) - { - final Statement stmt = iter.next(); - if (doCheck) - { - checkRead(stmt); - } - if (!holder.getBaseItem().contains(stmt)) - { - return false; - } - } - return true; - } - finally - { - iter.close(); - } - } - - @Override - public boolean containsAny( final Model model ) - { - return containsAny(model.listStatements()); - - } - - @Override - public boolean containsAny( final StmtIterator iter ) - { - checkRead(); - final boolean skipCheck = canRead(Triple.ANY); - try - { - while (iter.hasNext()) - { - final Statement stmt = iter.next(); - if (skipCheck || canRead(stmt)) - { - if (holder.getBaseItem().contains(stmt)) - { - return true; - } - } - } - return false; - } - finally - { - iter.close(); - } - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final boolean o ) - { - return contains(s, p, ResourceFactory.createTypedLiteral(o)); - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final char o ) - { - return contains(s, p, ResourceFactory.createTypedLiteral(o)); - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final double o ) - { - return contains(s, p, ResourceFactory.createTypedLiteral(o)); - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final float o ) - { - return contains(s, p, ResourceFactory.createTypedLiteral(o)); - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final int o ) - { - return contains(s, p, ResourceFactory.createTypedLiteral(o)); - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final long o ) - { - return contains(s, p, ResourceFactory.createTypedLiteral(o)); - } - - @Override - public boolean containsLiteral( final Resource s, final Property p, - final Object o ) - { - return contains(s, p, asObject(o)); - } - - @Override - public boolean containsResource( final RDFNode r ) - { - checkRead(); - if (canRead(new Triple(Node.ANY, Node.ANY, Node.ANY))) - { - return holder.getBaseItem().containsResource(r); - } - else - { - ExtendedIterator<Statement> iter = listStatements(null, null, r); - if (r.isResource()) - { - - if (r.isURIResource()) - { - iter = iter - .andThen(listStatements(null, ResourceFactory - .createProperty(r.asNode().getURI()), - (RDFNode) null)); - } - else - { - iter = iter.andThen(listStatements(null, ResourceFactory - .createProperty(r.asNode().getBlankNodeLabel()), - (RDFNode) null)); - } - iter = iter.andThen(listStatements(r.asResource(), null, - (RDFNode) null)); - } - try - { - return iter.hasNext(); - } - finally - { - iter.close(); - } - } - } - - @Override - public SecuredAlt createAlt() - { - checkUpdate(); - checkCreate(new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.type.asNode()), - SecuredItemImpl.convert(RDF.Alt.asNode()))); - return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createAlt()); - } - - @Override - public SecuredAlt createAlt( final String uri ) - { - checkUpdate(); - checkCreate(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), - RDF.Alt.asNode())); - return SecuredAltImpl.getInstance(holder.getSecuredItem(), - holder.getBaseItem().createAlt(uri)); - } - - @Override - public SecuredBag createBag() - { - checkUpdate(); - checkCreate(new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.type.asNode()), - SecuredItemImpl.convert(RDF.Bag.asNode()))); - return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createBag()); - } - - @Override - public SecuredBag createBag( final String uri ) - { - checkUpdate(); - checkCreate(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), - RDF.Bag.asNode())); - return SecuredBagImpl.getInstance(holder.getSecuredItem(), - holder.getBaseItem().createBag(uri)); - } - - private Model createCopy() - { - return ModelFactory.createDefaultModel().add(holder.getSecuredItem()); - } - - @Override - public SecuredRDFList createList() - { - checkUpdate(); - return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createList()); - } - - @Override - public SecuredRDFList createList( final Iterator<? extends RDFNode> members ) - { - checkUpdate(); - checkCreate(new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.rest.asNode()), - SecurityEvaluator.SecNode.FUTURE)); - if (!(canCreate(new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.first.asNode()), - SecuredItemImpl.convert(Node.ANY))))) - { - final List<RDFNode> nodes = new ArrayList<RDFNode>(); - while (members.hasNext()) - { - - final RDFNode n = members.next(); - checkCreate(new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.first.asNode()), - SecuredItemImpl.convert(n.asNode()))); - nodes.add(n); - } - return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createList(nodes.iterator())); - - } - else - { - return SecuredRDFListImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createList(members)); - } - } - - @Override - public SecuredRDFList createList( final RDFNode[] members ) - { - return createList(Arrays.asList(members).iterator()); - } - - @Override - public SecuredLiteral createLiteral( final String v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createLiteral(v)); - } - - @Override - public SecuredLiteral createLiteral( final String v, - final boolean wellFormed ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createLiteral(v, wellFormed)); - - } - - @Override - public SecuredLiteral createLiteral( final String v, final String language ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createLiteral(v, language)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final boolean o ) - { - return createStatement(s, p, - ResourceFactory.createTypedLiteral(o)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final char o ) - { - return createStatement(s, p, - ResourceFactory.createTypedLiteral(o)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final double o ) - { - return createStatement(s, p, - ResourceFactory.createTypedLiteral(o)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final float o ) - { - return createStatement(s, p, - ResourceFactory.createTypedLiteral(o)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final int o ) - { - return createStatement(s, p, - ResourceFactory.createTypedLiteral(o)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final long o ) - { - return createStatement(s, p, - ResourceFactory.createTypedLiteral(o)); - } - - @Override - public SecuredStatement createLiteralStatement( final Resource s, - final Property p, final Object o ) - { - return createStatement(s, p, asObject(o)); - } - - @Override - public SecuredProperty createProperty( final String uri ) - { - return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createProperty(uri)); - } - - @Override - public SecuredProperty createProperty( final String nameSpace, - final String localName ) - { - checkUpdate(); - return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createProperty(nameSpace, localName)); - } - - @Override - public ReifiedStatement createReifiedStatement( final Statement s ) - { - checkUpdate(); - checkCreate(SecurityEvaluator.SecNode.FUTURE, s.asTriple()); - return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(), holder - .getBaseItem().createReifiedStatement(s)); - } - - @Override - public ReifiedStatement createReifiedStatement( final String uri, - final Statement s ) - { - checkUpdate(); - checkCreate(new SecurityEvaluator.SecNode( - SecurityEvaluator.SecNode.Type.URI, uri), s.asTriple()); - return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(), holder - .getBaseItem().createReifiedStatement(uri, s)); - } - - @Override - public SecuredResource createResource() - { - // checkCreateAnonymousResource(SecurityEvaluator.SecNode.FUTURE); - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createResource()); - } - - @Override - public SecuredResource createResource( final AnonId id ) - { - // checkCreateAnonymousResource(new SecurityEvaluator.SecNode( - // SecurityEvaluator.SecNode.Type.Anonymous, id.getLabelString())); - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createResource(id)); - } - - @Override - public SecuredResource createResource( final Resource type ) - { - checkUpdate(); - final SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.type.asNode()), - SecuredItemImpl.convert(type.asNode())); - checkCreate(t); - - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createResource(type)); - } - - @Override - @Deprecated - public SecuredResource createResource( final ResourceF f ) - { - return createResource(null, f); - } - - @Override - public SecuredResource createResource( final String uri ) - { - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createResource(uri)); - - } - - @Override - public SecuredResource createResource( final String uri, final Resource type ) - { - final Resource r = ResourceFactory.createResource(uri); - final SecurityEvaluator.SecTriple t = new SecurityEvaluator.SecTriple( - SecuredItemImpl.convert(r.asNode()), - SecuredItemImpl.convert(RDF.type.asNode()), - SecuredItemImpl.convert(type.asNode())); - if (holder.getBaseItem().contains(r, RDF.type, type)) - { - checkRead(); - checkRead(t); - } - else - { - checkUpdate(); - checkCreate(t); - } - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createResource(uri, type)); - - } - - @Override - @Deprecated - public SecuredResource createResource( final String uri, final ResourceF f ) - { - // Resource resource = f.createResource( ResourceFactory.createResource( uri ) - // ); - // checkCreateResource( resource ); - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createResource(uri, f)); - } - - @Override - public SecuredSeq createSeq() - { - checkUpdate(); - checkCreate(new SecurityEvaluator.SecTriple( - SecurityEvaluator.SecNode.FUTURE, - SecuredItemImpl.convert(RDF.type.asNode()), - SecuredItemImpl.convert(RDF.Alt.asNode()))); - return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createSeq()); - } - - @Override - public SecuredSeq createSeq( final String uri ) - { - checkUpdate(); - checkCreate(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), - RDF.Alt.asNode())); - return SecuredSeqImpl.getInstance(holder.getSecuredItem(), - holder.getBaseItem().createSeq(uri)); - } - - @Override - public SecuredStatement createStatement( final Resource s, - final Property p, final RDFNode o ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), o.asNode())); - return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createStatement(s, p, o)); - } - - @Override - public SecuredStatement createStatement( final Resource s, - final Property p, final String o ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createURI(o))); - return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createStatement(s, p, o)); - } - - @Override - public SecuredStatement createStatement( final Resource s, - final Property p, final String o, final boolean wellFormed ) - { - return createStatement(s, p, o, "", wellFormed); - } - - @Override - public SecuredStatement createStatement( final Resource s, - final Property p, final String o, final String l ) - { - return createStatement(s, p, o, l, false); - } - - @Override - public SecuredStatement createStatement( final Resource s, - final Property p, final String o, final String l, - final boolean wellFormed ) - { - checkUpdate(); - checkCreate(new Triple(s.asNode(), p.asNode(), NodeFactory.createLiteral(o, l, - wellFormed))); - return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createStatement(s, p, o, l, wellFormed)); - } - - @Override - public SecuredLiteral createTypedLiteral( final boolean v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final Calendar d ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(d)); - } - - @Override - public SecuredLiteral createTypedLiteral( final char v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final double v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final float v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final int v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final long v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final Object value ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(value)); - } - - @Override - public SecuredLiteral createTypedLiteral( final Object value, - final RDFDatatype dtype ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(value, dtype)); - } - - @Override - public SecuredLiteral createTypedLiteral( final Object value, - final String typeURI ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(value, typeURI)); - } - - @Override - public SecuredLiteral createTypedLiteral( final String v ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(v)); - } - - @Override - public SecuredLiteral createTypedLiteral( final String lex, - final RDFDatatype dtype ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(lex, dtype)); - } - - @Override - public SecuredLiteral createTypedLiteral( final String lex, - final String typeURI ) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .createTypedLiteral(lex, typeURI)); - } - - @Override - public Model difference( final Model model ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - return holder.getBaseItem().difference(model); - } - else - { - return createCopy().difference(model); - } - } - - @Override - public void enterCriticalSection( final boolean readLockRequested ) - { - if (readLockRequested) - { - checkRead(); - } - else - { - checkUpdate(); - } - holder.getBaseItem().enterCriticalSection(readLockRequested); - } - - @Override - public Object executeInTransaction( final Command cmd ) - { - return holder.getBaseItem().executeInTransaction(cmd); - } - - @Override - public String expandPrefix( final String prefixed ) - { - checkRead(); - return holder.getBaseItem().expandPrefix(prefixed); - } - - @Override - public SecuredAlt getAlt( final Resource r ) - { - checkRead(); - checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Alt.asNode())); - return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getAlt(r)); - } - - @Override - public SecuredAlt getAlt( final String uri ) - { - checkRead(); - checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), - RDF.Alt.asNode())); - return SecuredAltImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getAlt(uri)); - } - - @Override - public SecuredResource getAnyReifiedStatement( final Statement s ) - { - final RSIterator it = listReifiedStatements(s); - if (it.hasNext()) - { - try - { - return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(), - it.nextRS()); - } - finally - { - it.close(); - } - } - else - { - return SecuredReifiedStatementImpl.getInstance(holder.getSecuredItem(), - createReifiedStatement(s)); - } - } - - @Override - public SecuredBag getBag( final Resource r ) - { - checkRead(); - checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Bag.asNode())); - return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getBag(r)); - } - - @Override - public SecuredBag getBag( final String uri ) - { - checkRead(); - checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), - RDF.Bag.asNode())); - return SecuredBagImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getBag(uri)); - } - - @Override - public SecuredGraph getGraph() - { - return graph; - } - - @Override - public Lock getLock() - { - return holder.getBaseItem().getLock(); - } - - @Override - public Map<String, String> getNsPrefixMap() - { - checkRead(); - return holder.getBaseItem().getNsPrefixMap(); - } - - @Override - public String getNsPrefixURI( final String prefix ) - { - checkRead(); - return holder.getBaseItem().getNsPrefixURI(prefix); - } - - @Override - public String getNsURIPrefix( final String uri ) - { - checkRead(); - return holder.getBaseItem().getNsURIPrefix(uri); - } - - @Override - public SecuredStatement getProperty( final Resource s, final Property p ) - { - final StmtIterator stmt = listStatements(s, p, (RDFNode) null); - try - { - if (stmt.hasNext()) - { - return SecuredStatementImpl.getInstance(holder.getSecuredItem(), stmt.next()); - } - return null; - } - finally - { - if (stmt != null) - { - stmt.close(); - } - } - } - - @Override - public SecuredProperty getProperty( final String uri ) - { - checkRead(); - return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getProperty(uri)); - } - - @Override - public SecuredProperty getProperty( final String nameSpace, - final String localName ) - { - checkRead(); - return SecuredPropertyImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getProperty(nameSpace, localName)); - } - - @Override - public SecuredRDFNode getRDFNode( final Node n ) - { - RDFNode rdfNode = null; - if (n.isLiteral()) - { - rdfNode = ResourceFactory.createTypedLiteral( - n.getLiteralLexicalForm(), n.getLiteralDatatype()); - } - else if (n.isURI()) - { - rdfNode = ResourceFactory.createProperty(n.getURI()); - } - else if (n.isBlank()) - { - rdfNode = ResourceFactory.createResource(n.getBlankNodeId() - .toString()); - } - else - { - throw new IllegalArgumentException("Illegal SecNode type: " + n); - } - - if (holder.getBaseItem().containsResource(rdfNode)) - { - checkRead(); - } - else - { - checkUpdate(); - } - if (n.isLiteral()) - { - return SecuredLiteralImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getRDFNode(n).asLiteral()); - } - else - { - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getRDFNode(n).asResource()); - } - } - - @Override - public RDFReader getReader() - { - return holder.getBaseItem().getReader(); - } - - @Override - public RDFReader getReader( final String lang ) - { - return holder.getBaseItem().getReader(lang); - } - - @Override - public void resetRDFReaderF() { - holder.getBaseItem().resetRDFReaderF(); - } - - @Override - public String removeReader(String lang) throws IllegalArgumentException { - return holder.getBaseItem().removeReader(lang); - } - - @Override - public SecuredStatement getRequiredProperty( final Resource s, - final Property p ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - return SecuredStatementImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getRequiredProperty(s, p)); - } - else - { - final SecuredStatementIterator si = listStatements(s, p, - (RDFNode) null); - try - { - if (si.hasNext()) - { - return (SecuredStatement) si.next(); - } - else - { - throw new PropertyNotFoundException(p); - } - } - finally - { - si.close(); - } - } - } - - @Override - public SecuredResource getResource( final String uri ) - { - return createResource(uri); - } - - @Override - @Deprecated - public SecuredResource getResource( final String uri, final ResourceF f ) - { - return createResource(uri, f); - } - - @Override - public SecuredSeq getSeq( final Resource r ) - { - checkRead(); - checkRead(new Triple(r.asNode(), RDF.type.asNode(), RDF.Seq.asNode())); - return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem().getSeq(r)); - } - - @Override - public SecuredSeq getSeq( final String uri ) - { - checkRead(); - checkRead(new Triple(NodeFactory.createURI(uri), RDF.type.asNode(), - RDF.Seq.asNode())); - return SecuredSeqImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .getSeq(uri)); - } - - @Override - public RDFWriter getWriter() - { - return holder.getBaseItem().getWriter(); - } - - @Override - public RDFWriter getWriter( final String lang ) - { - return holder.getBaseItem().getWriter(lang); - } - - @Override - public void resetRDFWriterF() { - holder.getBaseItem().resetRDFWriterF(); - } - - @Override - public String removeWriter(String lang) throws IllegalArgumentException { - return holder.getBaseItem().removeWriter(lang); - } - - @Override - public boolean independent() - { - return false; - } - - @Override - public Model intersection( final Model model ) - { - checkRead(); - if (!canRead(Triple.ANY)) - { - return holder.getBaseItem().intersection(model); - } - else - { - return createCopy().intersection(model); - } - } - - @Override - public boolean isClosed() - { - return holder.getBaseItem().isClosed(); - } - - @Override - public boolean isEmpty() - { - checkRead(); - return holder.getBaseItem().isEmpty(); - } - - @Override - public boolean isIsomorphicWith( final Model g ) - { - checkRead(); - final boolean retval = holder.getBaseItem().isIsomorphicWith(g); - if (retval && !canRead(Triple.ANY)) - { - // in this case we have to check all the items in the graph to see - // if the user can read - // them all. - final ExtendedIterator<Statement> stmtIter = holder.getBaseItem() - .listStatements(); - try - { - while (stmtIter.hasNext()) - { - if (!canRead(stmtIter.next().asTriple())) - { - return false; - } - } - } - finally - { - if (stmtIter != null) - { - stmtIter.close(); - } - } - } - return retval; - } - - @Override - public boolean isReified( final Statement s ) - { - checkRead(); - checkRead(s.asTriple()); - - final RSIterator it = listReifiedStatements(s); - try - { - return it.hasNext(); - } - finally - { - it.close(); - } - } - - @Override - public void leaveCriticalSection() - { - holder.getBaseItem().leaveCriticalSection(); - } - - @Override - public SecuredStatementIterator listLiteralStatements( - final Resource subject, final Property predicate, - final boolean object ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listLiteralStatements(subject, predicate, object)); - } - - @Override - public SecuredStatementIterator listLiteralStatements( - final Resource subject, final Property predicate, final char object ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listLiteralStatements(subject, predicate, object)); - } - - @Override - public SecuredStatementIterator listLiteralStatements( - final Resource subject, final Property predicate, - final double object ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listLiteralStatements(subject, predicate, object)); - } - - @Override - public SecuredStatementIterator listLiteralStatements( - final Resource subject, final Property predicate, final float object ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listLiteralStatements(subject, predicate, object)); - } - - @Override - public SecuredStatementIterator listLiteralStatements( - final Resource subject, final Property predicate, final long object ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listLiteralStatements(subject, predicate, object)); - } - - @Override - public NsIterator listNameSpaces() - { - checkRead(); - return holder.getBaseItem().listNameSpaces(); - } - - @Override - public SecuredNodeIterator<RDFNode> listObjects() - { - checkRead(); - ExtendedIterator<RDFNode> nIter = holder.getBaseItem().listObjects(); - if (!canRead(SecTriple.ANY)) - { - nIter = nIter.filterKeep( new ObjectFilter()); - } - return new SecuredNodeIterator<RDFNode>(holder.getSecuredItem(), nIter); - } - - @Override - public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Property p ) - { - checkRead(); - ExtendedIterator<RDFNode> nIter = holder.getBaseItem().listObjectsOfProperty(p); - if (!canRead(SecTriple.ANY)) - { - nIter = nIter.filterKeep( new ObjectFilter(p)); - } - return new SecuredNodeIterator<RDFNode>(holder.getSecuredItem(), nIter); - } - - @Override - public SecuredNodeIterator<RDFNode> listObjectsOfProperty( final Resource s, - final Property p ) - { - checkRead(); - ExtendedIterator<RDFNode> nIter = holder.getBaseItem().listObjectsOfProperty(s, p); - if (!canRead(SecTriple.ANY)) - { - nIter = nIter.filterKeep( new ObjectFilter(p)); - } - return new SecuredNodeIterator<RDFNode>(holder.getSecuredItem(), nIter); - } - - @Override - public SecuredRSIterator listReifiedStatements() - { - checkRead(); - return new SecuredRSIterator(holder.getSecuredItem(), holder.getBaseItem() - .listReifiedStatements()); - } - - @Override - public SecuredRSIterator listReifiedStatements( final Statement st ) - { - checkRead(); - checkRead(st); - return new SecuredRSIterator(holder.getSecuredItem(), holder.getBaseItem() - .listReifiedStatements(st)); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p)); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final boolean o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o))); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final char o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o))); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final double o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o))); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final float o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o))); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final long o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o))); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final Object o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createTypedLiteral(o))); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredResIterator listResourcesWithProperty( final Property p, - final RDFNode o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listResourcesWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, o)); - } - return new SecuredResIterator( holder.getSecuredItem(), rIter ); - } - - @Override - public SecuredStatementIterator listStatements() - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listStatements()); - } - - @Override - public SecuredStatementIterator listStatements( final Resource s, - final Property p, final RDFNode o ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listStatements(s, p, o)); - } - - @Override - public SecuredStatementIterator listStatements( final Resource subject, - final Property predicate, final String object ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listStatements(subject, predicate, object)); - } - - @Override - public SecuredStatementIterator listStatements( final Resource subject, - final Property predicate, final String object, final String lang ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listStatements(subject, predicate, object, lang)); - } - - @Override - public SecuredStatementIterator listStatements( final Selector s ) - { - checkRead(); - return new SecuredStatementIterator(holder.getSecuredItem(), holder.getBaseItem() - .listStatements(s)); - } - - @Override - public SecuredResIterator listSubjects() - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjects(); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter()); - } - return new SecuredResIterator(holder.getSecuredItem(),rIter); - } - - @Override - public SecuredResIterator listSubjectsWithProperty( final Property p ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p)); - } - return new SecuredResIterator(holder.getSecuredItem(),rIter); - } - - @Override - public SecuredResIterator listSubjectsWithProperty( final Property p, - final RDFNode o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, o)); - } - return new SecuredResIterator(holder.getSecuredItem(),rIter); - } - - @Override - public SecuredResIterator listSubjectsWithProperty( final Property p, - final String o ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p, o); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createPlainLiteral(o))); - } - return new SecuredResIterator(holder.getSecuredItem(),rIter); - } - - @Override - public SecuredResIterator listSubjectsWithProperty( final Property p, - final String o, final String l ) - { - checkRead(); - ExtendedIterator<Resource> rIter = holder.getBaseItem().listSubjectsWithProperty(p, o, l); - if (!canRead( SecTriple.ANY)) - { - rIter=rIter.filterKeep( new ResourceFilter(p, ResourceFactory.createLangLiteral(o, l))); - } - return new SecuredResIterator(holder.getSecuredItem(),rIter); - } - - @Override - public SecuredPrefixMapping lock() - { - checkUpdate(); - holder.getBaseItem().lock(); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel notifyEvent( final Object e ) - { - holder.getBaseItem().notifyEvent(e); - return holder.getSecuredItem(); - } - - @Override - public String qnameFor( final String uri ) - { - checkRead(); - return holder.getBaseItem().qnameFor(uri); - } - - @Override - public SecuredModel query( final Selector s ) - { - checkRead(); - return SecuredModelImpl.getInstance(holder.getSecuredItem(), - holder.getBaseItem().query(new SecuredSelector(holder.getSecuredItem(), s))); - } - - @Override - public SecuredModel read( final InputStream in, final String base ) - { - checkUpdate(); - try - { - SecuredModelImpl.readerFactory.getReader().read(holder.getSecuredItem(), in, base); - return holder.getSecuredItem(); - } - catch (final JenaException e) - { - if ((e.getCause() != null) - && (e.getCause() instanceof AccessDeniedException)) - { - throw (AccessDeniedException) e.getCause(); - } - throw e; - } - } - - @Override - public SecuredModel read( final InputStream in, final String base, - final String lang ) - { - checkUpdate(); - try - { - SecuredModelImpl.readerFactory.getReader(lang).read(holder.getSecuredItem(), in, base); - return holder.getSecuredItem(); - } - catch (final JenaException e) - { - if ((e.getCause() != null) - && (e.getCause() instanceof AccessDeniedException)) - { - throw (AccessDeniedException) e.getCause(); - } - throw e; - } - } - - @Override - public SecuredModel read( final Reader reader, final String base ) - { - checkUpdate(); - try - { - SecuredModelImpl.readerFactory.getReader().read(holder.getSecuredItem(), reader, base); - return holder.getSecuredItem(); - } - catch (final JenaException e) - { - if ((e.getCause() != null) - && (e.getCause() instanceof AccessDeniedException)) - { - throw (AccessDeniedException) e.getCause(); - } - throw e; - } - } - - @Override - public SecuredModel read( final Reader reader, final String base, - final String lang ) - { - checkUpdate(); - try - { - SecuredModelImpl.readerFactory.getReader(lang).read(holder.getSecuredItem(), reader, - base); - return holder.getSecuredItem(); - } - catch (final JenaException e) - { - if ((e.getCause() != null) - && (e.getCause() instanceof AccessDeniedException)) - { - throw (AccessDeniedException) e.getCause(); - } - throw e; - } - } - - @Override - public SecuredModel read( final String url ) - { - checkUpdate(); - try - { - SecuredModelImpl.readerFactory.getReader().read(holder.getSecuredItem(), url); - return holder.getSecuredItem(); - } - catch (final JenaException e) - { - if ((e.getCause() != null) - && (e.getCause() instanceof AccessDeniedException)) - { - throw (AccessDeniedException) e.getCause(); - } - throw e; - } - } - - @Override - public SecuredModel read( final String url, final String lang ) - { - checkUpdate(); - try - { - SecuredModelImpl.readerFactory.getReader(lang).read(holder.getSecuredItem(), url); - return holder.getSecuredItem(); - } - catch (final JenaException e) - { - if ((e.getCause() != null) - && (e.getCause() instanceof AccessDeniedException)) - { - throw (AccessDeniedException) e.getCause(); - } - throw e; - } - } - - @Override - public SecuredModel read( final String url, final String base, - final String lang ) - { - try - { - final InputStream is = new URL(url).openStream(); - try - { - read(is, base, lang); - } - finally - { - if (null != is) - { - is.close(); - } - } - } - catch (final IOException e) - { - throw new WrappedIOException(e); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel register( final ModelChangedListener listener ) - { - checkRead(); - if (!listeners.containsKey(listener)) - { - final SecuredModelChangedListener secL = new SecuredModelChangedListener( - listener); - listeners.put(listener, secL); - holder.getBaseItem().register(secL); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel remove( final List<Statement> statements ) - { - checkUpdate(); - if (!canDelete(Triple.ANY)) - { - for (final Statement s : statements) - { - checkDelete(s.asTriple()); - } - } - holder.getBaseItem().remove(statements); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel remove( final Model m ) - { - checkUpdate(); - if (!canDelete(Triple.ANY)) - { - final StmtIterator iter = m.listStatements(); - try - { - while (iter.hasNext()) - { - final Statement stmt = iter.next(); - checkDelete(stmt); - } - } - finally - { - iter.close(); - } - } - holder.getBaseItem().remove(m); - - return holder.getSecuredItem(); - } - - @Override - public SecuredModel remove( final Resource s, final Property p, final RDFNode o ) - { - checkUpdate(); - checkDelete(new Triple(s.asNode(), p.asNode(), o.asNode())); - holder.getBaseItem().remove(s, p, o); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel remove( final Statement s ) - { - checkUpdate(); - checkDelete(wildCardTriple(s)); - holder.getBaseItem().remove(s); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel remove( final Statement[] statements ) - { - checkUpdate(); - if (!canDelete(Triple.ANY)) - { - for (final Statement s : statements) - { - checkDelete(s.asTriple()); - } - } - holder.getBaseItem().remove(statements); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel remove( final StmtIterator iter ) - { - checkUpdate(); - if (!canDelete(Triple.ANY)) - { - final List<Triple> lst = new ArrayList<Triple>(); - try - { - while (iter.hasNext()) - { - final Statement s = iter.next(); - checkDelete(s.asTriple()); - lst.add(s.asTriple()); - } - final Model m = ModelFactory - .createModelForGraph(new CollectionGraph(lst)); - holder.getBaseItem().remove(m.listStatements()); - } - finally - { - iter.close(); - } - } - else - { - holder.getBaseItem().remove(iter); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel removeAll() - { - checkUpdate(); - if (!canDelete(Triple.ANY)) - { - final StmtIterator iter = holder.getBaseItem().listStatements(); - try - { - while (iter.hasNext()) - { - checkDelete(iter.next()); - } - } - finally - { - iter.close(); - } - } - holder.getBaseItem().removeAll(); - return holder.getSecuredItem(); - } - - @Override - public SecuredModel removeAll( final Resource s, final Property p, - final RDFNode r ) - { - checkUpdate(); - if (!canDelete(new Triple(wildCardNode(s), wildCardNode(p), - wildCardNode(r)))) - { - final StmtIterator iter = holder.getBaseItem().listStatements(s, p, - r); - try - { - while (iter.hasNext()) - { - checkDelete(iter.next()); - } - } - finally - { - iter.close(); - } - } - holder.getBaseItem().removeAll(s, p, r); - return holder.getSecuredItem(); - } - - @Override - public void removeAllReifications( final Statement s ) - { - checkUpdate(); - if (canDelete(new Triple(Node.ANY, RDF.subject.asNode(), - wildCardNode(s.getSubject()))) - && canDelete(new Triple(Node.ANY, RDF.predicate.asNode(), - wildCardNode(s.getPredicate()))) - && canDelete(new Triple(Node.ANY, RDF.object.asNode(), - wildCardNode(s.getObject())))) - { - holder.getBaseItem().removeAllReifications(s); - } - else - { - final RSIterator iter = holder.getBaseItem().listReifiedStatements( - s); - try - { - while (iter.hasNext()) - { - final ReifiedStatement rs = iter.next(); - checkDelete(new Triple(rs.asNode(), RDF.subject.asNode(), - wildCardNode(s.getSubject()))); - checkDelete(new Triple(rs.asNode(), RDF.predicate.asNode(), - wildCardNode(s.getPredicate()))); - checkDelete(new Triple(rs.asNode(), RDF.object.asNode(), - wildCardNode(s.getObject()))); - } - holder.getBaseItem().removeAllReifications(s); - } - finally - { - iter.close(); - } - - } - } - - @Override - public SecuredPrefixMapping removeNsPrefix( final String prefix ) - { - checkUpdate(); - holder.getBaseItem().removeNsPrefix(prefix); - return holder.getSecuredItem(); - } - - @Override - public void removeReification( final ReifiedStatement rs ) - { - checkUpdate(); - if (!canDelete(Triple.ANY)) - { - final StmtIterator stmtIter = rs.listProperties(); - try - { - while (stmtIter.hasNext()) - { - checkDelete(stmtIter.next().asTriple()); - } - } - finally - { - stmtIter.close(); - } - } - holder.getBaseItem().removeReification(rs); - } - - @Override - public boolean samePrefixMappingAs( final PrefixMapping other ) - { - checkRead(); - return holder.getBaseItem().samePrefixMappingAs(other); - } - - @Override - public SecuredPrefixMapping setNsPrefix( final String prefix, - final String uri ) - { - checkUpdate(); - holder.getBaseItem().setNsPrefix(prefix, uri); - return holder.getSecuredItem(); - } - - @Override - public SecuredPrefixMapping setNsPrefixes( final Map<String, String> map ) - { - checkUpdate(); - holder.getBaseItem().setNsPrefixes(map); - return holder.getSecuredItem(); - } - - @Override - public SecuredPrefixMapping setNsPrefixes( final PrefixMapping other ) - { - checkUpdate(); - holder.getBaseItem().setNsPrefixes(other); - return holder.getSecuredItem(); - } - - @Override - public String setReaderClassName( final String lang, final String className ) - { - checkUpdate(); - return holder.getBaseItem().setReaderClassName(lang, className); - } - - @Override - public String setWriterClassName( final String lang, final String className ) - { - checkUpdate(); - return holder.getBaseItem().setWriterClassName(lang, className); - } - - @Override - public String shortForm( final String uri ) - { - checkRead(); - return holder.getBaseItem().shortForm(uri); - } - - @Override - public long size() - { - checkRead(); - return holder.getBaseItem().size(); - } - - @Override - public boolean supportsSetOperations() - { - return holder.getBaseItem().supportsTransactions(); - } - - @Override - public boolean supportsTransactions() - { - return holder.getBaseItem().supportsTransactions(); - } - - @Override - public Model union( final Model model ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - return holder.getBaseItem().union(model); - } - else - { - return createCopy().union(model); - } - } - - @Override - public SecuredModel unregister( final ModelChangedListener listener ) - { - if (listeners.containsKey(listener)) - { - final SecuredModelChangedListener secL = listeners.get(listener); - holder.getBaseItem().unregister(secL); - listeners.remove(listener); - } - return holder.getSecuredItem(); - } - - private Node wildCardNode( final RDFNode node ) - { - return node == null ? Node.ANY : node.asNode(); - } - - private Triple wildCardTriple( final Statement s ) - { - return new Triple(wildCardNode(s.getSubject()), - wildCardNode(s.getPredicate()), wildCardNode(s.getObject())); - } - - @Override - public SecuredPrefixMapping withDefaultMappings( final PrefixMapping map ) - { - checkUpdate(); - holder.getBaseItem().withDefaultMappings(map); - return holder.getSecuredItem(); - } - - @Override - public SecuredResource wrapAsResource( final Node n ) - { - return SecuredResourceImpl.getInstance(holder.getSecuredItem(), holder.getBaseItem() - .wrapAsResource(n)); - } - - @Override - public SecuredModel write( final OutputStream out ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - holder.getBaseItem().write(out); - } - else - { - getWriter().write(holder.getSecuredItem(), out, ""); - } - return holder.getSecuredItem(); - - } - - @Override - public SecuredModel write( final OutputStream out, final String lang ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - holder.getBaseItem().write(out, lang); - } - else - { - getWriter(lang).write(holder.getSecuredItem(), out, ""); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel write( final OutputStream out, final String lang, - final String base ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - holder.getBaseItem().write(out, lang, base); - } - else - { - getWriter(lang).write(holder.getSecuredItem(), out, base); - } - return holder.getSecuredItem(); - - } - - @Override - public SecuredModel write( final Writer writer ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - holder.getBaseItem().write(writer); - } - else - { - getWriter().write(holder.getSecuredItem(), writer, ""); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel write( final Writer writer, final String lang ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - holder.getBaseItem().write(writer, lang); - } - else - { - getWriter(lang).write(holder.getSecuredItem(), writer, ""); - } - return holder.getSecuredItem(); - } - - @Override - public SecuredModel write( final Writer writer, final String lang, - final String base ) - { - checkRead(); - if (canRead(Triple.ANY)) - { - holder.getBaseItem().write(writer, lang, base); - } - else - { - getWriter(lang).write(holder.getSecuredItem(), writer, base); - } - return holder.getSecuredItem(); - - } - - private class ResourceFilter extends Filter<Resource> { - Property p; - RDFNode o; - - ResourceFilter() { - this(null, null); - } - - ResourceFilter( Property p) - { - this(p,null); - } - - ResourceFilter( Property p, RDFNode o) - { - this.p = p; - this.o = o; - } - - @Override - public boolean accept(Resource s) { - StmtIterator iter = listStatements(s, p, o); - try { - return iter.hasNext(); - } - finally { - iter.close(); - } - } - - } - - private class ObjectFilter extends Filter<RDFNode> { - Resource s; - Property p; - - ObjectFilter( ) { - this(null,null); - } - - ObjectFilter( Property p ) - { - this(null, p ); - } - - ObjectFilter( Resource s, Property p) - { - this.s = s; - this.p = p; - } - - @Override - public boolean accept(RDFNode o) { - StmtIterator iter = listStatements(s, p, o); - try { - return iter.hasNext(); - } - finally { - iter.close(); - } - } - } - -}
http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredNodeIterator.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredNodeIterator.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredNodeIterator.java deleted file mode 100644 index 2fd93ce..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredNodeIterator.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.model.impl; - -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Set; - -import org.apache.jena.rdf.model.NodeIterator ; -import org.apache.jena.rdf.model.RDFNode ; -import org.apache.jena.security.model.SecuredModel; -import org.apache.jena.security.model.SecuredRDFNode; -import org.apache.jena.util.iterator.ExtendedIterator ; -import org.apache.jena.util.iterator.Filter ; -import org.apache.jena.util.iterator.Map1 ; - -/** - * A secured RDFNode iterator implementation - */ -public class SecuredNodeIterator<T extends RDFNode> implements NodeIterator -{ - private class PermNodeMap<N extends RDFNode> implements Map1<N, RDFNode> - { - private final SecuredModel securedModel; - - public PermNodeMap( final SecuredModel securedModel ) - { - this.securedModel = securedModel; - } - - @Override - public SecuredRDFNode map1( final RDFNode o ) - { - return SecuredRDFNodeImpl.getInstance(securedModel, o); - } - } - - private final ExtendedIterator<RDFNode> iter; - - /** - * Constructor - * - * @param securedItem - * the item defining the security context - * @param wrapped - * the iterator to be wrapped. - */ - SecuredNodeIterator( final SecuredModel securedModel, - final ExtendedIterator<T> wrapped ) - { - final PermNodeMap<T> map1 = new PermNodeMap<T>(securedModel); - iter = wrapped.mapWith(map1); - } - - @Override - public <X extends RDFNode> ExtendedIterator<RDFNode> andThen( - final Iterator<X> other ) - { - return iter.andThen(other); - } - - @Override - public void close() - { - iter.close(); - } - - @Override - public ExtendedIterator<RDFNode> filterDrop( final Filter<RDFNode> f ) - { - return iter.filterDrop(f); - } - - @Override - public ExtendedIterator<RDFNode> filterKeep( final Filter<RDFNode> f ) - { - return iter.filterKeep(f); - } - - @Override - public boolean hasNext() - { - return iter.hasNext(); - } - - @Override - public <U> ExtendedIterator<U> mapWith( final Map1<RDFNode, U> map1 ) - { - return iter.mapWith(map1); - } - - @Override - public RDFNode next() - { - return iter.next(); - } - - @Override - public RDFNode nextNode() throws NoSuchElementException - { - return next(); - } - - @Override - public void remove() - { - iter.remove(); - } - - @Override - public RDFNode removeNext() - { - return iter.removeNext(); - } - - @Override - public List<RDFNode> toList() - { - return iter.toList(); - } - - @Override - public Set<RDFNode> toSet() - { - return iter.toSet(); - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredPropertyImpl.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredPropertyImpl.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredPropertyImpl.java deleted file mode 100644 index c0ee426..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredPropertyImpl.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.jena.security.model.impl; - -import org.apache.jena.graph.Node ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.Property ; -import org.apache.jena.security.impl.ItemHolder; -import org.apache.jena.security.impl.SecuredItemInvoker; -import org.apache.jena.security.model.SecuredModel; -import org.apache.jena.security.model.SecuredProperty; - -/** - * Implementation of SecuredProperty to be used by a SecuredItemInvoker proxy. - */ -public class SecuredPropertyImpl extends SecuredResourceImpl implements - SecuredProperty -{ - /** - * Get an instance of SecuredProperty - * - * @param securedModel - * the Secured Model to use. - * @param property - * The property to secure - * @return The SecuredProperty - */ - public static SecuredProperty getInstance( final SecuredModel securedModel, - final Property property ) - { - if (securedModel == null) - { - throw new IllegalArgumentException( - "Secured securedModel may not be null"); - } - if (property == null) - { - throw new IllegalArgumentException("Property may not be null"); - } - - // check that property has a securedModel. - Property goodProp = property; - if (goodProp.getModel() == null) - { - final Node n = property.asNode(); - if (property.isAnon()) - { - goodProp = securedModel.createProperty(n.getBlankNodeId() - .getLabelString()); - } - else - { - goodProp = securedModel.createProperty(property.asNode() - .getURI()); - } - } - - final ItemHolder<Property, SecuredProperty> holder = new ItemHolder<Property, SecuredProperty>( - goodProp); - final SecuredPropertyImpl checker = new SecuredPropertyImpl( - securedModel, holder); - // if we are going to create a duplicate proxy, just return this - // one. - if (goodProp instanceof SecuredProperty) - { - if (checker.isEquivalent((SecuredProperty) goodProp)) - { - return (SecuredProperty) goodProp; - } - } - return holder.setSecuredItem(new SecuredItemInvoker( - property.getClass(), checker)); - } - - // the item holder that contains this SecuredProperty - private final ItemHolder<? extends Property, ? extends SecuredProperty> holder; - - /** - * Constructor - * - * @param securityEvaluator - * The security evaluator to use. - * @param graphIRI - * the graph IRI to validate against. - * @param holder - * The item holder that will contain this SecuredProperty. - */ - private SecuredPropertyImpl( - final SecuredModel securedModel, - final ItemHolder<? extends Property, ? extends SecuredProperty> holder ) - { - super(securedModel, holder); - this.holder = holder; - } - - @Override - public int getOrdinal() - { - checkRead(); - return holder.getBaseItem().getOrdinal(); - } - - @Override - public Property inModel( final Model m ) - { - return (Property) super.inModel(m); - } - - @Override - public boolean isProperty() - { - return true; - } -}
