ONOS-3347 - HostMoved event now processed correctly.
- added new DefaultHashMap utility class
- updated TopoViewMsgHdlrBase for cleaner event translation.

Change-Id: I1c5e8c981e2d617366c25f497dc9336e09684a2e
diff --git a/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java b/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java
new file mode 100644
index 0000000..f9d878a
--- /dev/null
+++ b/utils/misc/src/main/java/org/onlab/util/DefaultHashMap.java
@@ -0,0 +1,42 @@
+/*
+ *  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.onlab.util;
+
+import java.util.HashMap;
+
+/**
+ * HashMap that returns a default value for unmapped keys.
+ */
+public class DefaultHashMap<K, V> extends HashMap<K, V> {
+
+    /** Default value to return when no key binding exists. */
+    protected V defaultValue;
+
+    /**
+     * Constructs an empty map with the given default value.
+     *
+     * @param defaultValue the default value
+     */
+    public DefaultHashMap(V defaultValue) {
+        this.defaultValue = defaultValue;
+    }
+
+    @Override
+    public V get(Object k) {
+        return containsKey(k) ? super.get(k) : defaultValue;
+    }
+}
\ No newline at end of file