You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2025/05/29 11:55:44 UTC
(jena) 06/08: Add BufferingCtl.reset
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 aefa099b0c91afbda29b83a91b28362d3c009b00
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Thu May 22 13:05:18 2025 +0100
Add BufferingCtl.reset
---
.../apache/jena/system/buffering/BufferingCtl.java | 8 ++++++++
.../system/buffering/BufferingDatasetGraph.java | 19 +++++++++++++++----
.../jena/system/buffering/BufferingGraph.java | 21 ++++++++++++++++-----
.../jena/system/buffering/BufferingPrefixMap.java | 5 ++++-
.../system/buffering/BufferingPrefixMapping.java | 4 ++++
.../system/buffering/TestBufferingDatasetGraph.java | 9 ++++++++-
.../jena/system/buffering/TestBufferingGraph.java | 10 ++++++++++
7 files changed, 65 insertions(+), 11 deletions(-)
diff --git a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingCtl.java b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingCtl.java
index c217475dde..8c61ea154b 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingCtl.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingCtl.java
@@ -19,5 +19,13 @@
package org.apache.jena.system.buffering;
public interface BufferingCtl {
+ /**
+ * Push the buffered changes into the base object
+ */
public void flush() ;
+
+ /**
+ * Remove any changes that are buffered.
+ */
+ public void reset() ;
}
diff --git a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingDatasetGraph.java b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingDatasetGraph.java
index 5c75d32456..d6d4c870de 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingDatasetGraph.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingDatasetGraph.java
@@ -165,6 +165,19 @@ public class BufferingDatasetGraph extends DatasetGraphTriplesQuads implements D
accessState = AccessState.NONE;
}
+ @Override
+ public void reset() {
+ resetBuffered();
+ prefixes.reset();
+ }
+
+ private void resetBuffered() {
+ addedTriples.clear();
+ deletedTriples.clear();
+ addedQuads.clear();
+ deletedQuads.clear();
+ }
+
/**
* Send the changes to the underlying store, drop the buffered changes that have
* been flushed, but do not end the buffering session.
@@ -178,10 +191,8 @@ public class BufferingDatasetGraph extends DatasetGraphTriplesQuads implements D
addedQuads.forEach(baseDSG::add);
deletedQuads.forEach(baseDSG::delete);
- addedTriples.clear();
- deletedTriples.clear();
- addedQuads.clear();
- deletedQuads.clear();
+ resetBuffered();
+
prefixes.flush();
writeTxnCount = 0;
});
diff --git a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java
index b5d35979c1..96731d16e5 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingGraph.java
@@ -84,17 +84,28 @@ public class BufferingGraph extends GraphWrapper implements BufferingCtl {
private void flushDirect(Graph base) {
deletedTriples.forEach(base::delete);
addedGraph.find().forEachRemaining(base::add);
- deletedTriples.clear();
- addedGraph.clear();
- prefixMapping.flush();
+ prefixMapping.flush(); // Does a reset().
+ resetBufferedTriples();
}
- private void updateOperation() {
+ /**
+ * Remove all recorded added and deleted triples and also reset the buffering prefixes.
+ */
+ @Override
+ public void reset() {
+ resetBufferedTriples();
+ prefixMapping.reset();
}
- private void readOperation() {
+ private void resetBufferedTriples() {
+ deletedTriples.clear();
+ addedGraph.clear();
}
+ protected void updateOperation() {}
+
+ protected void readOperation() {}
+
@Override
public void add(Triple t) {
diff --git a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
index 56af5a862b..234ee14e72 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMap.java
@@ -126,9 +126,12 @@ public class BufferingPrefixMap extends PrefixMapBase {
public void flush() {
addedMappings.forEach(base::add);
deletedMappings.forEach(base::delete);
+ reset();
+ }
+
+ public void reset() {
addedMappings.clear();
deletedMappings.clear();
-
}
public String state() {
diff --git a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMapping.java b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMapping.java
index 7f29bb13e9..31f3976689 100644
--- a/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMapping.java
+++ b/jena-arq/src/main/java/org/apache/jena/system/buffering/BufferingPrefixMapping.java
@@ -49,7 +49,11 @@ public class BufferingPrefixMapping extends PrefixMappingBase implements Bufferi
public void flush() {
deleted.forEach(prefix->other.removeNsPrefix(prefix));
other.setNsPrefixes(added);
+ reset();
+ }
+ @Override
+ public void reset() {
deleted.clear();
added.clearNsPrefixMap();
}
diff --git a/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingDatasetGraph.java b/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingDatasetGraph.java
index 37c7ab31a0..17253f6750 100644
--- a/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingDatasetGraph.java
+++ b/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingDatasetGraph.java
@@ -181,5 +181,12 @@ public class TestBufferingDatasetGraph {
});
}
-
+ @Test
+ public void buffered_5() {
+ Quad quad = SSE.parseQuad("(:g :s :p 1)");
+ buffered.add(quad);
+ assertFalse(buffered.isEmpty());
+ buffered.reset();
+ assertTrue(buffered.isEmpty());
+ }
}
diff --git a/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingGraph.java b/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingGraph.java
index 502544ccf8..61e0311b69 100644
--- a/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingGraph.java
+++ b/jena-arq/src/test/java/org/apache/jena/system/buffering/TestBufferingGraph.java
@@ -124,4 +124,14 @@ public class TestBufferingGraph {
assertTrue(graph.isEmpty());
});
}
+
+ @Test public void basic_6() {
+ BufferingGraph graph = buffered;
+ // New object, same triple.
+ Triple t = SSE.parseTriple("(:s :p 1)");
+ buffered.add(t);
+ assertFalse(buffered.isEmpty());
+ buffered.reset();
+ assertTrue(buffered.isEmpty());
+ }
}