Revise preconditions in the newly introduced classes.
Change-Id: I044a537398f4b6d3064e3f13ee74b4a782e197bc
diff --git a/user/super/com/google/gwt/emul/java/lang/String.java b/user/super/com/google/gwt/emul/java/lang/String.java
index 5e106c2..18e1a5b 100644
--- a/user/super/com/google/gwt/emul/java/lang/String.java
+++ b/user/super/com/google/gwt/emul/java/lang/String.java
@@ -16,7 +16,6 @@
package java.lang;
-import static javaemul.internal.InternalPreconditions.checkNotNull;
import static javaemul.internal.InternalPreconditions.checkStringBounds;
import java.io.Serializable;
@@ -113,8 +112,6 @@
}
public static String join(CharSequence delimiter, CharSequence... elements) {
- checkNotNull(delimiter, "delimiter");
- checkNotNull(elements, "elements");
StringJoiner joiner = new StringJoiner(delimiter);
for (CharSequence e : elements) {
joiner.add(e);
@@ -123,8 +120,6 @@
}
public static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements) {
- checkNotNull(delimiter, "delimiter");
- checkNotNull(elements, "elements");
StringJoiner joiner = new StringJoiner(delimiter);
for (CharSequence e : elements) {
joiner.add(e);
diff --git a/user/super/com/google/gwt/emul/java/util/Comparator.java b/user/super/com/google/gwt/emul/java/util/Comparator.java
index e0a9813..9b8235d 100644
--- a/user/super/com/google/gwt/emul/java/util/Comparator.java
+++ b/user/super/com/google/gwt/emul/java/util/Comparator.java
@@ -15,7 +15,7 @@
*/
package java.util;
-import static javaemul.internal.InternalPreconditions.checkCriticalNotNull;
+import static javaemul.internal.InternalPreconditions.checkNotNull;
import java.io.Serializable;
import java.util.function.Function;
@@ -43,7 +43,7 @@
}
default Comparator<T> thenComparing(Comparator<? super T> other) {
- checkCriticalNotNull(other);
+ checkNotNull(other);
return (Comparator<T> & Serializable) (a, b) -> {
int c = compare(a, b);
return (c != 0) ? c : other.compare(a, b);
@@ -74,8 +74,8 @@
static <T, U> Comparator<T> comparing(Function<? super T, ? extends U> keyExtractor,
Comparator<? super U> keyComparator) {
- checkCriticalNotNull(keyExtractor);
- checkCriticalNotNull(keyComparator);
+ checkNotNull(keyExtractor);
+ checkNotNull(keyComparator);
return (Comparator<T> & Serializable) (a, b) ->
keyComparator.compare(keyExtractor.apply(a), keyExtractor.apply(b));
}
@@ -86,19 +86,19 @@
}
static<T> Comparator<T> comparingDouble(ToDoubleFunction<? super T> keyExtractor) {
- checkCriticalNotNull(keyExtractor);
+ checkNotNull(keyExtractor);
return (Comparator<T> & Serializable) (a, b) ->
Double.compare(keyExtractor.applyAsDouble(a), keyExtractor.applyAsDouble(b));
}
static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor) {
- checkCriticalNotNull(keyExtractor);
+ checkNotNull(keyExtractor);
return (Comparator<T> & Serializable) (a, b) ->
Integer.compare(keyExtractor.applyAsInt(a), keyExtractor.applyAsInt(b));
}
static <T> Comparator<T> comparingLong(ToLongFunction<? super T> keyExtractor) {
- checkCriticalNotNull(keyExtractor);
+ checkNotNull(keyExtractor);
return (Comparator<T> & Serializable) (a, b) ->
Long.compare(keyExtractor.applyAsLong(a), keyExtractor.applyAsLong(b));
}
diff --git a/user/super/com/google/gwt/emul/java/util/Map.java b/user/super/com/google/gwt/emul/java/util/Map.java
index c5cccd2..41e6449 100644
--- a/user/super/com/google/gwt/emul/java/util/Map.java
+++ b/user/super/com/google/gwt/emul/java/util/Map.java
@@ -15,7 +15,6 @@
*/
package java.util;
-import static javaemul.internal.InternalPreconditions.checkCriticalNotNull;
import static javaemul.internal.InternalPreconditions.checkNotNull;
import java.io.Serializable;
@@ -52,7 +51,7 @@
}
static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp) {
- checkCriticalNotNull(cmp);
+ checkNotNull(cmp);
return (Comparator<Map.Entry<K, V>> & Serializable)
(a, b) -> cmp.compare(a.getKey(), b.getKey());
}
@@ -62,7 +61,7 @@
}
static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp) {
- checkCriticalNotNull(cmp);
+ checkNotNull(cmp);
return (Comparator<Map.Entry<K, V>> & Serializable)
(a, b) -> cmp.compare(a.getValue(), b.getValue());
}
diff --git a/user/super/com/google/gwt/emul/java/util/Optional.java b/user/super/com/google/gwt/emul/java/util/Optional.java
index 51b5f15..8dc4a8f 100644
--- a/user/super/com/google/gwt/emul/java/util/Optional.java
+++ b/user/super/com/google/gwt/emul/java/util/Optional.java
@@ -22,6 +22,7 @@
import static javaemul.internal.InternalPreconditions.checkCriticalElement;
import static javaemul.internal.InternalPreconditions.checkCriticalNotNull;
+import static javaemul.internal.InternalPreconditions.checkNotNull;
/**
* See <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html">
@@ -37,23 +38,19 @@
}
public static <T> Optional<T> of(T value) {
- return new Optional<>(value);
+ return new Optional<>(checkCriticalNotNull(value));
}
public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value);
}
- private static final Optional<?> EMPTY = new Optional<>();
+ private static final Optional<?> EMPTY = new Optional<>(null);
private final T ref;
- private Optional() {
- ref = null;
- }
-
private Optional(T ref) {
- this.ref = checkCriticalNotNull(ref);
+ this.ref = ref;
}
public boolean isPresent() {
@@ -72,7 +69,7 @@
}
public Optional<T> filter(Predicate<? super T> predicate) {
- checkCriticalNotNull(predicate);
+ checkNotNull(predicate);
if (!isPresent() || predicate.test(ref)) {
return this;
}
@@ -80,7 +77,7 @@
}
public <U> Optional<U> map(Function<? super T, ? extends U> mapper) {
- checkCriticalNotNull(mapper);
+ checkNotNull(mapper);
if (isPresent()) {
return ofNullable(mapper.apply(ref));
}
@@ -88,9 +85,9 @@
}
public <U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper) {
- checkCriticalNotNull(mapper);
+ checkNotNull(mapper);
if (isPresent()) {
- return checkCriticalNotNull(mapper.apply(ref));
+ return checkNotNull(mapper.apply(ref));
}
return empty();
}
diff --git a/user/super/com/google/gwt/emul/java/util/PrimitiveIterator.java b/user/super/com/google/gwt/emul/java/util/PrimitiveIterator.java
index a08b931..e80f586 100644
--- a/user/super/com/google/gwt/emul/java/util/PrimitiveIterator.java
+++ b/user/super/com/google/gwt/emul/java/util/PrimitiveIterator.java
@@ -15,7 +15,6 @@
*/
package java.util;
-import static javaemul.internal.InternalPreconditions.checkCriticalNotNull;
import static javaemul.internal.InternalPreconditions.checkNotNull;
import java.util.function.Consumer;
@@ -59,7 +58,6 @@
if (consumer instanceof DoubleConsumer) {
forEachRemaining((DoubleConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
forEachRemaining((DoubleConsumer) consumer::accept);
}
}
@@ -90,7 +88,6 @@
if (consumer instanceof IntConsumer) {
forEachRemaining((IntConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
forEachRemaining((IntConsumer) consumer::accept);
}
}
@@ -121,7 +118,6 @@
if (consumer instanceof LongConsumer) {
forEachRemaining((LongConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
forEachRemaining((LongConsumer) consumer::accept);
}
}
diff --git a/user/super/com/google/gwt/emul/java/util/Spliterator.java b/user/super/com/google/gwt/emul/java/util/Spliterator.java
index 365efd2..96abc22 100644
--- a/user/super/com/google/gwt/emul/java/util/Spliterator.java
+++ b/user/super/com/google/gwt/emul/java/util/Spliterator.java
@@ -15,9 +15,6 @@
*/
package java.util;
-import static javaemul.internal.InternalPreconditions.checkCriticalNotNull;
-import static javaemul.internal.InternalPreconditions.checkNotNull;
-
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.function.IntConsumer;
@@ -52,7 +49,6 @@
long estimateSize();
default void forEachRemaining(Consumer<? super T> consumer) {
- checkNotNull(consumer);
while (tryAdvance(consumer)) { }
}
@@ -88,7 +84,6 @@
S trySplit();
default void forEachRemaining(C consumer) {
- checkNotNull(consumer);
while (tryAdvance(consumer)) { }
}
}
@@ -103,7 +98,6 @@
if (consumer instanceof DoubleConsumer) {
return tryAdvance((DoubleConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
return tryAdvance((DoubleConsumer) consumer::accept);
}
}
@@ -113,7 +107,6 @@
if (consumer instanceof DoubleConsumer) {
forEachRemaining((DoubleConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
forEachRemaining((DoubleConsumer) consumer::accept);
}
}
@@ -129,7 +122,6 @@
if (consumer instanceof IntConsumer) {
return tryAdvance((IntConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
return tryAdvance((IntConsumer) consumer::accept);
}
}
@@ -139,7 +131,6 @@
if (consumer instanceof IntConsumer) {
forEachRemaining((IntConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
forEachRemaining((IntConsumer) consumer::accept);
}
}
@@ -155,7 +146,6 @@
if (consumer instanceof LongConsumer) {
return tryAdvance((LongConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
return tryAdvance((LongConsumer) consumer::accept);
}
}
@@ -165,7 +155,6 @@
if (consumer instanceof LongConsumer) {
forEachRemaining((LongConsumer) consumer);
} else {
- checkCriticalNotNull(consumer);
forEachRemaining((LongConsumer) consumer::accept);
}
}
diff --git a/user/super/com/google/gwt/emul/java/util/Spliterators.java b/user/super/com/google/gwt/emul/java/util/Spliterators.java
index 7e44465..f14bad7 100644
--- a/user/super/com/google/gwt/emul/java/util/Spliterators.java
+++ b/user/super/com/google/gwt/emul/java/util/Spliterators.java
@@ -15,8 +15,8 @@
*/
package java.util;
+import static javaemul.internal.InternalPreconditions.checkCriticalArrayBounds;
import static javaemul.internal.InternalPreconditions.checkCriticalElement;
-import static javaemul.internal.InternalPreconditions.checkCriticalPositionIndexes;
import static javaemul.internal.InternalPreconditions.checkCriticalState;
import static javaemul.internal.InternalPreconditions.checkNotNull;
@@ -586,7 +586,7 @@
private final int characteristics;
BaseArraySpliterator(int from, int limit, int size, int characteristics) {
- checkCriticalPositionIndexes(from, limit, size);
+ checkCriticalArrayBounds(from, limit, size);
this.index = from;
this.limit = limit;
this.characteristics = sizeKnownSpliteratorCharacteristics(characteristics);
diff --git a/user/super/com/google/gwt/emul/java/util/StringJoiner.java b/user/super/com/google/gwt/emul/java/util/StringJoiner.java
index 8aba2fa..6f26084 100644
--- a/user/super/com/google/gwt/emul/java/util/StringJoiner.java
+++ b/user/super/com/google/gwt/emul/java/util/StringJoiner.java
@@ -15,8 +15,6 @@
*/
package java.util;
-import static javaemul.internal.InternalPreconditions.checkNotNull;
-
/**
* See <a href="https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html">
* the official Java API doc</a> for details.
@@ -35,9 +33,6 @@
}
public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) {
- checkNotNull(delimiter, "delimiter");
- checkNotNull(prefix, "prefix");
- checkNotNull(suffix, "suffix");
this.delimiter = delimiter.toString();
this.prefix = prefix.toString();
this.suffix = suffix.toString();
@@ -69,7 +64,6 @@
}
public StringJoiner setEmptyValue(CharSequence emptyValue) {
- checkNotNull(emptyValue);
this.emptyValue = emptyValue.toString();
return this;
}
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java b/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java
index 6321623..56812ce 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java
@@ -444,6 +444,23 @@
/**
* Checks that bounds are correct.
*
+ * @throws ArrayIndexOutOfBoundsException if the range is not legal
+ */
+ public static void checkCriticalArrayBounds(int start, int end, int length) {
+ if (start < 0) {
+ throw new ArrayIndexOutOfBoundsException("fromIndex: " + start + " < 0");
+ }
+ if (end > length) {
+ throw new ArrayIndexOutOfBoundsException("toIndex: " + end + " > length " + length);
+ }
+ if (start > end) {
+ throw new IllegalArgumentException("fromIndex: " + start + " > toIndex: " + end);
+ }
+ }
+
+ /**
+ * Checks that bounds are correct.
+ *
* @throws StringIndexOutOfBoundsException if the range is not legal
*/
public static void checkStringBounds(int start, int end, int size) {