From 86ee2116ea56e51ab02e12e44d1c8a88d6ba8324 Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de> Date: Wed, 18 Feb 2015 16:52:14 +0100 Subject: [PATCH] declared all classes in teetime.util as final where possible --- .../java/teetime/util/CyclicListIterator.java | 9 ++++-- .../java/teetime/util/HashMapWithDefault.java | 4 +-- src/main/java/teetime/util/Pair.java | 2 +- .../classpath/CachedClassForNameResolver.java | 2 +- .../util/classpath/ClassForNameResolver.java | 2 +- .../hashmap/ConcurrentHashMapWithDefault.java | 2 +- .../util/concurrent/hashmap/ValueFactory.java | 4 +-- .../CircularWorkStealingDeque.java | 28 +++++++++---------- ...CircularWorkStealingDequeWithSentinel.java | 16 +++++------ ...kStealingDequeWithThreadLocalSentinel.java | 16 +++++------ .../ExceptionalCircularWorkStealingDeque.java | 2 +- .../UntypedCircularWorkStealingDeque.java | 16 +++++------ ...dExceptionalCircularWorkStealingDeque.java | 2 +- .../exception/DequeIsEmptyException.java | 4 +-- .../exception/OperationAbortedException.java | 4 +-- .../java/teetime/util/list/ArrayPool.java | 2 +- .../list/CommittableResizableArrayQueue.java | 2 +- .../java/teetime/util/list/ListContainer.java | 2 +- .../teetime/util/list/ListContainerPool.java | 2 +- .../util/list/ObjectPooledLinkedList.java | 4 +-- 20 files changed, 64 insertions(+), 61 deletions(-) diff --git a/src/main/java/teetime/util/CyclicListIterator.java b/src/main/java/teetime/util/CyclicListIterator.java index 9611fcb2..d4e06d27 100644 --- a/src/main/java/teetime/util/CyclicListIterator.java +++ b/src/main/java/teetime/util/CyclicListIterator.java @@ -20,12 +20,12 @@ import java.util.List; /** * This iterator infinitely iterates over a list and allows the list to be modified without throwing a <code>ConcurrentMOdificationException</code>. - * + * * @author Christian Wulf - * + * * @param <T> */ -public class CyclicListIterator<T> implements Iterator<T> { +public final class CyclicListIterator<T> implements Iterator<T> { private final List<T> list; // private Iterator<T> iterator; @@ -37,10 +37,12 @@ public class CyclicListIterator<T> implements Iterator<T> { // this.iterator = this.list.iterator(); } + @Override public boolean hasNext() { return true; } + @Override public T next() { // if (!this.iterator.hasNext()) { // this.iterator = this.list.iterator(); @@ -56,6 +58,7 @@ public class CyclicListIterator<T> implements Iterator<T> { return element; } + @Override public void remove() { // this.iterator.remove(); this.currentIndex = this.getCurrentIndex(); diff --git a/src/main/java/teetime/util/HashMapWithDefault.java b/src/main/java/teetime/util/HashMapWithDefault.java index f5797cf0..7ebf6eb5 100644 --- a/src/main/java/teetime/util/HashMapWithDefault.java +++ b/src/main/java/teetime/util/HashMapWithDefault.java @@ -21,10 +21,10 @@ import teetime.util.concurrent.hashmap.ValueFactory; /** * @author Christian Wulf - * + * * @since 1.10 */ -public class HashMapWithDefault<K, V> extends HashMap<K, V> { +public final class HashMapWithDefault<K, V> extends HashMap<K, V> { private static final long serialVersionUID = -7958038532219740472L; diff --git a/src/main/java/teetime/util/Pair.java b/src/main/java/teetime/util/Pair.java index 1d671fbf..1cffdbf1 100644 --- a/src/main/java/teetime/util/Pair.java +++ b/src/main/java/teetime/util/Pair.java @@ -15,7 +15,7 @@ */ package teetime.util; -public class Pair<F, S> { +public final class Pair<F, S> { private final F first; private final S second; diff --git a/src/main/java/teetime/util/classpath/CachedClassForNameResolver.java b/src/main/java/teetime/util/classpath/CachedClassForNameResolver.java index 13eeaa12..6e1ec99f 100644 --- a/src/main/java/teetime/util/classpath/CachedClassForNameResolver.java +++ b/src/main/java/teetime/util/classpath/CachedClassForNameResolver.java @@ -25,7 +25,7 @@ import java.util.concurrent.ConcurrentMap; * @author Christian Wulf * @since 1.11 */ -public class CachedClassForNameResolver<T> { +public final class CachedClassForNameResolver<T> { private final ConcurrentMap<String, Class<? extends T>> cachedClasses = new ConcurrentHashMap<String, Class<? extends T>>(); // NOCS private final ClassForNameResolver<T> classForNameResolver; diff --git a/src/main/java/teetime/util/classpath/ClassForNameResolver.java b/src/main/java/teetime/util/classpath/ClassForNameResolver.java index 680ea6af..d0847799 100644 --- a/src/main/java/teetime/util/classpath/ClassForNameResolver.java +++ b/src/main/java/teetime/util/classpath/ClassForNameResolver.java @@ -22,7 +22,7 @@ package teetime.util.classpath; * @author Christian Wulf * @since 1.11 */ -public class ClassForNameResolver<T> { +public final class ClassForNameResolver<T> { private final Class<T> classToCast; diff --git a/src/main/java/teetime/util/concurrent/hashmap/ConcurrentHashMapWithDefault.java b/src/main/java/teetime/util/concurrent/hashmap/ConcurrentHashMapWithDefault.java index 5c203959..6c2a283f 100644 --- a/src/main/java/teetime/util/concurrent/hashmap/ConcurrentHashMapWithDefault.java +++ b/src/main/java/teetime/util/concurrent/hashmap/ConcurrentHashMapWithDefault.java @@ -17,7 +17,7 @@ package teetime.util.concurrent.hashmap; import java.util.concurrent.ConcurrentHashMap; -public class ConcurrentHashMapWithDefault<K, V> extends ConcurrentHashMap<K, V> { +public final class ConcurrentHashMapWithDefault<K, V> extends ConcurrentHashMap<K, V> { private static final long serialVersionUID = 199185976241037967L; diff --git a/src/main/java/teetime/util/concurrent/hashmap/ValueFactory.java b/src/main/java/teetime/util/concurrent/hashmap/ValueFactory.java index e1c407c7..0d394c94 100644 --- a/src/main/java/teetime/util/concurrent/hashmap/ValueFactory.java +++ b/src/main/java/teetime/util/concurrent/hashmap/ValueFactory.java @@ -17,14 +17,14 @@ package teetime.util.concurrent.hashmap; /** * @author Christian Wulf - * + * * @since 1.10 */ public interface ValueFactory<T> { /** * Create a new instance of the type <code>T</code>. - * + * * @since 1.10 */ public T create(); diff --git a/src/main/java/teetime/util/concurrent/workstealing/CircularWorkStealingDeque.java b/src/main/java/teetime/util/concurrent/workstealing/CircularWorkStealingDeque.java index 285db51f..78b1ed47 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/CircularWorkStealingDeque.java +++ b/src/main/java/teetime/util/concurrent/workstealing/CircularWorkStealingDeque.java @@ -22,14 +22,14 @@ import teetime.util.concurrent.workstealing.exception.DequeIsEmptyException; import teetime.util.concurrent.workstealing.exception.OperationAbortedException; /** - * + * * @author Christian Wulf - * + * * @see "Dynamic Circular WorkStealing Deque" - * + * * @since 1.10 */ -public class CircularWorkStealingDeque<T> { +public final class CircularWorkStealingDeque<T> { public static final DequeIsEmptyException DEQUE_IS_EMPTY_EXCEPTION = new DequeIsEmptyException(); @@ -46,7 +46,7 @@ public class CircularWorkStealingDeque<T> { } /** - * + * * @param o * a non-<code>null</code> element */ @@ -66,7 +66,7 @@ public class CircularWorkStealingDeque<T> { } /** - * + * * @param elements * a non-<code>null</code> list */ @@ -91,7 +91,7 @@ public class CircularWorkStealingDeque<T> { /** * Returns and removes the latest element from this deque. - * + * * @return * <ul> * <li><code>null</code> if the deque contains no elements, @@ -123,9 +123,9 @@ public class CircularWorkStealingDeque<T> { /** * Returns and removes the latest element from this deque. - * + * * @return <i>the latest element</i>, otherwise it throws a <code>DequeIsEmptyException</code> - * + * * @throws DequeIsEmptyException */ public T popBottomEx() { @@ -169,7 +169,7 @@ public class CircularWorkStealingDeque<T> { /** * Tries to steal (return & remove) the oldest element from this deque. - * + * * @return * <ul> * <li><code>null</code> if the deque contains no elements, @@ -202,9 +202,9 @@ public class CircularWorkStealingDeque<T> { /** * Tries to steal (return & remove) the oldest element from this deque. - * + * * @return <i>the oldest element</i>, otherwise it throws a <code>DequeIsEmptyException</code> or a <code>OperationAbortedException</code> - * + * * @throws DequeIsEmptyException * @throws OperationAbortedException */ @@ -254,7 +254,7 @@ public class CircularWorkStealingDeque<T> { /** * Returns but does not remove the latest element from this deque.<br> * <i>For debugging purposes</i> - * + * * @return <ul> * <li><code>null</code> if the deque contains no elements, * <li><i>the latest element</i> otherwise @@ -286,7 +286,7 @@ public class CircularWorkStealingDeque<T> { /** * For debugging purposes - * + * * @return the number of elements this deque contains */ public long size(final Object sourceStage) { diff --git a/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithSentinel.java b/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithSentinel.java index 9ed956de..91554954 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithSentinel.java +++ b/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithSentinel.java @@ -20,14 +20,14 @@ import java.util.concurrent.atomic.AtomicLong; import teetime.util.concurrent.workstealing.CircularArray; /** - * + * * @author Christian Wulf - * + * * @see "Dynamic Circular WorkStealing Deque" - * + * * @since 1.10 */ -public class CircularWorkStealingDequeWithSentinel<T> { +public final class CircularWorkStealingDequeWithSentinel<T> { public static enum State { REGULAR, EMPTY, ABORT @@ -84,7 +84,7 @@ public class CircularWorkStealingDequeWithSentinel<T> { } /** - * + * * @return * <ul> * <li><code>empty()</code> if the deque contains no elements, @@ -132,7 +132,7 @@ public class CircularWorkStealingDequeWithSentinel<T> { /** * Tries to steal (return & remove) the oldest element from this deque. - * + * * @return * <ul> * <li><code>empty()</code> if the deque contains no elements, @@ -165,7 +165,7 @@ public class CircularWorkStealingDequeWithSentinel<T> { /** * For debugging purposes - * + * * @return but does not remove the bottom element from this deque */ public T readBottom() { @@ -188,7 +188,7 @@ public class CircularWorkStealingDequeWithSentinel<T> { /** * For debugging purposes - * + * * @return the number of elements this deque contains */ public long size(final Object sourceStage) { diff --git a/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithThreadLocalSentinel.java b/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithThreadLocalSentinel.java index 41c06cd1..88004d45 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithThreadLocalSentinel.java +++ b/src/main/java/teetime/util/concurrent/workstealing/alternative/CircularWorkStealingDequeWithThreadLocalSentinel.java @@ -20,14 +20,14 @@ import java.util.concurrent.atomic.AtomicLong; import teetime.util.concurrent.workstealing.CircularArray; /** - * + * * @author Christian Wulf - * + * * @see "Dynamic Circular WorkStealing Deque" - * + * * @since 1.10 */ -public class CircularWorkStealingDequeWithThreadLocalSentinel<T> { +public final class CircularWorkStealingDequeWithThreadLocalSentinel<T> { public static enum State { REGULAR, EMPTY, ABORT @@ -96,7 +96,7 @@ public class CircularWorkStealingDequeWithThreadLocalSentinel<T> { } /** - * + * * @return * <ul> * <li><code>empty()</code> if the deque contains no elements, @@ -144,7 +144,7 @@ public class CircularWorkStealingDequeWithThreadLocalSentinel<T> { /** * Tries to steal (return & remove) the oldest element from this deque. - * + * * @return * <ul> * <li><code>empty()</code> if the deque contains no elements, @@ -189,7 +189,7 @@ public class CircularWorkStealingDequeWithThreadLocalSentinel<T> { /** * For debugging purposes - * + * * @return but does not remove the bottom element from this deque */ public T readBottom() { @@ -212,7 +212,7 @@ public class CircularWorkStealingDequeWithThreadLocalSentinel<T> { /** * For debugging purposes - * + * * @return the number of elements this deque contains */ public long size(final Object sourceStage) { diff --git a/src/main/java/teetime/util/concurrent/workstealing/alternative/ExceptionalCircularWorkStealingDeque.java b/src/main/java/teetime/util/concurrent/workstealing/alternative/ExceptionalCircularWorkStealingDeque.java index 8cea8f03..934473cb 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/alternative/ExceptionalCircularWorkStealingDeque.java +++ b/src/main/java/teetime/util/concurrent/workstealing/alternative/ExceptionalCircularWorkStealingDeque.java @@ -29,7 +29,7 @@ import teetime.util.concurrent.workstealing.exception.OperationAbortedException; * * @since 1.10 */ -public class ExceptionalCircularWorkStealingDeque<T> { +public final class ExceptionalCircularWorkStealingDeque<T> { public static final DequeIsEmptyException DEQUE_IS_EMPTY_EXCEPTION = new DequeIsEmptyException(); diff --git a/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedCircularWorkStealingDeque.java b/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedCircularWorkStealingDeque.java index 654c5f3c..35aeb0b0 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedCircularWorkStealingDeque.java +++ b/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedCircularWorkStealingDeque.java @@ -20,14 +20,14 @@ import java.util.concurrent.atomic.AtomicLong; import teetime.util.concurrent.workstealing.CircularArray; /** - * + * * @author Christian Wulf - * + * * @see "Dynamic Circular WorkStealing Deque" - * + * * @since 1.10 */ -public class UntypedCircularWorkStealingDeque { +public final class UntypedCircularWorkStealingDeque { public static final Object EMPTY = new Object(); public static final Object ABORT = new Object(); @@ -64,7 +64,7 @@ public class UntypedCircularWorkStealingDeque { } /** - * + * * @return * <ul> * <li><code>EMPTY</code> if the deque contains no elements, @@ -112,7 +112,7 @@ public class UntypedCircularWorkStealingDeque { /** * Tries to steal (return & remove) the oldest element from this deque. - * + * * @return * <ul> * <li><code>EMPTY</code> if the deque contains no elements, @@ -145,7 +145,7 @@ public class UntypedCircularWorkStealingDeque { /** * For debugging purposes - * + * * @return but does not remove the bottom element from this deque */ public Object readBottom() { @@ -168,7 +168,7 @@ public class UntypedCircularWorkStealingDeque { /** * For debugging purposes - * + * * @return the number of elements this deque contains */ public long size(final Object sourceStage) { diff --git a/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedExceptionalCircularWorkStealingDeque.java b/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedExceptionalCircularWorkStealingDeque.java index d1441fc5..54b5fddb 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedExceptionalCircularWorkStealingDeque.java +++ b/src/main/java/teetime/util/concurrent/workstealing/alternative/UntypedExceptionalCircularWorkStealingDeque.java @@ -30,7 +30,7 @@ import teetime.util.concurrent.workstealing.exception.OperationAbortedException; * * @since 1.10 */ -public class UntypedExceptionalCircularWorkStealingDeque { +public final class UntypedExceptionalCircularWorkStealingDeque { public static final DequeIsEmptyException DEQUE_IS_EMPTY_EXCEPTION = new DequeIsEmptyException(); diff --git a/src/main/java/teetime/util/concurrent/workstealing/exception/DequeIsEmptyException.java b/src/main/java/teetime/util/concurrent/workstealing/exception/DequeIsEmptyException.java index f8ba9e51..a86e479f 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/exception/DequeIsEmptyException.java +++ b/src/main/java/teetime/util/concurrent/workstealing/exception/DequeIsEmptyException.java @@ -15,6 +15,6 @@ */ package teetime.util.concurrent.workstealing.exception; -public class DequeIsEmptyException extends DequePopException { +public final class DequeIsEmptyException extends DequePopException { private static final long serialVersionUID = -6685406255103741724L; -} \ No newline at end of file +} diff --git a/src/main/java/teetime/util/concurrent/workstealing/exception/OperationAbortedException.java b/src/main/java/teetime/util/concurrent/workstealing/exception/OperationAbortedException.java index 803c7f90..6a640dea 100644 --- a/src/main/java/teetime/util/concurrent/workstealing/exception/OperationAbortedException.java +++ b/src/main/java/teetime/util/concurrent/workstealing/exception/OperationAbortedException.java @@ -15,6 +15,6 @@ */ package teetime.util.concurrent.workstealing.exception; -public class OperationAbortedException extends DequePopException { +public final class OperationAbortedException extends DequePopException { private static final long serialVersionUID = 2983001853326344073L; -} \ No newline at end of file +} diff --git a/src/main/java/teetime/util/list/ArrayPool.java b/src/main/java/teetime/util/list/ArrayPool.java index de749079..8b66e68d 100644 --- a/src/main/java/teetime/util/list/ArrayPool.java +++ b/src/main/java/teetime/util/list/ArrayPool.java @@ -18,7 +18,7 @@ package teetime.util.list; import java.util.HashMap; import java.util.Map; -public class ArrayPool<T> { +public final class ArrayPool<T> { // BETTER use a map with int as key due to performance private final Map<Integer, T[]> cache = new HashMap<Integer, T[]>(); diff --git a/src/main/java/teetime/util/list/CommittableResizableArrayQueue.java b/src/main/java/teetime/util/list/CommittableResizableArrayQueue.java index f66af3d8..32c8a6f5 100644 --- a/src/main/java/teetime/util/list/CommittableResizableArrayQueue.java +++ b/src/main/java/teetime/util/list/CommittableResizableArrayQueue.java @@ -15,7 +15,7 @@ */ package teetime.util.list; -public class CommittableResizableArrayQueue<T> implements CommittableQueue<T> { +public final class CommittableResizableArrayQueue<T> implements CommittableQueue<T> { // private final int MIN_CAPACITY; diff --git a/src/main/java/teetime/util/list/ListContainer.java b/src/main/java/teetime/util/list/ListContainer.java index 8237ddd4..623a8b03 100644 --- a/src/main/java/teetime/util/list/ListContainer.java +++ b/src/main/java/teetime/util/list/ListContainer.java @@ -15,7 +15,7 @@ */ package teetime.util.list; -public class ListContainer<T> { +public final class ListContainer<T> { public T value; public ListContainer<T> previous; diff --git a/src/main/java/teetime/util/list/ListContainerPool.java b/src/main/java/teetime/util/list/ListContainerPool.java index 33e5435d..a71a767f 100644 --- a/src/main/java/teetime/util/list/ListContainerPool.java +++ b/src/main/java/teetime/util/list/ListContainerPool.java @@ -18,7 +18,7 @@ package teetime.util.list; import java.util.ArrayList; import java.util.List; -public class ListContainerPool<T> implements ObjectPool<ListContainer<T>> { +public final class ListContainerPool<T> implements ObjectPool<ListContainer<T>> { private final List<ListContainer<T>> pool = new ArrayList<ListContainer<T>>(); diff --git a/src/main/java/teetime/util/list/ObjectPooledLinkedList.java b/src/main/java/teetime/util/list/ObjectPooledLinkedList.java index 587d5e18..5b77af4a 100644 --- a/src/main/java/teetime/util/list/ObjectPooledLinkedList.java +++ b/src/main/java/teetime/util/list/ObjectPooledLinkedList.java @@ -15,7 +15,7 @@ */ package teetime.util.list; -public class ObjectPooledLinkedList<T> { +public final class ObjectPooledLinkedList<T> { private final ObjectPool<ListContainer<T>> objectPool = new ListContainerPool<T>(10); @@ -31,7 +31,7 @@ public class ObjectPooledLinkedList<T> { } /** - * + * * @return <code>null</code> if the list is empty. */ public T pop() { -- GitLab