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 2016/07/27 12:06:32 UTC

[03/11] jena git commit: Renamed CanAbortComparator to AbortableComparator.

Renamed CanAbortComparator to AbortableComparator.

Moved volatile boolean into AbortableComparator and give that
class a cancel method, called from SortedDataBag, and make
AbortableComparator a static class so the management of the
comparator is explicit.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/5d09cb51
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/5d09cb51
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/5d09cb51

Branch: refs/heads/master
Commit: 5d09cb51f42635989ce8ead5e032a15bcf672100
Parents: 4493dd3
Author: Chris Dollin <eh...@googlemail.com>
Authored: Tue Jul 19 12:13:03 2016 +0100
Committer: Chris Dollin <eh...@googlemail.com>
Committed: Tue Jul 19 12:13:03 2016 +0100

----------------------------------------------------------------------
 .../apache/jena/atlas/data/SortedDataBag.java   | 24 ++++++++++++++------
 1 file changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/5d09cb51/jena-arq/src/main/java/org/apache/jena/atlas/data/SortedDataBag.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/data/SortedDataBag.java b/jena-arq/src/main/java/org/apache/jena/atlas/data/SortedDataBag.java
index f01e9d6..68de3f6 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/data/SortedDataBag.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/data/SortedDataBag.java
@@ -69,21 +69,20 @@ public class SortedDataBag<E> extends AbstractDataBag<E>
     
     protected final ThresholdPolicy<E> policy;
     protected final SerializationFactory<E> serializationFactory;
-    protected final CanAbortComparator comparator;
+    protected final AbortableComparator<E> comparator;
     
     protected boolean finishedAdding = false;
     protected boolean spilled = false;
     protected boolean closed = false;
-    protected volatile boolean cancelled;
     
     public SortedDataBag(ThresholdPolicy<E> policy, SerializationFactory<E> serializerFactory, Comparator<? super E> comparator)
     {
         this.policy = policy;
         this.serializationFactory = serializerFactory;
-        this.comparator = new CanAbortComparator(comparator);
+        this.comparator = new AbortableComparator<E>(comparator);
     }
     
-    private final class CanAbortComparator implements Comparator<E> 
+    private static final class AbortableComparator<E> implements Comparator<E> 
     	{
     	/**
     	    The test for whether the sort has been cancelled is
@@ -98,9 +97,11 @@ public class SortedDataBag<E> extends AbstractDataBag<E>
     	*/
 		int count = 0;
 		
+		protected volatile boolean cancelled;
+		
 		final Comparator<? super E> baseComparator;
 		
-		public CanAbortComparator(Comparator<? super E> comparator) 
+		public AbortableComparator(Comparator<? super E> comparator) 
 		{
 			this.baseComparator = comparator;
 		}
@@ -131,11 +132,20 @@ public class SortedDataBag<E> extends AbstractDataBag<E>
 			}
 			return false;
 		}
+		
+		/**
+		    Arrange that the next on-frequency cancellation test
+		    in compare will succeed, aborting the sort. 
+		*/
+		public void cancel() 
+		{
+			cancelled = true;
+		}
 	}
 
     /**
         <code>AbandonSort</code> is the exception thrown from
-        <code>CanAbortComparator</code> to abandon a sort.
+        <code>AbortableComparator</code> to abandon a sort.
     */
 	public static class AbandonSort extends RuntimeException 
     {
@@ -148,7 +158,7 @@ public class SortedDataBag<E> extends AbstractDataBag<E>
 	*/
 	public void cancel() 
 	{
-		cancelled = true;
+		comparator.cancel();
 	}
     
     protected void checkClosed()