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> {
return new Versioned<>(transformer.apply(value), version, creationTime);
}
/**
* Returns the value of the specified Versioned object if non-null or else returns
* a default value.
* @param versioned versioned object
* @param defaultValue default value to return if versioned object is null
* @return versioned value or default value if versioned object is null
*/
public static <U> U valueOrElse(Versioned<U> versioned, U defaultValue) {
return versioned == null ? defaultValue : versioned.value();
}
@Override
public int hashCode() {
return Objects.hashCode(value, version, creationTime);
......
......@@ -60,6 +60,17 @@ public class VersionedTest extends TestCase {
}
/**
* Tests the valueOrElse method.
*/
@Test
public void testOrElse() {
Versioned<String> vv = new Versioned<String>("foo", 1);
Versioned<String> nullVV = null;
assertThat(Versioned.valueOrElse(vv, "bar"), is("foo"));
assertThat(Versioned.valueOrElse(nullVV, "bar"), is("bar"));
}
/**
* Tests the equals, hashCode and toString methods using Guava EqualsTester.
*/
@Test
......