Madan Jampani
Committed by Gerrit Code Review

Added a valueOrElse static method to Versioned

Change-Id: Icf6406aca716fd2b427fec52e86f6482ce44f393
...@@ -99,6 +99,17 @@ public class Versioned<V> { ...@@ -99,6 +99,17 @@ public class Versioned<V> {
99 return new Versioned<>(transformer.apply(value), version, creationTime); 99 return new Versioned<>(transformer.apply(value), version, creationTime);
100 } 100 }
101 101
102 + /**
103 + * Returns the value of the specified Versioned object if non-null or else returns
104 + * a default value.
105 + * @param versioned versioned object
106 + * @param defaultValue default value to return if versioned object is null
107 + * @return versioned value or default value if versioned object is null
108 + */
109 + public static <U> U valueOrElse(Versioned<U> versioned, U defaultValue) {
110 + return versioned == null ? defaultValue : versioned.value();
111 + }
112 +
102 @Override 113 @Override
103 public int hashCode() { 114 public int hashCode() {
104 return Objects.hashCode(value, version, creationTime); 115 return Objects.hashCode(value, version, creationTime);
......
...@@ -60,6 +60,17 @@ public class VersionedTest extends TestCase { ...@@ -60,6 +60,17 @@ public class VersionedTest extends TestCase {
60 } 60 }
61 61
62 /** 62 /**
63 + * Tests the valueOrElse method.
64 + */
65 + @Test
66 + public void testOrElse() {
67 + Versioned<String> vv = new Versioned<String>("foo", 1);
68 + Versioned<String> nullVV = null;
69 + assertThat(Versioned.valueOrElse(vv, "bar"), is("foo"));
70 + assertThat(Versioned.valueOrElse(nullVV, "bar"), is("bar"));
71 + }
72 +
73 + /**
63 * Tests the equals, hashCode and toString methods using Guava EqualsTester. 74 * Tests the equals, hashCode and toString methods using Guava EqualsTester.
64 */ 75 */
65 @Test 76 @Test
......