diff options
author | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
---|---|---|
committer | Ashlee Young <ashlee@onosfw.com> | 2015-09-09 22:15:21 -0700 |
commit | 13d05bc8458758ee39cb829098241e89616717ee (patch) | |
tree | 22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/core/common/src/main/java/org/onosproject/codec/impl/GroupCodec.java | |
parent | 6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff) |
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/core/common/src/main/java/org/onosproject/codec/impl/GroupCodec.java')
-rw-r--r-- | framework/src/onos/core/common/src/main/java/org/onosproject/codec/impl/GroupCodec.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/framework/src/onos/core/common/src/main/java/org/onosproject/codec/impl/GroupCodec.java b/framework/src/onos/core/common/src/main/java/org/onosproject/codec/impl/GroupCodec.java new file mode 100644 index 00000000..a2f33cee --- /dev/null +++ b/framework/src/onos/core/common/src/main/java/org/onosproject/codec/impl/GroupCodec.java @@ -0,0 +1,79 @@ +/* + * 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.codec.impl; + +import org.onosproject.codec.CodecContext; +import org.onosproject.codec.JsonCodec; +import org.onosproject.net.group.Group; +import org.onosproject.net.group.GroupBucket; + +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Group JSON codec. + */ +public final class GroupCodec extends JsonCodec<Group> { + // JSON field names + private static final String ID = "id"; + private static final String STATE = "state"; + private static final String LIFE = "life"; + private static final String PACKETS = "packets"; + private static final String BYTES = "bytes"; + private static final String REFERENCE_COUNT = "referenceCount"; + private static final String TYPE = "type"; + private static final String DEVICE_ID = "deviceId"; + private static final String APP_ID = "appId"; + private static final String APP_COOKIE = "appCookie"; + private static final String GIVEN_GROUP_ID = "givenGroupId"; + private static final String BUCKETS = "buckets"; + + @Override + public ObjectNode encode(Group group, CodecContext context) { + checkNotNull(group, "Group cannot be null"); + ObjectNode result = context.mapper().createObjectNode() + .put(ID, group.id().toString()) + .put(STATE, group.state().toString()) + .put(LIFE, group.life()) + .put(PACKETS, group.packets()) + .put(BYTES, group.bytes()) + .put(REFERENCE_COUNT, group.referenceCount()) + .put(TYPE, group.type().toString()) + .put(DEVICE_ID, group.deviceId().toString()); + + if (group.appId() != null) { + result.put(APP_ID, group.appId().toString()); + } + + if (group.appCookie() != null) { + result.put(APP_COOKIE, group.appCookie().toString()); + } + + if (group.givenGroupId() != null) { + result.put(GIVEN_GROUP_ID, group.givenGroupId()); + } + + ArrayNode buckets = context.mapper().createArrayNode(); + group.buckets().buckets().forEach(bucket -> { + ObjectNode bucketJson = context.codec(GroupBucket.class).encode(bucket, context); + buckets.add(bucketJson); + }); + result.set(BUCKETS, buckets); + return result; + } +} |