Fix route events delivery

Change-Id: I6d3b7ea52f83cee302f446917820fa555cdc61e0
diff --git a/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/DefaultRouteTable.java b/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/DefaultRouteTable.java
index b52618c..63fef51 100644
--- a/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/DefaultRouteTable.java
+++ b/apps/route-service/app/src/main/java/org/onosproject/routeservice/store/DefaultRouteTable.java
@@ -19,6 +19,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
@@ -42,6 +43,7 @@
 import org.onosproject.store.service.StorageService;
 import org.onosproject.store.service.Versioned;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -227,5 +229,34 @@
         Route route() {
             return new Route(source, IpPrefix.valueOf(prefix), IpAddress.valueOf(nextHop), sourceNode);
         }
+
+        public int hashCode() {
+            return Objects.hash(prefix, nextHop);
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (this == other) {
+                return true;
+            }
+
+            if (!(other instanceof RawRoute)) {
+                return false;
+            }
+
+            RawRoute that = (RawRoute) other;
+
+            return Objects.equals(this.prefix, that.prefix) &&
+                    Objects.equals(this.nextHop, that.nextHop);
+        }
+
+        @Override
+        public String toString() {
+            return toStringHelper(this)
+                    .add("prefix", prefix)
+                    .add("nextHop", nextHop)
+                    .toString();
+        }
+
     }
 }