TE Topoplogy subsystem I2RS API changes

This submission contains the following:

1. Major changes in apps/tetopology. The changes are mainly introduced
   to support new searching keys in TE Topology.

2. Add RESTCONF notification support in the TE Provider. i.e., for
   south-bound RESTCONF communication with the domain controller.

Change-Id: I6786959deb66c98626edc65ff52694dcf08981a3
diff --git a/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java
new file mode 100644
index 0000000..3cce230
--- /dev/null
+++ b/apps/tetopology/api/src/test/java/org/onosproject/tetopology/manager/api/TeNetworkApiTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2016 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.tetopology.manager.api;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.tetopology.management.api.TeTopologyId;
+import org.onosproject.tetopology.management.api.TeTopologyKey;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+
+/**
+ * Unit tests for TE topology APIs.
+ */
+public class TeNetworkApiTest {
+    private static final long DEFAULT_PROVIDER_ID = 1234;
+    private static final long DEFAULT_CLIENT_ID = 5678;
+    private static final long DEFAULT_TOPOLOGY_ID = 9876;
+    private static final String DEFAULT_TOPOLOGY_ID_STRING =
+            "default-topology-123";
+
+    private long providerId;
+    private long clientId;
+    private long topologyId;
+    private String topologyIdString;
+
+    @Before
+    public void setUp() {
+        providerId = DEFAULT_PROVIDER_ID;
+        clientId = DEFAULT_CLIENT_ID;
+        topologyId = DEFAULT_TOPOLOGY_ID;
+        topologyIdString = DEFAULT_TOPOLOGY_ID_STRING;
+    }
+
+    @Test
+    public void topologyIdEqualOperatorTest() {
+        TeTopologyId id1 = new TeTopologyId(providerId, clientId,
+                                            topologyIdString);
+        TeTopologyId id2 = new TeTopologyId(providerId, clientId,
+                                            topologyIdString);
+        TeTopologyId id3 = new TeTopologyId(providerId + 1, clientId,
+                                            topologyIdString);
+        TeTopologyId id4 = new TeTopologyId(providerId, clientId + 1,
+                                            topologyIdString);
+        TeTopologyId id5 = new TeTopologyId(providerId, clientId,
+                                            topologyIdString + "abc");
+
+        assertTrue("Two topology ids must be equal", id1.equals(id2));
+
+        assertFalse("Two topology ids must be unequal", id1.equals(id3));
+        assertFalse("Two topology ids must be unequal", id3.equals(id1));
+
+        assertFalse("Two topology ids must be unequal", id1.equals(id4));
+        assertFalse("Two topology ids must be unequal", id4.equals(id1));
+
+        assertFalse("Two topology ids must be unequal", id1.equals(id5));
+        assertFalse("Two topology ids must be unequal", id5.equals(id1));
+    }
+
+    @Test
+    public void topologyKeyEqualOperatorTest() {
+        TeTopologyKey key1 = new TeTopologyKey(providerId, clientId,
+                                               topologyId);
+        TeTopologyKey key2 = new TeTopologyKey(providerId, clientId,
+                                               topologyId);
+        TeTopologyKey key3 = new TeTopologyKey(providerId + 1, clientId,
+                                               topologyId);
+        TeTopologyKey key4 = new TeTopologyKey(providerId, clientId + 1,
+                                               topologyId);
+        TeTopologyKey key5 = new TeTopologyKey(providerId, clientId,
+                                               topologyId + 1);
+
+        assertTrue("Two topology keys must be equal", key1.equals(key2));
+
+        assertFalse("Two topology keys must be unequal", key1.equals(key3));
+        assertFalse("Two topology keys must be unequal", key3.equals(key1));
+
+        assertFalse("Two topology keys must be unequal", key1.equals(key4));
+        assertFalse("Two topology keys must be unequal", key4.equals(key1));
+
+        assertFalse("Two topology keys must be unequal", key1.equals(key5));
+        assertFalse("Two topology keys must be unequal", key5.equals(key1));
+    }
+}