Application manages the IP layer topology information - Interfaces

Change-Id: Ie1dea035674ee98583e98a82cca7e33ab0858b92
diff --git a/apps/iptopology-api/src/main/java/org/onosproject/iptopology/api/DefaultIpLink.java b/apps/iptopology-api/src/main/java/org/onosproject/iptopology/api/DefaultIpLink.java
new file mode 100644
index 0000000..41f0604
--- /dev/null
+++ b/apps/iptopology-api/src/main/java/org/onosproject/iptopology/api/DefaultIpLink.java
@@ -0,0 +1,105 @@
+/*

+ * 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.iptopology.api;

+

+import org.onosproject.net.AbstractModel;

+import org.onosproject.net.Annotations;

+import org.onosproject.net.provider.ProviderId;

+

+import java.util.Objects;

+

+import static com.google.common.base.MoreObjects.toStringHelper;

+

+/**

+ * This class provides Link identifier and link ted details.

+ */

+public class DefaultIpLink extends AbstractModel implements IpLink {

+

+    private final TerminationPoint src;

+    private final TerminationPoint dst;

+    private final IpLinkIdentifier linkIdentifier;

+    private final LinkTed linkTed;

+

+    /**

+     * Constructor to initialize its parameters.

+     *

+     * @param src            link source termination point

+     * @param dst            link destination termination point

+     * @param linkIdentifier provides link identifier details

+     * @param linkTed        provides link traffic engineering details

+     * @param annotations    optional key/value annotations

+     */

+    public DefaultIpLink(ProviderId providerId, TerminationPoint src, TerminationPoint dst,

+                         IpLinkIdentifier linkIdentifier, LinkTed linkTed,

+                         Annotations... annotations) {

+        super(providerId, annotations);

+        this.src = src;

+        this.dst = dst;

+        this.linkIdentifier = linkIdentifier;

+        this.linkTed = linkTed;

+    }

+

+    @Override

+    public TerminationPoint src() {

+        return src;

+    }

+

+    @Override

+    public TerminationPoint dst() {

+        return dst;

+    }

+

+    @Override

+    public IpLinkIdentifier linkIdentifier() {

+        return linkIdentifier;

+    }

+

+    @Override

+    public LinkTed linkTed() {

+        return linkTed;

+    }

+

+    @Override

+    public int hashCode() {

+        return Objects.hash(src, dst, linkIdentifier, linkTed);

+    }

+

+    @Override

+    public boolean equals(Object obj) {

+        if (this == obj) {

+            return true;

+        }

+        if (obj instanceof DefaultIpLink) {

+            final DefaultIpLink other = (DefaultIpLink) obj;

+            return Objects.equals(this.src, other.src) &&

+                    Objects.equals(this.dst, other.dst) &&

+                    Objects.equals(this.linkIdentifier, other.linkIdentifier) &&

+                    Objects.equals(this.linkTed, other.linkTed);

+        }

+        return false;

+    }

+

+    @Override

+    public String toString() {

+        return toStringHelper(this)

+                .omitNullValues()

+                .add("src", src)

+                .add("dst", dst)

+                .add("linkIdentifier", linkIdentifier)

+                .add("linkTed", linkTed)

+                .toString();

+    }

+}
\ No newline at end of file