Group subsystem Northbound and Southbound API definition
Change-Id: I1843562ff7fdf0dfdf82a8757382d494698ded3f
diff --git a/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java b/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java
new file mode 100644
index 0000000..46ccafd
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/group/DefaultGroupDescription.java
@@ -0,0 +1,103 @@
+/*
+ * 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.net.group;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.onosproject.core.ApplicationId;
+import org.onosproject.net.DeviceId;
+
+public class DefaultGroupDescription implements GroupDescription {
+ private final GroupDescription.Type type;
+ private final GroupBuckets buckets;
+ private final GroupKey appCookie;
+ private final ApplicationId appId;
+ private final DeviceId deviceId;
+
+ /**
+ *
+ * @param deviceId device identifier
+ * @param type type of the group
+ * @param buckets immutable list of group bucket
+ * @param appCookie immutable application cookie to be associated with the group
+ * @param appId application id
+ *
+ * NOTE: The caller of this subsystem MUST ensure the appCookie
+ * provided in this API is immutable
+ */
+ public DefaultGroupDescription(DeviceId deviceId,
+ GroupDescription.Type type,
+ GroupBuckets buckets,
+ GroupKey appCookie,
+ ApplicationId appId) {
+ this.type = checkNotNull(type);
+ this.deviceId = checkNotNull(deviceId);
+ this.buckets = checkNotNull(buckets);
+ this.appCookie = checkNotNull(appCookie);
+ this.appId = checkNotNull(appId);
+ }
+
+ /**
+ * Return type of a group object.
+ *
+ * @return GroupType group type
+ */
+ @Override
+ public GroupDescription.Type type() {
+ return this.type;
+ }
+
+ /**
+ * Return device identifier on which this group object is created.
+ *
+ * @return DeviceId device identifier
+ */
+ @Override
+ public DeviceId deviceId() {
+ return this.deviceId;
+ }
+
+ /**
+ * Return application identifier that has created this group object.
+ *
+ * @return ApplicationId application identifier
+ */
+ @Override
+ public ApplicationId appId() {
+ return this.appId;
+ }
+
+ /**
+ * Return application cookie associated with a group object.
+ *
+ * @return GroupKey application cookie
+ */
+ @Override
+ public GroupKey appCookie() {
+ return this.appCookie;
+ }
+
+ /**
+ * Return group buckets of a group.
+ *
+ * @return GroupBuckets immutable list of group bucket
+ */
+ @Override
+ public GroupBuckets buckets() {
+ return this.buckets;
+ }
+
+}
\ No newline at end of file