Merge "Minor fixes"
diff --git a/model/src/main/java/org/onosproject/yang/model/ModelConverter.java b/model/src/main/java/org/onosproject/yang/model/ModelConverter.java
index 2a3e094..22e07df 100644
--- a/model/src/main/java/org/onosproject/yang/model/ModelConverter.java
+++ b/model/src/main/java/org/onosproject/yang/model/ModelConverter.java
@@ -37,7 +37,7 @@
      * Produces an immutable tree structure rooted at the returned DataNode
      * using the supplied model POJO object.
      * <p>
-     * Model object identifier will be converted to resource identfier and
+     * Model object identifier will be converted to resource identifier and
      * list of model objects will be converted to list of data nodes.
      *
      * @param modelData model object data
diff --git a/model/src/main/java/org/onosproject/yang/model/SchemaId.java b/model/src/main/java/org/onosproject/yang/model/SchemaId.java
index 7e0249b..c07a5dc 100644
--- a/model/src/main/java/org/onosproject/yang/model/SchemaId.java
+++ b/model/src/main/java/org/onosproject/yang/model/SchemaId.java
@@ -19,6 +19,8 @@
 import java.io.Serializable;
 import java.util.Objects;
 
+import com.google.common.collect.ComparisonChain;
+
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onosproject.yang.model.ModelConstants.INCOMPLETE_SCHEMA_INFO;
@@ -68,6 +70,7 @@
      * @throws CloneNotSupportedException if the object's class does not
      *                                    support the {@code Cloneable} interface
      */
+    @Override
     public SchemaId clone() throws CloneNotSupportedException {
         return (SchemaId) super.clone();
     }
@@ -79,23 +82,23 @@
 
     @Override
     public boolean equals(Object obj) {
-        if (obj == null) {
-            return false;
+        if (obj == this) {
+            return true;
         }
-        SchemaId that = (SchemaId) obj;
-        return Objects.equals(name, that.name) &&
-                Objects.equals(nameSpace, that.nameSpace);
+        if (obj instanceof SchemaId) {
+            SchemaId that = (SchemaId) obj;
+            return Objects.equals(name, that.name) &&
+                    Objects.equals(nameSpace, that.nameSpace);
+        }
+        return false;
     }
 
     @Override
     public int compareTo(SchemaId o) {
-        checkNotNull(o);
-        if (name.equals(o.name)) {
-            if (nameSpace.equals(o.nameSpace)) {
-                return 0;
-            }
-        }
-        return -1;
+        return ComparisonChain.start()
+                .compare(this.name, o.name)
+                .compare(this.nameSpace, o.nameSpace)
+                .result();
     }
 
     @Override
diff --git a/model/src/test/java/org/onosproject/yang/model/SchemaIdTest.java b/model/src/test/java/org/onosproject/yang/model/SchemaIdTest.java
new file mode 100644
index 0000000..0334df8
--- /dev/null
+++ b/model/src/test/java/org/onosproject/yang/model/SchemaIdTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * 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.yang.model;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+public class SchemaIdTest {
+
+    @Test
+    public void testEquals() {
+
+        new EqualsTester()
+            .addEqualityGroup(new SchemaId("a1", "a1"), new SchemaId("a" + 1, "a1"))
+            .addEqualityGroup(new SchemaId("b1", "a1"))
+            .addEqualityGroup(new SchemaId("a1", "b1"))
+            .addEqualityGroup(new SchemaId("c", "c"))
+            .testEquals();
+    }
+
+}
diff --git a/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java b/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java
index 7185240..63505ad 100644
--- a/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java
+++ b/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java
@@ -870,7 +870,7 @@
                     }
                 }
             } catch (ClassNotFoundException e) {
-                throw new ModelConverterException(E_FAIL_TO_LOAD_LEAF_IDENTIFIER_CLASS);
+                throw new ModelConverterException(E_FAIL_TO_LOAD_LEAF_IDENTIFIER_CLASS, e);
             }
         }
         return midb;