Moved generic Timestamp/ClockManager classes to onos-api
so they are usable by applications.
Change-Id: Icf0e92d12434dec782332e91b632da8066a85b60
diff --git a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
index 4910ce4..6cfb218 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
@@ -43,7 +43,7 @@
import org.onosproject.store.cluster.messaging.ClusterMessage;
import org.onosproject.store.cluster.messaging.ClusterMessageHandler;
import org.onosproject.store.cluster.messaging.MessageSubject;
-import org.onosproject.store.impl.MultiValuedTimestamp;
+import org.onosproject.store.service.MultiValuedTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
index c46131e..f03215d 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/ecmap/EventuallyConsistentMapImpl.java
@@ -35,7 +35,7 @@
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.impl.LogicalTimestamp;
import org.onosproject.store.impl.Timestamped;
-import org.onosproject.store.impl.WallClockTimestamp;
+import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.store.serializers.KryoSerializer;
import org.onosproject.store.service.ClockService;
import org.onosproject.store.service.EventuallyConsistentMap;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java b/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
index 8a31de1..60b72d7 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/group/impl/DistributedGroupStore.java
@@ -62,7 +62,7 @@
import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
import org.onosproject.store.cluster.messaging.ClusterMessage;
import org.onosproject.store.cluster.messaging.ClusterMessageHandler;
-import org.onosproject.store.impl.MultiValuedTimestamp;
+import org.onosproject.store.service.MultiValuedTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.ClockService;
import org.onosproject.store.service.EventuallyConsistentMap;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/host/impl/HostClockManager.java b/core/store/dist/src/main/java/org/onosproject/store/host/impl/HostClockManager.java
index 097af85..f96568b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/host/impl/HostClockManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/host/impl/HostClockManager.java
@@ -24,7 +24,7 @@
import org.onosproject.net.HostId;
import org.onosproject.net.host.HostClockService;
import org.onosproject.store.Timestamp;
-import org.onosproject.store.impl.WallClockTimestamp;
+import org.onosproject.store.service.WallClockTimestamp;
import org.slf4j.Logger;
/**
diff --git a/core/store/dist/src/main/java/org/onosproject/store/impl/MultiValuedTimestamp.java b/core/store/dist/src/main/java/org/onosproject/store/impl/MultiValuedTimestamp.java
deleted file mode 100644
index f460dbd..0000000
--- a/core/store/dist/src/main/java/org/onosproject/store/impl/MultiValuedTimestamp.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.store.impl;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ComparisonChain;
-import org.onosproject.store.Timestamp;
-
-import java.util.Objects;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * A logical timestamp that derives its value from two input values. The first
- * value always takes precedence over the second value when comparing timestamps.
- */
-public class MultiValuedTimestamp<T extends Comparable<T>, U extends Comparable<U>>
- implements Timestamp {
-
- private final T value1;
- private final U value2;
-
- /**
- * Creates a new timestamp based on two values. The first value has higher
- * precedence than the second when comparing timestamps.
- *
- * @param value1 first value
- * @param value2 second value
- */
- public MultiValuedTimestamp(T value1, U value2) {
- this.value1 = checkNotNull(value1);
- this.value2 = checkNotNull(value2);
- }
-
- @Override
- public int compareTo(Timestamp o) {
- checkArgument(o instanceof MultiValuedTimestamp,
- "Must be MultiValuedTimestamp", o);
- MultiValuedTimestamp that = (MultiValuedTimestamp) o;
-
- return ComparisonChain.start()
- .compare(this.value1, that.value1)
- .compare(this.value2, that.value2)
- .result();
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(value1, value2);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (!(obj instanceof MultiValuedTimestamp)) {
- return false;
- }
- MultiValuedTimestamp that = (MultiValuedTimestamp) obj;
- return Objects.equals(this.value1, that.value1) &&
- Objects.equals(this.value2, that.value2);
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(getClass())
- .add("value1", value1)
- .add("value2", value2)
- .toString();
- }
-
- /**
- * Returns the first value.
- *
- * @return first value
- */
- public T value1() {
- return value1;
- }
-
- /**
- * Returns the second value.
- *
- * @return second value
- */
- public U value2() {
- return value2;
- }
-
- // Default constructor for serialization
- @SuppressWarnings("unused")
- private MultiValuedTimestamp() {
- this.value1 = null;
- this.value2 = null;
- }
-}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/impl/WallClockTimestamp.java b/core/store/dist/src/main/java/org/onosproject/store/impl/WallClockTimestamp.java
deleted file mode 100644
index e7efb29..0000000
--- a/core/store/dist/src/main/java/org/onosproject/store/impl/WallClockTimestamp.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright 2014 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.store.impl;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-import java.util.Objects;
-
-import org.onosproject.store.Timestamp;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ComparisonChain;
-
-/**
- * A Timestamp that derives its value from the prevailing
- * wallclock time on the controller where it is generated.
- */
-public class WallClockTimestamp implements Timestamp {
-
- private final long unixTimestamp;
-
- public WallClockTimestamp() {
- unixTimestamp = System.currentTimeMillis();
- }
-
- public WallClockTimestamp(long timestamp) {
- unixTimestamp = timestamp;
- }
-
- @Override
- public int compareTo(Timestamp o) {
- checkArgument(o instanceof WallClockTimestamp,
- "Must be WallClockTimestamp", o);
- WallClockTimestamp that = (WallClockTimestamp) o;
-
- return ComparisonChain.start()
- .compare(this.unixTimestamp, that.unixTimestamp)
- .result();
- }
- @Override
- public int hashCode() {
- return Objects.hash(unixTimestamp);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (!(obj instanceof WallClockTimestamp)) {
- return false;
- }
- WallClockTimestamp that = (WallClockTimestamp) obj;
- return Objects.equals(this.unixTimestamp, that.unixTimestamp);
- }
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(getClass())
- .add("unixTimestamp", unixTimestamp)
- .toString();
- }
-
- /**
- * Returns the unixTimestamp.
- *
- * @return unix timestamp
- */
- public long unixTimestamp() {
- return unixTimestamp;
- }
-}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/impl/WallclockClockManager.java b/core/store/dist/src/main/java/org/onosproject/store/impl/WallclockClockManager.java
deleted file mode 100644
index fd25ebf..0000000
--- a/core/store/dist/src/main/java/org/onosproject/store/impl/WallclockClockManager.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.store.impl;
-
-import org.onosproject.store.Timestamp;
-import org.onosproject.store.service.ClockService;
-
-/**
- * A clock service which hands out wallclock-based timestamps.
- */
-public class WallclockClockManager<T, U> implements ClockService<T, U> {
- @Override
- public Timestamp getTimestamp(T object1, U object2) {
- return new WallClockTimestamp();
- }
-}
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
index 7de2d17..9412dac 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
@@ -36,8 +36,8 @@
import org.onosproject.net.intent.Key;
import org.onosproject.net.intent.PartitionService;
import org.onosproject.store.AbstractStore;
-import org.onosproject.store.impl.MultiValuedTimestamp;
-import org.onosproject.store.impl.WallClockTimestamp;
+import org.onosproject.store.service.MultiValuedTimestamp;
+import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.EventuallyConsistentMap;
import org.onosproject.store.service.EventuallyConsistentMapEvent;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentClockManager.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentClockManager.java
index 7dea4df..a0d7d2f 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentClockManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentClockManager.java
@@ -22,7 +22,7 @@
import org.onosproject.net.intent.IntentClockService;
import org.onosproject.net.intent.IntentId;
import org.onosproject.store.Timestamp;
-import org.onosproject.store.impl.WallClockTimestamp;
+import org.onosproject.store.service.WallClockTimestamp;
import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.getLogger;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataClockManager.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataClockManager.java
index 1c4ffbf..d828988 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataClockManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataClockManager.java
@@ -18,7 +18,7 @@
import org.onosproject.net.intent.IntentData;
import org.onosproject.store.Timestamp;
import org.onosproject.store.service.ClockService;
-import org.onosproject.store.impl.MultiValuedTimestamp;
+import org.onosproject.store.service.MultiValuedTimestamp;
/**
* ClockService that uses IntentData versions as timestamps.
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataLogicalClockManager.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataLogicalClockManager.java
index 9d21223..8d78138 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataLogicalClockManager.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/IntentDataLogicalClockManager.java
@@ -18,7 +18,7 @@
import org.onosproject.net.intent.IntentData;
import org.onosproject.store.Timestamp;
import org.onosproject.store.service.ClockService;
-import org.onosproject.store.impl.MultiValuedTimestamp;
+import org.onosproject.store.service.MultiValuedTimestamp;
import java.util.concurrent.atomic.AtomicLong;
diff --git a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java b/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java
index 6748154..d717a31 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/serializers/impl/DistributedStoreSerializers.java
@@ -17,7 +17,7 @@
import org.onosproject.store.impl.MastershipBasedTimestamp;
import org.onosproject.store.impl.Timestamped;
-import org.onosproject.store.impl.WallClockTimestamp;
+import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onlab.util.KryoNamespace;
diff --git a/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java b/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java
index a4db35f..c215f5b 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java
@@ -38,7 +38,7 @@
import org.onosproject.store.cluster.messaging.MessageSubject;
import org.onosproject.store.service.ClockService;
import org.onosproject.store.impl.LogicalTimestamp;
-import org.onosproject.store.impl.WallClockTimestamp;
+import org.onosproject.store.service.WallClockTimestamp;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.serializers.KryoSerializer;
import org.onosproject.store.service.EventuallyConsistentMap;
diff --git a/core/store/dist/src/test/java/org/onosproject/store/impl/WallClockTimestampTest.java b/core/store/dist/src/test/java/org/onosproject/store/impl/WallClockTimestampTest.java
index c0fda9e..ead4612 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/impl/WallClockTimestampTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/impl/WallClockTimestampTest.java
@@ -24,6 +24,7 @@
import org.onlab.util.KryoNamespace;
import com.google.common.testing.EqualsTester;
+import org.onosproject.store.service.WallClockTimestamp;
/**
* Tests for {@link WallClockTimestamp}.