Added a valueOrElse static method to Versioned
Change-Id: Icf6406aca716fd2b427fec52e86f6482ce44f393
diff --git a/core/api/src/main/java/org/onosproject/store/service/Versioned.java b/core/api/src/main/java/org/onosproject/store/service/Versioned.java
index ac7109c..2b67edd 100644
--- a/core/api/src/main/java/org/onosproject/store/service/Versioned.java
+++ b/core/api/src/main/java/org/onosproject/store/service/Versioned.java
@@ -99,6 +99,17 @@
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);
diff --git a/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java b/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java
index 3f5faa7..9f59454 100644
--- a/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java
+++ b/core/api/src/test/java/org/onosproject/store/service/VersionedTest.java
@@ -60,6 +60,17 @@
}
/**
+ * 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