From 35b02136204b042d112d002475e65a2d354ac4b0 Mon Sep 17 00:00:00 2001 From: Fokko Driesprong Date: Sat, 3 Aug 2019 16:58:13 +0200 Subject: [PATCH] Enable Spotbugs NP_NONNULL_RETURN_VIOLATION --- codestyle/spotbugs-exclude.xml | 1 - .../query/aggregation/TimestampAggregatorFactory.java | 1 + .../druid/query/groupby/GroupByQueryEngine.java | 1 + .../org/apache/druid/segment/AbstractSegment.java | 3 +++ .../segment/ColumnSelectorBitmapIndexSelector.java | 2 ++ .../org/apache/druid/segment/DimensionHandler.java | 3 +++ .../java/org/apache/druid/segment/IndexMerger.java | 1 + .../java/org/apache/druid/segment/MMappedIndex.java | 11 ++++------- .../druid/segment/ReferenceCountingSegment.java | 7 +++++++ .../main/java/org/apache/druid/segment/Segment.java | 1 + .../apache/druid/segment/StringDimensionIndexer.java | 1 + .../java/org/apache/druid/segment/VirtualColumns.java | 3 ++- .../druid/segment/incremental/IncrementalIndex.java | 1 + .../incremental/SpatialDimensionRowTransformer.java | 4 ++++ .../druid/segment/serde/ComplexMetricSerde.java | 1 + 15 files changed, 32 insertions(+), 9 deletions(-) diff --git a/codestyle/spotbugs-exclude.xml b/codestyle/spotbugs-exclude.xml index effec8d9d806..f4d03ae87fb2 100644 --- a/codestyle/spotbugs-exclude.xml +++ b/codestyle/spotbugs-exclude.xml @@ -60,7 +60,6 @@ - diff --git a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java index 40f9095891a1..b161f3449e34 100644 --- a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java +++ b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java @@ -249,6 +249,7 @@ public int hashCode() return result; } + @Nullable static Long convertLong(TimestampSpec timestampSpec, Object input) { if (input instanceof Number) { diff --git a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryEngine.java b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryEngine.java index 96a0b76e40ce..3a34b76c874a 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryEngine.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryEngine.java @@ -269,6 +269,7 @@ public PositionMaintainer( this.max = max - increment; // Make sure there is enough room for one more increment } + @Nullable public Integer getNext() { if (nextVal > max) { diff --git a/processing/src/main/java/org/apache/druid/segment/AbstractSegment.java b/processing/src/main/java/org/apache/druid/segment/AbstractSegment.java index 6bf1f670440f..1518c44dcf07 100644 --- a/processing/src/main/java/org/apache/druid/segment/AbstractSegment.java +++ b/processing/src/main/java/org/apache/druid/segment/AbstractSegment.java @@ -19,9 +19,12 @@ package org.apache.druid.segment; +import javax.annotation.Nullable; + public abstract class AbstractSegment implements Segment { @Override + @Nullable public T as(Class clazz) { if (clazz.equals(QueryableIndex.class)) { diff --git a/processing/src/main/java/org/apache/druid/segment/ColumnSelectorBitmapIndexSelector.java b/processing/src/main/java/org/apache/druid/segment/ColumnSelectorBitmapIndexSelector.java index b9263d197b3f..ed24737bd695 100644 --- a/processing/src/main/java/org/apache/druid/segment/ColumnSelectorBitmapIndexSelector.java +++ b/processing/src/main/java/org/apache/druid/segment/ColumnSelectorBitmapIndexSelector.java @@ -182,6 +182,7 @@ public BitmapFactory getBitmapFactory() } @Override + @Nullable public BitmapIndex getBitmapIndex(String dimension) { if (isVirtualColumn(dimension)) { @@ -204,6 +205,7 @@ public int getCardinality() } @Override + @Nullable public String getValue(int index) { return null; diff --git a/processing/src/main/java/org/apache/druid/segment/DimensionHandler.java b/processing/src/main/java/org/apache/druid/segment/DimensionHandler.java index fe4466fe4f65..e1ea3342fb49 100644 --- a/processing/src/main/java/org/apache/druid/segment/DimensionHandler.java +++ b/processing/src/main/java/org/apache/druid/segment/DimensionHandler.java @@ -25,6 +25,8 @@ import org.apache.druid.segment.selector.settable.SettableColumnValueSelector; import org.apache.druid.segment.writeout.SegmentWriteOutMedium; +import javax.annotation.Nullable; + import java.util.Comparator; /** @@ -70,6 +72,7 @@ public interface DimensionHandler * Get {@link MultiValueHandling} for the column associated with this handler. * Only string columns can have {@link MultiValueHandling} currently. */ + @Nullable default MultiValueHandling getMultivalueHandling() { return null; diff --git a/processing/src/main/java/org/apache/druid/segment/IndexMerger.java b/processing/src/main/java/org/apache/druid/segment/IndexMerger.java index ac5761849ff2..b26e9caa8495 100644 --- a/processing/src/main/java/org/apache/druid/segment/IndexMerger.java +++ b/processing/src/main/java/org/apache/druid/segment/IndexMerger.java @@ -88,6 +88,7 @@ static List getMergedDimensions(List indexes) } } + @Nullable static List getLongestSharedDimOrder(List indexes) { int maxSize = 0; diff --git a/processing/src/main/java/org/apache/druid/segment/MMappedIndex.java b/processing/src/main/java/org/apache/druid/segment/MMappedIndex.java index 7691cc70b0c3..1496842dd7c3 100644 --- a/processing/src/main/java/org/apache/druid/segment/MMappedIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/MMappedIndex.java @@ -27,6 +27,8 @@ import org.apache.druid.segment.data.VSizeColumnarMultiInts; import org.joda.time.Interval; +import javax.annotation.Nullable; + import java.util.Map; /** @@ -85,15 +87,10 @@ public Interval getDataInterval() return dataInterval; } + @Nullable public MetricHolder getMetricHolder(String metric) { - final MetricHolder retVal = metrics.get(metric); - - if (retVal == null) { - return null; - } - - return retVal; + return metrics.get(metric); } public GenericIndexed getDimValueLookup(String dimension) diff --git a/processing/src/main/java/org/apache/druid/segment/ReferenceCountingSegment.java b/processing/src/main/java/org/apache/druid/segment/ReferenceCountingSegment.java index 335cd1ea8c19..6d58b364ab46 100644 --- a/processing/src/main/java/org/apache/druid/segment/ReferenceCountingSegment.java +++ b/processing/src/main/java/org/apache/druid/segment/ReferenceCountingSegment.java @@ -25,6 +25,8 @@ import org.apache.druid.timeline.SegmentId; import org.joda.time.Interval; +import javax.annotation.Nullable; + import java.io.Closeable; import java.util.concurrent.Phaser; import java.util.concurrent.atomic.AtomicBoolean; @@ -96,6 +98,7 @@ public ReferenceCountingSegment( this.atomicUpdateGroupSize = atomicUpdateGroupSize; } + @Nullable public Segment getBaseSegment() { return !isClosed() ? baseSegment : null; @@ -112,24 +115,28 @@ public boolean isClosed() } @Override + @Nullable public SegmentId getId() { return !isClosed() ? baseSegment.getId() : null; } @Override + @Nullable public Interval getDataInterval() { return !isClosed() ? baseSegment.getDataInterval() : null; } @Override + @Nullable public QueryableIndex asQueryableIndex() { return !isClosed() ? baseSegment.asQueryableIndex() : null; } @Override + @Nullable public StorageAdapter asStorageAdapter() { return !isClosed() ? baseSegment.asStorageAdapter() : null; diff --git a/processing/src/main/java/org/apache/druid/segment/Segment.java b/processing/src/main/java/org/apache/druid/segment/Segment.java index 8da1c3a422df..8fb9b4e620dc 100644 --- a/processing/src/main/java/org/apache/druid/segment/Segment.java +++ b/processing/src/main/java/org/apache/druid/segment/Segment.java @@ -57,5 +57,6 @@ public interface Segment extends Closeable * @param desired interface * @return instance of clazz, or null if the interface is not supported by this segment */ + @Nullable T as(Class clazz); } diff --git a/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java index c4c01861948b..5bf20b9a8879 100644 --- a/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java +++ b/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java @@ -101,6 +101,7 @@ public int getId(@Nullable String value) } } + @Nullable public String getValue(int id) { lock.readLock().lock(); diff --git a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java index 4e7876b9a83b..9802aadd661b 100644 --- a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java +++ b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java @@ -173,6 +173,7 @@ public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec, Colu } } + @Nullable public BitmapIndex getBitmapIndex(String columnName, ColumnSelector columnSelector) { final VirtualColumn virtualColumn = getVirtualColumn(columnName); @@ -273,7 +274,7 @@ public byte[] getCacheKey() return new CacheKeyBuilder((byte) 0).appendCacheablesIgnoringOrder(virtualColumns).build(); } - private void detectCycles(VirtualColumn virtualColumn, Set columnNames) + private void detectCycles(VirtualColumn virtualColumn, @Nullable Set columnNames) { // Copy columnNames to avoid modifying it final Set nextSet = columnNames == null diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java index dbb6a6e759ee..7d7fcac60eba 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java @@ -726,6 +726,7 @@ IncrementalIndexRowResult toIncrementalIndexRow(InputRow row) return new IncrementalIndexRowResult(incrementalIndexRow, parseExceptionMessages); } + @Nullable public static ParseException getCombinedParseException( InputRow row, @Nullable List dimParseExceptionMessages, diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/SpatialDimensionRowTransformer.java b/processing/src/main/java/org/apache/druid/segment/incremental/SpatialDimensionRowTransformer.java index 401c498d5d49..c6b40af11e54 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/SpatialDimensionRowTransformer.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/SpatialDimensionRowTransformer.java @@ -33,6 +33,8 @@ import org.apache.druid.java.util.common.ISE; import org.joda.time.DateTime; +import javax.annotation.Nullable; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -208,6 +210,7 @@ private boolean isJoinedSpatialDimValValid(String dimVal) return true; } + @Nullable private static Float tryParseFloat(String val) { try { @@ -225,6 +228,7 @@ private static Float tryParseFloat(String val) * * @return decoded coordinate, or null if it could not be decoded */ + @Nullable public static float[] decode(final String encodedCoordinate) { if (encodedCoordinate == null) { diff --git a/processing/src/main/java/org/apache/druid/segment/serde/ComplexMetricSerde.java b/processing/src/main/java/org/apache/druid/segment/serde/ComplexMetricSerde.java index 300e3ad99f1f..ee4ddfd6de18 100644 --- a/processing/src/main/java/org/apache/druid/segment/serde/ComplexMetricSerde.java +++ b/processing/src/main/java/org/apache/druid/segment/serde/ComplexMetricSerde.java @@ -70,6 +70,7 @@ public abstract class ComplexMetricSerde * * @return A function that can compute the size of the complex object or null if you cannot/do not want to compute it */ + @Nullable public Function inputSizeFn() { return null;