From 899df915d9005305de854e3c2b591961a0c71e73 Mon Sep 17 00:00:00 2001 From: Matthew Khouzam Date: Sat, 15 Oct 2016 16:06:55 -0400 Subject: [PATCH] segstore: add default unhandled methods to ISegmentStore This handles common functionalities for all segment stores. This can be seen as part of the segment store contract. Anything removing items from a segment store asside from clear should throw an unsupportedOperationException. If an implementation decides to support this, that is fine, but not the expected way the object should behave. Change-Id: I9d00960ae8826cecc63092245ca7fc447a28defb Signed-off-by: Matthew Khouzam Reviewed-on: https://git.eclipse.org/r/83305 Reviewed-by: Hudson CI Reviewed-by: Genevieve Bastien Tested-by: Genevieve Bastien --- .../core/arraylist/ArrayListStore.java | 15 ------------ .../core/arraylist/LazyArrayListStore.java | 17 ------------- .../core/treemap/TreeMapStore.java | 15 ------------ .../segmentstore/core/ISegmentStore.java | 24 +++++++++++++++++++ 4 files changed, 24 insertions(+), 47 deletions(-) diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java index 60387b953b..ee130338b0 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java @@ -184,11 +184,6 @@ public class ArrayListStore<@NonNull E extends ISegment> implements ISegmentStor } } - @Override - public boolean remove(@Nullable Object o) { - throw new UnsupportedOperationException(); - } - @Override public boolean addAll(@Nullable Collection c) { if (c == null) { @@ -209,16 +204,6 @@ public class ArrayListStore<@NonNull E extends ISegment> implements ISegmentStor } } - @Override - public boolean removeAll(@Nullable Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean retainAll(@Nullable Collection c) { - throw new UnsupportedOperationException(); - } - @Override public void clear() { fLock.writeLock().lock(); diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java index a9128c7b17..d78479dc99 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java @@ -56,8 +56,6 @@ import com.google.common.collect.Ordering; */ public class LazyArrayListStore<@NonNull E extends ISegment> implements ISegmentStore { - private static final String ERROR_MESSAGE = "Cannot remove from a segment store"; //$NON-NLS-1$ - private final Comparator COMPARATOR = Ordering.from(SegmentComparators.INTERVAL_START_COMPARATOR) .compound(SegmentComparators.INTERVAL_END_COMPARATOR); @@ -234,21 +232,6 @@ public class LazyArrayListStore<@NonNull E extends ISegment> implements ISegment } } - @Override - public boolean removeAll(@Nullable Collection c) { - throw new UnsupportedOperationException(ERROR_MESSAGE); - } - - @Override - public boolean retainAll(@Nullable Collection c) { - throw new UnsupportedOperationException(ERROR_MESSAGE); - } - - @Override - public boolean remove(@Nullable Object o) { - throw new UnsupportedOperationException(ERROR_MESSAGE); - } - @Override public void clear() { fLock.lock(); diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/treemap/TreeMapStore.java b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/treemap/TreeMapStore.java index e9a0965ff1..ba987fdc21 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/treemap/TreeMapStore.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/treemap/TreeMapStore.java @@ -180,11 +180,6 @@ public class TreeMapStore<@NonNull E extends ISegment> implements ISegmentStore< } } - @Override - public boolean remove(@Nullable Object o) { - throw new UnsupportedOperationException(); - } - @Override public boolean addAll(@Nullable Collection c) { if (c == null) { @@ -205,16 +200,6 @@ public class TreeMapStore<@NonNull E extends ISegment> implements ISegmentStore< } } - @Override - public boolean removeAll(@Nullable Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean retainAll(@Nullable Collection c) { - throw new UnsupportedOperationException(); - } - @Override public void clear() { fLock.writeLock().lock(); diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/segmentstore/core/ISegmentStore.java b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/segmentstore/core/ISegmentStore.java index 132f08a9a6..c5779732bc 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/segmentstore/core/ISegmentStore.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/segmentstore/core/ISegmentStore.java @@ -22,9 +22,18 @@ import org.eclipse.jdt.annotation.NonNull; import com.google.common.collect.Lists; +import org.eclipse.jdt.annotation.Nullable; + /** * Interface for segment-storing backends. * + * Common contract (what should not be implemented) for a segment store. + *
    + *
  1. no remove
  2. + *
  3. no removeAll
  4. + *
  5. no retainall
  6. + *
+ * * @param * The type of {@link ISegment} element that will be stored in this * database. @@ -135,4 +144,19 @@ public interface ISegmentStore extends Collection { default void close(boolean deleteFiles) { } + + @Override + default boolean remove(@Nullable Object o) { + throw new UnsupportedOperationException("Segment stores does not support \"remove\""); //$NON-NLS-1$ + } + + @Override + default boolean removeAll(@Nullable Collection c) { + throw new UnsupportedOperationException("Segment stores does not support \"removeAll\""); //$NON-NLS-1$ + } + + @Override + default boolean retainAll(@Nullable Collection c) { + throw new UnsupportedOperationException("Segment stores does not support \"retainAll\""); //$NON-NLS-1$ + } } -- 2.34.1