You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/05/10 12:27:39 UTC

[commons-lang] 02/02: [LANG-1458] Add EMPTY_ARRAY constants to classes in org.apache.commons.lang3.tuple

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit 86cf126f1373c783766cd2957f536d721b68f297
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri May 10 08:27:33 2019 -0400

    [LANG-1458] Add EMPTY_ARRAY constants to classes in
    org.apache.commons.lang3.tuple
---
 src/changes/changes.xml                            |  3 ++-
 .../apache/commons/lang3/tuple/ImmutablePair.java  | 22 ++++++++++++++++++++++
 .../commons/lang3/tuple/ImmutableTriple.java       | 22 ++++++++++++++++++++++
 .../apache/commons/lang3/tuple/MutablePair.java    | 22 ++++++++++++++++++++++
 .../apache/commons/lang3/tuple/MutableTriple.java  | 22 ++++++++++++++++++++++
 .../commons/lang3/tuple/ImmutablePairTest.java     | 13 +++++++++++++
 .../commons/lang3/tuple/ImmutableTripleTest.java   | 13 +++++++++++++
 .../commons/lang3/tuple/MutablePairTest.java       | 13 +++++++++++++
 .../commons/lang3/tuple/MutableTripleTest.java     | 13 +++++++++++++
 9 files changed, 142 insertions(+), 1 deletion(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e59d33a..56f724a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -47,7 +47,8 @@ The <action> type attribute can be add,update,fix,remove.
 
   <release version="3.10" date="YYYY-MM-DD" description="TBD">
     <action issue="LANG-1450" type="fix" dev="chtompki">Generate javadoc jar on build.</action>
-    <action issue="LANG-1457" type="fix" dev="ggregory">Add ExceptionUtils.throwableOfType(Throwable, Class) and friends.</action>
+    <action issue="LANG-1457" type="add" dev="ggregory">Add ExceptionUtils.throwableOfType(Throwable, Class) and friends.</action>
+    <action issue="LANG-1458" type="add" dev="ggregory">Add EMPTY_ARRAY constants to classes in org.apache.commons.lang3.tuple.</action>
   </release>
 
   <release version="3.9" date="2019-04-09" description="New features and bug fixes. Requires Java 8, supports Java 9, 10, 11">
diff --git a/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java
index abc8c3b..c0934bf 100644
--- a/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java
+++ b/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java
@@ -34,6 +34,28 @@ package org.apache.commons.lang3.tuple;
 public final class ImmutablePair<L, R> extends Pair<L, R> {
 
     /**
+     * An empty array.
+     * <p>
+     * Consider using {@link #emptyArray()} to avoid generics warnings.
+     * </p>
+     *
+     * @since 3.10.
+     */
+    public static final ImmutablePair<?, ?>[] EMPTY_ARRAY = new ImmutablePair[0];
+
+    /**
+     * Returns the empty array singleton that can be assigned without compiler warning.
+     * 
+     * @return the empty array singleton that can be assigned without compiler warning.
+     *
+     * @since 3.10.
+     */
+    @SuppressWarnings("unchecked")
+    public static final <L, R> ImmutablePair<L, R>[] emptyArray() {
+        return (ImmutablePair<L, R>[]) EMPTY_ARRAY;
+    }
+
+    /**
      * An immutable pair of nulls.
      */
     // This is not defined with generics to avoid warnings in call sites.
diff --git a/src/main/java/org/apache/commons/lang3/tuple/ImmutableTriple.java b/src/main/java/org/apache/commons/lang3/tuple/ImmutableTriple.java
index 2d9dda6..baf4ad1 100644
--- a/src/main/java/org/apache/commons/lang3/tuple/ImmutableTriple.java
+++ b/src/main/java/org/apache/commons/lang3/tuple/ImmutableTriple.java
@@ -35,6 +35,28 @@ package org.apache.commons.lang3.tuple;
 public final class ImmutableTriple<L, M, R> extends Triple<L, M, R> {
 
     /**
+     * An empty array.
+     * <p>
+     * Consider using {@link #emptyArray()} to avoid generics warnings.
+     * </p>
+     *
+     * @since 3.10.
+     */
+    public static final ImmutableTriple<?, ?, ?>[] EMPTY_ARRAY = new ImmutableTriple[0];
+
+    /**
+     * Returns the empty array singleton that can be assigned without compiler warning.
+     * 
+     * @return the empty array singleton that can be assigned without compiler warning.
+     *
+     * @since 3.10.
+     */
+    @SuppressWarnings("unchecked")
+    public static final <L, M, R> ImmutableTriple<L, M, R>[] emptyArray() {
+        return (ImmutableTriple<L, M, R>[]) EMPTY_ARRAY;
+    }
+
+    /**
      * An immutable triple of nulls.
      */
     // This is not defined with generics to avoid warnings in call sites.
diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java
index 386988b..1779b58 100644
--- a/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java
+++ b/src/main/java/org/apache/commons/lang3/tuple/MutablePair.java
@@ -28,6 +28,28 @@ package org.apache.commons.lang3.tuple;
  */
 public class MutablePair<L, R> extends Pair<L, R> {
 
+    /**
+     * An empty array.
+     * <p>
+     * Consider using {@link #emptyArray()} to avoid generics warnings.
+     * </p>
+     *
+     * @since 3.10.
+     */
+    public static final MutablePair<?, ?>[] EMPTY_ARRAY = new MutablePair[0];
+
+    /**
+     * Returns the empty array singleton that can be assigned without compiler warning.
+     * 
+     * @return the empty array singleton that can be assigned without compiler warning.
+     *
+     * @since 3.10.
+     */
+    @SuppressWarnings("unchecked")
+    public static final <L, R> MutablePair<L, R>[] emptyArray() {
+        return (MutablePair<L, R>[]) EMPTY_ARRAY;
+    }
+
     /** Serialization version */
     private static final long serialVersionUID = 4954918890077093841L;
 
diff --git a/src/main/java/org/apache/commons/lang3/tuple/MutableTriple.java b/src/main/java/org/apache/commons/lang3/tuple/MutableTriple.java
index f5d92be..cfd8bf3 100644
--- a/src/main/java/org/apache/commons/lang3/tuple/MutableTriple.java
+++ b/src/main/java/org/apache/commons/lang3/tuple/MutableTriple.java
@@ -29,6 +29,28 @@ package org.apache.commons.lang3.tuple;
  */
 public class MutableTriple<L, M, R> extends Triple<L, M, R> {
 
+    /**
+     * The empty array singleton.
+     * <p>
+     * Consider using {@link #emptyArray()} to avoid generics warnings.
+     * </p>
+     *
+     * @since 3.10.
+     */
+    public static final MutableTriple<?, ?, ?>[] EMPTY_ARRAY = new MutableTriple[0];
+    
+    /**
+     * Returns the empty array singleton that can be assigned without compiler warning.
+     * 
+     * @return the empty array singleton that can be assigned without compiler warning.
+     *
+     * @since 3.10.
+     */
+    @SuppressWarnings("unchecked")
+    public static final <L, M, R> MutableTriple<L, M, R>[] emptyArray() {
+        return (MutableTriple<L, M, R>[]) EMPTY_ARRAY;
+    }
+
     /** Serialization version */
     private static final long serialVersionUID = 1L;
 
diff --git a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
index 2aca73c..896840c 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
@@ -40,6 +40,19 @@ import org.junit.jupiter.api.Test;
 public class ImmutablePairTest {
 
     @Test
+    public void testEmptyArrayLength() {
+        @SuppressWarnings("unchecked")
+        final ImmutablePair<Integer, String>[] empty = (ImmutablePair<Integer, String>[]) ImmutablePair.EMPTY_ARRAY;
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
+    public void testEmptyArrayGenerics() {
+        final ImmutablePair<Integer, String>[] empty = ImmutablePair.emptyArray();
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
     public void testBasic() {
         final ImmutablePair<Integer, String> pair = new ImmutablePair<>(0, "foo");
         assertEquals(0, pair.left.intValue());
diff --git a/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java b/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
index fc27ac8..02014e9 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutableTripleTest.java
@@ -40,6 +40,19 @@ import org.junit.jupiter.api.Test;
 public class ImmutableTripleTest {
 
     @Test
+    public void testEmptyArrayLength() {
+        @SuppressWarnings("unchecked")
+        final ImmutableTriple<Integer, String, Boolean>[] empty = (ImmutableTriple<Integer, String, Boolean>[]) ImmutableTriple.EMPTY_ARRAY;
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
+    public void testEmptyArrayGenerics() {
+        final ImmutableTriple<Integer, String, Boolean>[] empty = ImmutableTriple.emptyArray();
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
     public void testBasic() {
         final ImmutableTriple<Integer, String, Boolean> triple = new ImmutableTriple<>(0, "foo", Boolean.TRUE);
         assertEquals(0, triple.left.intValue());
diff --git a/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java b/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java
index 2e2da23..f138c97 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/MutablePairTest.java
@@ -33,6 +33,19 @@ import org.junit.jupiter.api.Test;
 public class MutablePairTest {
 
     @Test
+    public void testEmptyArrayLength() {
+        @SuppressWarnings("unchecked")
+        final MutablePair<Integer, String>[] empty = (MutablePair<Integer, String>[]) MutablePair.EMPTY_ARRAY;
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
+    public void testEmptyArrayGenerics() {
+        final MutablePair<Integer, String>[] empty = MutablePair.emptyArray();
+        assertEquals(0, empty.length);
+    }
+        
+    @Test
     public void testBasic() {
         final MutablePair<Integer, String> pair = new MutablePair<>(0, "foo");
         assertEquals(0, pair.getLeft().intValue());
diff --git a/src/test/java/org/apache/commons/lang3/tuple/MutableTripleTest.java b/src/test/java/org/apache/commons/lang3/tuple/MutableTripleTest.java
index 0c513c6..626f6a6 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/MutableTripleTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/MutableTripleTest.java
@@ -33,6 +33,19 @@ import org.junit.jupiter.api.Test;
 public class MutableTripleTest {
 
     @Test
+    public void testEmptyArrayLength() {
+        @SuppressWarnings("unchecked")
+        final MutableTriple<Integer, String, Boolean>[] empty = (MutableTriple<Integer, String, Boolean>[]) MutableTriple.EMPTY_ARRAY;
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
+    public void testEmptyArrayGenerics() {
+        final MutableTriple<Integer, String, Boolean>[] empty = MutableTriple.emptyArray();
+        assertEquals(0, empty.length);
+    }
+    
+    @Test
     public void testBasic() {
         final MutableTriple<Integer, String, Boolean> triple = new MutableTriple<>(0, "foo", Boolean.FALSE);
         assertEquals(0, triple.getLeft().intValue());