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 2017/05/15 03:34:02 UTC

[lang] [LANG-1331] ImmutablePair.nullPair()

Repository: commons-lang
Updated Branches:
  refs/heads/master 340f5f70e -> 776b86e99


[LANG-1331] ImmutablePair.nullPair()

Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/776b86e9
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/776b86e9
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/776b86e9

Branch: refs/heads/master
Commit: 776b86e99a1ce18a5093db457109807b766d49c1
Parents: 340f5f7
Author: Gary Gregory <gg...@apache.org>
Authored: Sun May 14 20:33:59 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Sun May 14 20:33:59 2017 -0700

----------------------------------------------------------------------
 src/changes/changes.xml                         |  1 +
 .../commons/lang3/tuple/ImmutablePair.java      | 18 +++++++++
 .../commons/lang3/tuple/ImmutablePairTest.java  | 42 +++++++++++++++++++-
 3 files changed, 60 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/776b86e9/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index dc6b795..768644c 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -90,6 +90,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action issue="LANG-1313" type="add" dev="pschumacher" due-to="Tomschi">Add ArchUtils - An utility class for the "os.arch" system property</action>
     <action issue="LANG-1272" type="add" dev="ebourg">Add shuffle methods to ArrayUtils</action>
     <action issue="LANG-1317" type="add" dev="pschumacher" due-to="Yasser Zamani">Add MethodUtils#findAnnotation and extend MethodUtils#getMethodsWithAnnotation for non-public, super-class and interface methods</action>
+    <action issue="LANG-1331" type="add" dev="ggregory">Add ImmutablePair.nullPair()</action>    
   </release>
 
   <release version="3.5" date="2016-10-13" description="New features including Java 9 detection">

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/776b86e9/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java
----------------------------------------------------------------------
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 c2b92be..689ad24 100644
--- a/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java
+++ b/src/main/java/org/apache/commons/lang3/tuple/ImmutablePair.java
@@ -33,9 +33,27 @@ package org.apache.commons.lang3.tuple;
  */
 public final class ImmutablePair<L, R> extends Pair<L, R> {
 
+    /**
+     * An immutable pair of nulls.
+     */
+    // This is not defined with generics to avoid warnings in call sites.
+    @SuppressWarnings("rawtypes")
+    private static final ImmutablePair NULL = ImmutablePair.of(null, null);
+
     /** Serialization version */
     private static final long serialVersionUID = 4954918890077093841L;
 
+    /** 
+     * Returns an immutable pair of nulls.
+     * 
+     * @return an immutable pair of nulls. 
+     * @since 3.6
+     */
+    @SuppressWarnings("rawtypes")
+    public static <L, R> ImmutablePair<L, R> nullPair() {
+        return NULL;
+    }
+    
     /** Left object */
     public final L left;
     /** Right object */

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/776b86e9/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
----------------------------------------------------------------------
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 f73d7b5..eaedef3 100644
--- a/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
+++ b/src/test/java/org/apache/commons/lang3/tuple/ImmutablePairTest.java
@@ -18,7 +18,9 @@ package org.apache.commons.lang3.tuple;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
@@ -76,7 +78,45 @@ public class ImmutablePairTest {
     public void testHashCode() throws Exception {
         assertEquals(ImmutablePair.of(null, "foo").hashCode(), ImmutablePair.of(null, "foo").hashCode());
     }
-
+    
+    @Test
+    public void testNullPairEquals() {
+        assertEquals(ImmutablePair.nullPair(), ImmutablePair.nullPair());
+    }
+        
+    @Test
+    public void testNullPairSame() {
+        assertSame(ImmutablePair.nullPair(), ImmutablePair.nullPair());
+    }
+        
+    @Test
+    public void testNullPairLeft() {
+        assertNull(ImmutablePair.nullPair().getLeft());
+    }
+        
+    @Test
+    public void testNullPairKey() {
+        assertNull(ImmutablePair.nullPair().getKey());
+    }
+        
+    @Test
+    public void testNullPairRight() {
+        assertNull(ImmutablePair.nullPair().getRight());
+    }
+        
+    @Test
+    public void testNullPairValue() {
+        assertNull(ImmutablePair.nullPair().getValue());
+    }
+        
+    @Test
+    public void testNullPairTyped() {
+        // No compiler warnings
+        // How do we assert that?
+        ImmutablePair<String, String> pair = ImmutablePair.nullPair();
+        assertNotNull(pair);
+    }
+        
     @Test
     public void testToString() throws Exception {
         assertEquals("(null,null)", ImmutablePair.of(null, null).toString());