This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit 169ccfb9fcdfe5082c9f28051bf0db39c0dce65b Author: Andy Seaborne <[email protected]> AuthorDate: Wed May 14 20:12:22 2025 +0100 Deprecate for removal: CollectionGraph --- .../src/main/java/org/apache/jena/graph/Graph.java | 14 +++-- .../apache/jena/graph/impl/CollectionGraph.java | 4 +- .../apache/jena/graph/impl/CollectionGraph_CS.java | 67 ++++++++++++++++++++++ .../graph/SecuredGraphEventManager.java | 20 +++---- .../permissions/model/impl/SecuredModelImpl.java | 8 +-- 5 files changed, 90 insertions(+), 23 deletions(-) diff --git a/jena-core/src/main/java/org/apache/jena/graph/Graph.java b/jena-core/src/main/java/org/apache/jena/graph/Graph.java index bb6c43ae68..6685077f1c 100644 --- a/jena-core/src/main/java/org/apache/jena/graph/Graph.java +++ b/jena-core/src/main/java/org/apache/jena/graph/Graph.java @@ -52,9 +52,12 @@ public interface Graph { /** An immutable empty graph. */ - public static final Graph emptyGraph = new GraphBase() - { @Override - public ExtendedIterator<Triple> graphBaseFind( Triple tm ) { return NullIterator.instance(); } }; + public static final Graph emptyGraph = new GraphBase() { + @Override + public ExtendedIterator<Triple> graphBaseFind(Triple tm) { + return NullIterator.instance(); + } + }; /** true if this graph's content depends on the other graph. May be @@ -69,13 +72,14 @@ public interface Graph { /** returns this Graph's transaction handler */ TransactionHandler getTransactionHandler(); - /** * returns this Graph's capabilities * @deprecated To be removed. */ @Deprecated(forRemoval = true) - default Capabilities getCapabilities() { return AllCapabilities.updateAllowed; } + default Capabilities getCapabilities() { + return AllCapabilities.updateAllowed; + } /** Answer this Graph's event manager. diff --git a/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java b/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java index 332eed695f..74288a4a2c 100644 --- a/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java +++ b/jena-core/src/main/java/org/apache/jena/graph/impl/CollectionGraph.java @@ -37,10 +37,10 @@ import org.apache.jena.util.iterator.ExtendedIterator ; * <ul> * <li> * Does not support deleting triples from the iterator - * </li><li> - * Does not handle literal typing * </li></ul> + * @deprecated To be removed. */ +@Deprecated(forRemoval = true) public class CollectionGraph extends GraphBase { static boolean tripleContained(Triple patternTriple, Triple dataTriple) { diff --git a/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java b/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java new file mode 100644 index 0000000000..f9e123c358 --- /dev/null +++ b/jena-core/src/test/java/org/apache/jena/graph/impl/CollectionGraph_CS.java @@ -0,0 +1,67 @@ +/* + * 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.graph.impl; + +import static org.apache.jena.testing_framework.GraphHelper.memGraph; + +import java.util.HashSet; + +import org.apache.jena.graph.Graph ; +import org.apache.jena.graph.Triple ; +import org.apache.jena.testing_framework.AbstractGraphProducer; +import org.junit.runner.RunWith; +import org.xenei.junit.contract.Contract; +import org.xenei.junit.contract.ContractImpl; +import org.xenei.junit.contract.ContractSuite; +import org.xenei.junit.contract.IProducer; + +@SuppressWarnings("removal") +@RunWith(ContractSuite.class) +@ContractImpl(CollectionGraph.class) +public class CollectionGraph_CS { + + protected IProducer<CollectionGraph> graphProducer; + + public CollectionGraph_CS() { + graphProducer = new AbstractGraphProducer<CollectionGraph>() { + + @Override + protected CollectionGraph createNewGraph() { + return new CollectionGraph( new HashSet<Triple>() ); + } + + @Override + public Graph[] getDependsOn(Graph d) { + return null; + } + + @Override + public Graph[] getNotDependsOn(Graph g) { + return new Graph[] { memGraph() }; + } + + }; + } + + @Contract.Inject + public final IProducer<CollectionGraph> getCollectionTestProducer() { + return graphProducer; + } + +} diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java index c022b867d1..e23deba3ef 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/graph/SecuredGraphEventManager.java @@ -19,11 +19,7 @@ package org.apache.jena.permissions.graph; import java.util.*; -import org.apache.jena.graph.Graph; -import org.apache.jena.graph.GraphEventManager; -import org.apache.jena.graph.GraphListener; -import org.apache.jena.graph.Triple; -import org.apache.jena.graph.impl.CollectionGraph; +import org.apache.jena.graph.*; import org.apache.jena.permissions.SecurityEvaluator; import org.apache.jena.permissions.SecurityEvaluator.Action; import org.apache.jena.permissions.impl.CachedSecurityEvaluator; @@ -89,13 +85,14 @@ public class SecuredGraphEventManager implements GraphEventManager { if (evaluator.evaluateAny(runAs, SecuredGraphEventManager.ADD, sg.getModelNode())) { if (!evaluator.evaluateAny(runAs, SecuredGraphEventManager.ADD, sg.getModelNode(), Triple.ANY)) { final List<Triple> lst = added.find(Triple.ANY).toList(); - addGraph = new CollectionGraph(Arrays.asList( - getArray(g, lst.toArray(new Triple[lst.size()]), SecuredGraphEventManager.ADD))); + addGraph = GraphMemFactory.createDefaultGraph(); + List<Triple> triples = Arrays.asList(getArray(g, lst.toArray(new Triple[lst.size()]), SecuredGraphEventManager.ADD)); + GraphUtil.add(addGraph, triples); } else { addGraph = added; } } else { - addGraph = new CollectionGraph(Collections.<Triple>emptyList()); + addGraph = GraphMemFactory.createDefaultGraph(); } } if (addGraph.size() > 0) { @@ -198,10 +195,11 @@ public class SecuredGraphEventManager implements GraphEventManager { if (evaluator.evaluateAny(runAs, SecuredGraphEventManager.DELETE, sg.getModelNode())) { Graph g2 = removed; if (!evaluator.evaluateAny(runAs, SecuredGraphEventManager.DELETE, sg.getModelNode(), Triple.ANY)) { - g2 = new CollectionGraph(removed.find(Triple.ANY) + g2 = GraphMemFactory.createDefaultGraph(); + List<Triple> triples = removed.find(Triple.ANY) .filterKeep(new PermTripleFilter(SecuredGraphEventManager.DELETE, sg, evaluator)) - .toList()); - + .toList(); + GraphUtil.add(g2, triples); } wrapped.notifyDeleteGraph(g, g2); } else { diff --git a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java index c491e125cd..e47b818f1a 100644 --- a/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java +++ b/jena-permissions/src/main/java/org/apache/jena/permissions/model/impl/SecuredModelImpl.java @@ -35,10 +35,7 @@ import java.util.function.Predicate; import java.util.function.Supplier; 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.graph.*; import org.apache.jena.permissions.SecuredItem; import org.apache.jena.permissions.SecurityEvaluator; import org.apache.jena.permissions.graph.SecuredGraph; @@ -2810,7 +2807,8 @@ public class SecuredModelImpl extends SecuredItemImpl implements SecuredModel { checkDelete(s); lst.add(s.asTriple()); } - final Model m = ModelFactory.createModelForGraph(new CollectionGraph(lst)); + Graph g = GraphMemFactory.createDefaultGraph(); + Model m = ModelFactory.createModelForGraph(g); holder.getBaseItem().remove(m.listStatements()); } finally { iter.close();
