http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/SecuredUnsupportedPolymorphismException.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/SecuredUnsupportedPolymorphismException.java b/jena-permissions/src/main/java/org/apache/jena/security/model/SecuredUnsupportedPolymorphismException.java deleted file mode 100644 index 0fe619c..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/SecuredUnsupportedPolymorphismException.java +++ /dev/null @@ -1,36 +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; - -import org.apache.jena.enhanced.UnsupportedPolymorphismException ; -import org.apache.jena.security.model.impl.SecuredRDFNodeImpl; - -/** - * An extension to the UnsupportedPolymorphismException to handle - * secured polymorphic changes. - */ -public class SecuredUnsupportedPolymorphismException extends - UnsupportedPolymorphismException -{ - - public SecuredUnsupportedPolymorphismException( - final SecuredRDFNodeImpl node, final Class<?> type ) - { - super( node, node.getModel() != null, type); - } -}
http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredAltImpl.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredAltImpl.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredAltImpl.java deleted file mode 100644 index 0d082fa..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredAltImpl.java +++ /dev/null @@ -1,339 +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.Triple ; -import org.apache.jena.rdf.model.* ; -import org.apache.jena.security.SecurityEvaluator.Action; -import org.apache.jena.security.impl.ItemHolder; -import org.apache.jena.security.impl.SecuredItemInvoker; -import org.apache.jena.security.model.SecuredAlt; -import org.apache.jena.security.model.SecuredBag; -import org.apache.jena.security.model.SecuredLiteral; -import org.apache.jena.security.model.SecuredModel; -import org.apache.jena.security.model.SecuredRDFNode; -import org.apache.jena.security.model.SecuredResource; -import org.apache.jena.security.model.SecuredSeq; -import org.apache.jena.util.iterator.ExtendedIterator ; - -/** - * Implementation of SecuredAlt to be used by a SecuredItemInvoker proxy. - */ -public class SecuredAltImpl extends SecuredContainerImpl implements SecuredAlt -{ - /** - * Get an instance of SecuredAlt. - * - * @param securedModel - * the Secured Model to use. - * @param alt - * The Alt to be secured. - * @return The secured Alt instance. - */ - public static SecuredAlt getInstance( final SecuredModel securedModel, - final Alt alt ) - { - if (securedModel == null) - { - throw new IllegalArgumentException( - "Secured securedModel may not be null"); - } - if (alt == null) - { - throw new IllegalArgumentException("Alt may not be null"); - } - final ItemHolder<Alt, SecuredAlt> holder = new ItemHolder<Alt, SecuredAlt>( - alt); - final SecuredAltImpl checker = new SecuredAltImpl(securedModel, holder); - // if we are going to create a duplicate proxy, just return this - // one. - if (alt instanceof SecuredAlt) - { - if (checker.isEquivalent((SecuredAlt) alt)) - { - return (SecuredAlt) alt; - } - } - return holder.setSecuredItem(new SecuredItemInvoker(alt.getClass(), - checker)); - } - - // The item holder holding this SecuredAlt - private final ItemHolder<? extends Alt, ? extends SecuredAlt> holder; - - /** - * Constructor. - * - * @param securedModel - * the securedModel to use. - * @param holder - * The item holder that will hold this SecuredAlt. - */ - protected SecuredAltImpl( final SecuredModel securedModel, - final ItemHolder<? extends Alt, ? extends SecuredAlt> holder ) - { - super(securedModel, holder); - this.holder = holder; - } - - @Override - public SecuredRDFNode getDefault() - { - // getDefaultStatement() calls checkRead - return SecuredRDFNodeImpl.getInstance(getModel(), getDefaultStatement() - .getObject()); - } - - @Override - public SecuredAlt getDefaultAlt() - { - // getDefaultStatement() calls checkRead - return SecuredAltImpl.getInstance(getModel(), getDefaultStatement() - .getAlt()); - } - - @Override - public SecuredBag getDefaultBag() - { - // getDefaultStatement() calls checkRead - return SecuredBagImpl.getInstance(getModel(), getDefaultStatement() - .getBag()); - } - - @Override - public boolean getDefaultBoolean() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getBoolean(); - } - - @Override - public byte getDefaultByte() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getByte(); - } - - @Override - public char getDefaultChar() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getChar(); - } - - @Override - public double getDefaultDouble() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getDouble(); - } - - @Override - public float getDefaultFloat() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getFloat(); - } - - @Override - public int getDefaultInt() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getInt(); - } - - @Override - public String getDefaultLanguage() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getLanguage(); - } - - @Override - public SecuredLiteral getDefaultLiteral() - { - // getDefaultStatement() calls checkRead - return SecuredLiteralImpl.getInstance(getModel(), getDefaultStatement() - .getLiteral()); - } - - @Override - public long getDefaultLong() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getLong(); - } - - @Override - public SecuredResource getDefaultResource() - { - // getDefaultStatement() calls checkRead - return SecuredResourceImpl.getInstance(getModel(), - getDefaultStatement().getResource()); - } - - @Override - @Deprecated - public SecuredResource getDefaultResource( final ResourceF f ) - { - // getDefaultStatement() calls checkRead - return SecuredResourceImpl.getInstance(getModel(), - getDefaultStatement().getResource(f)); - } - - @Override - public SecuredSeq getDefaultSeq() - { - // getDefaultStatement() calls checkRead - return SecuredSeqImpl.getInstance(getModel(), getDefaultStatement() - .getSeq()); - } - - @Override - public short getDefaultShort() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getShort(); - - } - - private Statement getDefaultStatement() - { - checkRead(); - final ExtendedIterator<Statement> iter = getStatementIterator(Action.Read); - try - { - if (iter.hasNext()) - { - return iter.next(); - } - throw new AltHasNoDefaultException(this); - } - finally - { - iter.close(); - } - } - - @Override - public String getDefaultString() - { - // getDefaultStatement() calls checkRead - return getDefaultStatement().getString(); - - } - - /* - * private SecTriple getDefaultTriple() - * { - * final StmtIterator iter = holder.getBaseItem().getModel() - * .listStatements(this, RDF.li(1), (RDFNode) null); - * try - * { - * return iter.hasNext() ? iter.nextStatement().asTriple() : null; - * } - * finally - * { - * iter.close(); - * } - * - * } - * - * private SecTriple getNewTriple( final SecTriple t, final Object o ) - * { - * return new SecTriple(t.getSubject(), t.getPredicate(), - * SecNode.createLiteral( - * String.valueOf(o), "", false)); - * } - */ - @Override - public SecuredAlt setDefault( final boolean o ) - { - return setDefault( asObject( o )); - } - - @Override - public SecuredAlt setDefault( final char o ) - { - return setDefault( asObject( o )); - } - - @Override - public SecuredAlt setDefault( final double o ) - { - return setDefault( asObject( o )); - } - - @Override - public SecuredAlt setDefault( final float o ) - { - return setDefault( asObject( o )); - } - - @Override - public SecuredAlt setDefault( final long o ) - { - return setDefault( asObject( o )); - } - - @Override - public SecuredAlt setDefault( final Object o ) - { - return setDefault( asObject( o )); - } - - @Override - public SecuredAlt setDefault( final RDFNode o ) - { - checkUpdate(); - final ExtendedIterator<Statement> iter = getStatementIterator(Action.Read); - try { - if (iter.hasNext()) - { - final Statement stmt = iter.next(); - final Triple t = stmt.asTriple(); - final Triple t2 = new Triple(t.getSubject(), t.getPredicate(), - o.asNode()); - checkUpdate(t, t2); - stmt.changeObject(o); - return holder.getSecuredItem(); - } - else - { - add( o ); - return holder.getSecuredItem(); - } - } - finally { - iter.close(); - } - - } - - @Override - public SecuredAlt setDefault( final String o ) - { - return setDefault( asLiteral( o, "" )); - } - - @Override - public SecuredAlt setDefault( final String o, final String l ) - { - return setDefault( asLiteral( o, l) ); - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredBagImpl.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredBagImpl.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredBagImpl.java deleted file mode 100644 index 9c8b3a1..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredBagImpl.java +++ /dev/null @@ -1,81 +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.rdf.model.Bag ; -import org.apache.jena.security.impl.ItemHolder; -import org.apache.jena.security.impl.SecuredItemInvoker; -import org.apache.jena.security.model.SecuredBag; -import org.apache.jena.security.model.SecuredModel; - -/** - * Implementation of SecuredBag to be used by a SecuredItemInvoker proxy. - */ -public class SecuredBagImpl extends SecuredContainerImpl implements SecuredBag -{ - /** - * Get an instance of SecuredBag - * - * @param securedModel - * The Secured Model to use. - * @param bag - * The bag to secure - * @return The SecuredBag - */ - public static SecuredBag getInstance( final SecuredModel securedModel, - final Bag bag ) - { - if (securedModel == null) - { - throw new IllegalArgumentException( - "Secured securedModel may not be null"); - } - if (bag == null) - { - throw new IllegalArgumentException("Bag may not be null"); - } - final ItemHolder<Bag, SecuredBag> holder = new ItemHolder<Bag, SecuredBag>( - bag); - final SecuredBagImpl checker = new SecuredBagImpl(securedModel, holder); - // if we are going to create a duplicate proxy, just return this - // one. - if (bag instanceof SecuredBag) - { - if (checker.isEquivalent((SecuredBag) bag)) - { - return (SecuredBag) bag; - } - } - return holder.setSecuredItem(new SecuredItemInvoker(bag.getClass(), - checker)); - } - - /** - * Constructor. - * - * @param securedModel - * The Secured Model to use. - * @param holder - * The holder that will contain this SecuredBag. - */ - protected SecuredBagImpl( final SecuredModel securedModel, - final ItemHolder<? extends Bag, ? extends SecuredBag> holder ) - { - super(securedModel, holder); - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredContainerImpl.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredContainerImpl.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredContainerImpl.java deleted file mode 100644 index 2de34fa..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredContainerImpl.java +++ /dev/null @@ -1,576 +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.Comparator; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; - -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.Triple ; -import org.apache.jena.rdf.model.* ; -import org.apache.jena.security.SecurityEvaluator.Action; -import org.apache.jena.security.impl.ItemHolder; -import org.apache.jena.security.impl.SecuredItemInvoker; -import org.apache.jena.security.model.SecuredContainer; -import org.apache.jena.security.model.SecuredModel; -import org.apache.jena.security.utils.ContainerFilter; -import org.apache.jena.security.utils.PermStatementFilter; -import org.apache.jena.util.iterator.ExtendedIterator ; -import org.apache.jena.util.iterator.Map1 ; -import org.apache.jena.util.iterator.WrappedIterator ; -import org.apache.jena.vocabulary.RDF ; - -/** - * Implementation of SecuredContainer to be used by a SecuredItemInvoker proxy. - */ -public class SecuredContainerImpl extends SecuredResourceImpl implements - SecuredContainer -{ - /** - * Constructor - * - * @param securedModel - * the Secured Model to use. - * @param container - * The container to secure. - * @return The SecuredResource - */ - public static SecuredContainer getInstance( - final SecuredModel securedModel, final Container container ) - { - if (securedModel == null) - { - throw new IllegalArgumentException( - "Secured securedModel may not be null"); - } - if (container == null) - { - throw new IllegalArgumentException("Container may not be null"); - } - - // check that resource has a securedModel. - Container goodContainer = container; - if (goodContainer.getModel() == null) - { - container.asNode(); - goodContainer = securedModel.createBag(); - } - - final ItemHolder<Container, SecuredContainer> holder = new ItemHolder<Container, SecuredContainer>( - goodContainer); - - final SecuredContainerImpl checker = new SecuredContainerImpl( - securedModel, holder); - // if we are going to create a duplicate proxy, just return this - // one. - if (goodContainer instanceof SecuredContainer) - { - if (checker.isEquivalent((SecuredContainer) goodContainer)) - { - return (SecuredContainer) goodContainer; - } - } - - return holder.setSecuredItem(new SecuredItemInvoker(container - .getClass(), checker)); - - } - - // the item holder that contains this SecuredContainer. - private final ItemHolder<? extends Container, ? extends SecuredContainer> holder; - - /** - * Constructor - * - * @param securedModel - * the Secured Model to use. - * @param holder - * The item holder that will contain this SecuredContainer - */ - protected SecuredContainerImpl( - final SecuredModel securedModel, - final ItemHolder<? extends Container, ? extends SecuredContainer> holder ) - { - super(securedModel, holder); - this.holder = holder; - // listener=new ChangeListener(); - // holder.getBaseItem().getModel().register(listener); - } - - protected RDFNode asObject( Object o ) - { - return o instanceof RDFNode ? (RDFNode) o : ResourceFactory.createTypedLiteral( o ); - } - - protected RDFNode asLiteral( String o, String l ) - { - return holder.getBaseItem().getModel().createLiteral(o, l); - } - - @Override - public SecuredContainer add( final boolean o ) - { - return add( asObject( o )); - } - - @Override - public SecuredContainer add( final char o ) - { - return add( asObject( o )); - } - - @Override - public SecuredContainer add( final double o ) - { - return add( asObject( o )); - } - - @Override - public SecuredContainer add( final float o ) - { - return add( asObject( o )); - } - - @Override - public SecuredContainer add( final long o ) - { - return add( asObject( o )); - } - - @Override - public SecuredContainer add( final Object o ) - { - return add( asObject( o )); - } - - @Override - public SecuredContainer add( final RDFNode o ) - { - checkUpdate(); - final int pos = holder.getBaseItem().size(); - checkAdd(pos, o.asNode()); - holder.getBaseItem().add(o); - return holder.getSecuredItem(); - } - - @Override - public SecuredContainer add( final String o ) - { - return add( asLiteral( o, "" )); - } - - @Override - public SecuredContainer add( final String o, final String l ) - { - return add( asLiteral( o, l)); - } - - protected void checkAdd( final int pos, final Literal literal ) - { - checkAdd(pos, literal.asNode()); - } - - protected void checkAdd( final int pos, final Node node ) - { - checkCreate(new Triple(holder.getBaseItem().asNode(), RDF.li(pos) - .asNode(), node)); - } - - @Override - public boolean contains( final boolean o ) - { - return contains( asObject( o ) ); - } - - @Override - public boolean contains( final char o ) - { - return contains( asObject( o ) ); - } - - @Override - public boolean contains( final double o ) - { - return contains( asObject( o ) ); - } - - @Override - public boolean contains( final float o ) - { - return contains( asObject( o ) ); - } - - @Override - public boolean contains( final long o ) - { - return contains( asObject( o ) ); - } - - @Override - public boolean contains( final Object o ) - { - return contains( asObject( o ) ); - } - - @Override - public boolean contains( final RDFNode o ) - { - // iterator check reads - final SecuredNodeIterator<RDFNode> iter = iterator(); - while (iter.hasNext()) - { - if (iter.next().asNode().equals(o.asNode())) - { - return true; - } - } - return false; - } - - @Override - public boolean contains( final String o ) - { - return contains( asLiteral( o, "" )); - } - - @Override - public boolean contains( final String o, final String l ) - { - return contains( asLiteral( o, l )); - } - - protected int getAddIndex() - { - int pos = -1; - final ExtendedIterator<Statement> iter = holder.getBaseItem() - .listProperties(); - try - { - while (iter.hasNext()) - { - pos = Math.max(pos, getIndex(iter.next().getPredicate())); - } - } - finally - { - iter.close(); - } - return pos + 1; - } - - protected static int getIndex( final Property p ) - { - if (p.getNameSpace().equals(RDF.getURI()) - && p.getLocalName().startsWith("_")) - { - try - { - return Integer.parseInt(p.getLocalName().substring(1)); - } - catch (final NumberFormatException e) - { - // acceptable; - } - } - return -1; - } - - protected ExtendedIterator<Statement> getStatementIterator( - final Action perm ) - { - return holder.getBaseItem().listProperties() - .filterKeep(new ContainerFilter()) - .filterKeep(new PermStatementFilter(perm, this)); - } - - protected ExtendedIterator<Statement> getStatementIterator( - final Set<Action> perm ) - { - return holder.getBaseItem().listProperties() - .filterKeep(new ContainerFilter()) - .filterKeep(new PermStatementFilter(perm, this)); - } - - @Override - public boolean isAlt() - { - return holder.getBaseItem().isAlt(); - } - - @Override - public boolean isBag() - { - return holder.getBaseItem().isBag(); - } - - @Override - public boolean isSeq() - { - return holder.getBaseItem().isSeq(); - } - - @Override - public SecuredNodeIterator<RDFNode> iterator() - { - // listProperties calls checkRead(); - SecuredStatementIterator iter = listProperties(); - try { - SortedSet<Statement> result = new TreeSet<Statement>( new ContainerComparator() ); - while (iter.hasNext()) { - Statement stmt = iter.next(); - if (stmt.getPredicate().getOrdinal() > 0) - { - result.add( stmt ); - } - } - return new SecuredNodeIterator<RDFNode>(getModel(), new StatementRemovingIterator(result.iterator()).mapWith( new NodeMap() ) ); - } - finally { - iter.close(); - } - } - - @Override - public SecuredNodeIterator<RDFNode> iterator( final Set<Action> perms ) - { - checkRead(); - final Set<Action> permsCopy = new HashSet<Action>(perms); - permsCopy.add(Action.Read); - final ExtendedIterator<RDFNode> ni = getStatementIterator(perms) - .mapWith(new Map1<Statement, RDFNode>() { - - @Override - public RDFNode map1( final Statement o ) - { - return o.getObject(); - } - }); - return new SecuredNodeIterator<RDFNode>(getModel(), ni); - - } - - @Override - public SecuredContainer remove( final Statement s ) - { - checkUpdate(); - checkDelete(s.asTriple()); - holder.getBaseItem().remove(s); - return holder.getSecuredItem(); - } - - @Override - public int size() - { - checkRead(); - return holder.getBaseItem().size(); - } - /* - * private synchronized void resetIndexes() - * { - * indexes.clear(); - * } - */ - /* - /** - * find the position of i in the array - * - * @param i - * @return the position or x<0 if not found. - */ - /* - * protected int mapValue( int i ) - * { - * rebuildIndex(); - * return Collections.binarySearch( indexes, i ); - * } - * - * // return the value at position i - * protected int unmapValue( int i ) - * { - * return indexes.get(i); - * } - * - * - * private synchronized void rebuildIndex() - * { - * if (indexes.isEmpty()) - * { - * ExtendedIterator<Statement> iter = getStatementIterator( Action.Read ); - * try { - * while (iter.hasNext()) - * { - * indexes.add( getIndex( iter.next().getPredicate() ) ); - * } - * } - * finally { - * iter.close(); - * } - * Collections.sort(indexes); - * } - * } - * - * private class ChangeListener implements ModelChangedListener - * { - * - * private void checkStatement( Statement s ) - * { - * if (indexes != null && s.getSubject().equals( holder.getBaseItem())) - * { - * resetIndexes(); - * } - * } - * - * private void checkStatements( Iterator<Statement> iter ) - * { - * while( indexes != null && iter.hasNext()) - * { - * checkStatement( iter.next() ); - * } - * } - * - * @Override - * public void addedStatement( Statement s ) - * { - * checkStatement( s ); - * } - * - * @Override - * public void addedStatements( Statement[] statements ) - * { - * checkStatements( Arrays.asList(statements).iterator() ); - * } - * - * @Override - * public void addedStatements( List<Statement> statements ) - * { - * checkStatements( statements.iterator() ); - * } - * - * @Override - * public void addedStatements( StmtIterator statements ) - * { - * try { - * checkStatements( statements ); - * } - * finally { - * statements.close(); - * } - * } - * - * @Override - * public void addedStatements( Model baseModel ) - * { - * addedStatements( baseModel.listStatements() ); - * } - * - * @Override - * public void removedStatement( Statement s ) - * { - * checkStatement( s ); - * } - * - * @Override - * public void removedStatements( Statement[] statements ) - * { - * checkStatements( Arrays.asList(statements).iterator() ); - * } - * - * @Override - * public void removedStatements( List<Statement> statements ) - * { - * checkStatements( statements.iterator() ); - * } - * - * @Override - * public void removedStatements( StmtIterator statements ) - * { - * try { - * checkStatements( statements ); - * } - * finally { - * statements.close(); - * } - * } - * - * @Override - * public void removedStatements( Model baseModel ) - * { - * removedStatements( baseModel.listStatements() ); - * } - * - * @Override - * public void notifyEvent( Model baseModel, Object event ) - * { - * // do nothing - * } - * - * } - */ - - static class NodeMap implements Map1<Statement,RDFNode> - { - - @Override - public RDFNode map1( Statement o ) - { - return o.getObject(); - } - - } - - static class ContainerComparator implements Comparator<Statement> - { - - @Override - public int compare( Statement arg0, Statement arg1 ) - { - return Integer.valueOf(arg0.getPredicate().getOrdinal()).compareTo( arg1.getPredicate().getOrdinal()); - } - - } - - static class StatementRemovingIterator extends WrappedIterator<Statement> - { - private Statement stmt; - - public StatementRemovingIterator( Iterator<? extends Statement> base ) - { - super(base); - } - - @Override - public Statement next() - { - stmt = super.next(); - return stmt; - } - - @Override - public void remove() - { - stmt.remove(); - super.remove(); - } - - - } -} http://git-wip-us.apache.org/repos/asf/jena/blob/c4b0113d/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredLiteralImpl.java ---------------------------------------------------------------------- diff --git a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredLiteralImpl.java b/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredLiteralImpl.java deleted file mode 100644 index 9d78388..0000000 --- a/jena-permissions/src/main/java/org/apache/jena/security/model/impl/SecuredLiteralImpl.java +++ /dev/null @@ -1,277 +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.datatypes.RDFDatatype ; -import org.apache.jena.graph.Node ; -import org.apache.jena.rdf.model.Literal ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.RDFVisitor ; -import org.apache.jena.rdf.model.ResourceRequiredException ; -import org.apache.jena.security.impl.ItemHolder; -import org.apache.jena.security.impl.SecuredItemInvoker; -import org.apache.jena.security.model.SecuredLiteral; -import org.apache.jena.security.model.SecuredModel; -import org.apache.jena.security.model.SecuredResource; - -/** - * Implementation of SecuredLiteral to be used by a SecuredItemInvoker proxy. - */ -public class SecuredLiteralImpl extends SecuredRDFNodeImpl implements - SecuredLiteral -{ - /** - * Get an instance of SecuredLiteral - * - * @param securedModel - * the item providing the security context. - * @param literal - * the literal to secure - * @return SecuredLiteral - */ - public static SecuredLiteral getInstance( final SecuredModel securedModel, - final Literal literal ) - { - if (securedModel == null) - { - throw new IllegalArgumentException( - "Secured securedModel may not be null"); - } - if (literal == null) - { - throw new IllegalArgumentException("literal may not be null"); - } - - // check that literal has a securedModel. - Literal goodLiteral = literal; - if (goodLiteral.getModel() == null) - { - goodLiteral = securedModel.createTypedLiteral( - literal.getLexicalForm(), literal.getDatatype()); - } - - final ItemHolder<Literal, SecuredLiteral> holder = new ItemHolder<Literal, SecuredLiteral>( - goodLiteral); - final SecuredLiteralImpl checker = new SecuredLiteralImpl(securedModel, - holder); - // if we are going to create a duplicate proxy, just return this - // one. - if (goodLiteral instanceof SecuredLiteral) - { - if (checker.isEquivalent((SecuredLiteral) goodLiteral)) - { - return (SecuredLiteral) goodLiteral; - } - } - return holder.setSecuredItem(new SecuredItemInvoker(literal.getClass(), - checker)); - } - - // the item holder that contains this SecuredLiteral - private final ItemHolder<? extends Literal, ? extends SecuredLiteral> 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 SecuredLiteral. - */ - - private SecuredLiteralImpl( final SecuredModel securedModel, - final ItemHolder<? extends Literal, ? extends SecuredLiteral> holder ) - { - super(securedModel, holder); - this.holder = holder; - } - - @Override - public SecuredLiteral asLiteral() - { - return holder.getSecuredItem(); - } - - @Override - public SecuredResource asResource() - { - if (canRead()) - { - throw new ResourceRequiredException(asNode()); - } - else - { - throw new ResourceRequiredException( - Node.createLiteral("Can not read")); - } - } - - @Override - public boolean getBoolean() - { - checkRead(); - return holder.getBaseItem().getBoolean(); - } - - @Override - public byte getByte() - { - checkRead(); - return holder.getBaseItem().getByte(); - } - - @Override - public char getChar() - { - checkRead(); - return holder.getBaseItem().getChar(); - } - - /** - * Return the datatype of the literal. This will be null in the - * case of plain literals. - */ - @Override - public RDFDatatype getDatatype() - { - checkRead(); - return holder.getBaseItem().getDatatype(); - } - - /** - * Return the uri of the datatype of the literal. This will be null in the - * case of plain literals. - */ - @Override - public String getDatatypeURI() - { - checkRead(); - return holder.getBaseItem().getDatatypeURI(); - } - - @Override - public double getDouble() - { - checkRead(); - return holder.getBaseItem().getDouble(); - } - - @Override - public float getFloat() - { - checkRead(); - return holder.getBaseItem().getFloat(); - } - - @Override - public int getInt() - { - checkRead(); - return holder.getBaseItem().getInt(); - } - - @Override - public String getLanguage() - { - checkRead(); - return holder.getBaseItem().getLanguage(); - } - - /** - * Return the lexical form of the literal. - */ - @Override - public String getLexicalForm() - { - checkRead(); - return holder.getBaseItem().getLexicalForm(); - } - - @Override - public long getLong() - { - checkRead(); - return holder.getBaseItem().getLong(); - } - - @Override - public short getShort() - { - checkRead(); - return holder.getBaseItem().getShort(); - } - - @Override - public String getString() - { - checkRead(); - return holder.getBaseItem().getString(); - } - - /** - * Return the value of the literal. In the case of plain literals - * this will return the literal string. In the case of typed literals - * it will return a java object representing the value. In the case - * of typed literals representing a java primitive then the appropriate - * java wrapper class (Integer etc) will be returned. - */ - @Override - public Object getValue() - { - checkRead(); - return holder.getBaseItem().getValue(); - } - - @Override - public Literal inModel( final Model m ) - { - checkRead(); - return m.createTypedLiteral(holder.getBaseItem().getLexicalForm(), - holder.getBaseItem().getDatatype()); - } - - @Override - public boolean isWellFormedXML() - { - checkRead(); - return holder.getBaseItem().isWellFormedXML(); - } - - /** - * Test that two literals are semantically equivalent. - * In some cases this may be the sames as equals, in others - * equals is stricter. For example, two xsd:int literals with - * the same value but different language tag are semantically - * equivalent but distinguished by the java equality function - * in order to support round tripping. - */ - @Override - public boolean sameValueAs( final Literal other ) - { - checkRead(); - return holder.getBaseItem().sameValueAs(other); - } - - @Override - public Object visitWith( final RDFVisitor rv ) - { - return rv.visitLiteral(this); - } -}
