Initial cut for Ui Model Objects.

Change-Id: I158f75925dadc634168d3bb704884966b4d8790b
diff --git a/core/api/src/main/java/org/onosproject/ui/model/package-info.java b/core/api/src/main/java/org/onosproject/ui/model/package-info.java
new file mode 100644
index 0000000..75f581d
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/package-info.java
@@ -0,0 +1,24 @@
+/*
+ *  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.
+ */
+
+/**
+ * Server-side modeling of UI entities.
+ * <p>
+ * The classes in this package are thin wrappers around core model objects
+ * (where possible). Together, they provide a model of what the user can
+ * "see" in the UI, and how the user can interact with that (visual) model.
+ */
+package org.onosproject.ui.model;
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java
new file mode 100644
index 0000000..0a16991
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiCluster.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Encapsulates the notion of the ONOS cluster.
+ */
+public class UiCluster {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiClusterMember.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiClusterMember.java
new file mode 100644
index 0000000..2fcea91
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiClusterMember.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents an individual member of the cluster (ONOS instance).
+ */
+public class UiClusterMember {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiDevice.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiDevice.java
new file mode 100644
index 0000000..598a1c7
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiDevice.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents a device.
+ */
+public class UiDevice extends UiNode {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java
new file mode 100644
index 0000000..dcf745d
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiHost.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents an end-station host.
+ */
+public class UiHost extends UiNode {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiLink.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiLink.java
new file mode 100644
index 0000000..8a02261
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiLink.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents a bi-directional link backed by two uni-directional links.
+ */
+public class UiLink {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiNode.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiNode.java
new file mode 100644
index 0000000..bebffea
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiNode.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents a node drawn on the topology view (region, device, host).
+ */
+public abstract class UiNode {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
new file mode 100644
index 0000000..600f0d7
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiRegion.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents a region.
+ */
+public class UiRegion extends UiNode {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopology.java b/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopology.java
new file mode 100644
index 0000000..966effc
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/UiTopology.java
@@ -0,0 +1,23 @@
+/*
+ *  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.ui.model.topo;
+
+/**
+ * Represents the overall network topology.
+ */
+public class UiTopology {
+}
diff --git a/core/api/src/main/java/org/onosproject/ui/model/topo/package-info.java b/core/api/src/main/java/org/onosproject/ui/model/topo/package-info.java
new file mode 100644
index 0000000..332e280
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/ui/model/topo/package-info.java
@@ -0,0 +1,29 @@
+/*
+ *  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.
+ */
+
+/**
+ * Server-side modeling of Topology View UI entities.
+ * <p>
+ * The classes in this package are thin wrappers around core model objects
+ * (where possible). Together, they provide a model of what the user can
+ * "see" in the UI, and how the user can interact with that (visual) model.
+ * <p>
+ * Of note: the {@link org.onosproject.ui.model.topo.UiLink} is a
+ * representation of a "bi-directional" link that is backed by two
+ * "uni-directional" core model
+ * {@link org.onosproject.net.Link} objects.
+ */
+package org.onosproject.ui.model.topo;
\ No newline at end of file