43bd1583eab1bdabdaad93d1421be05116882b8e
[onosfw.git] /
1 /*
2  * Copyright 2015 Open Networking Laboratory
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onosproject.openstackswitching.web;
17
18 import com.fasterxml.jackson.databind.JsonNode;
19 import com.fasterxml.jackson.databind.node.ObjectNode;
20 import org.onosproject.codec.CodecContext;
21 import org.onosproject.codec.JsonCodec;
22 import org.onosproject.openstackswitching.OpenstackNetwork;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
25
26 /**
27  * Implementation of the OpenstackNetwork Codec.
28  *
29  */
30 public class OpenstackNetworkCodec extends JsonCodec<OpenstackNetwork> {
31
32     protected static final Logger log = LoggerFactory
33             .getLogger(OpenstackNetworkCodec.class);
34
35     private static final String NETWORK = "network";
36     private static final String NAME = "name";
37     private static final String TENANT_ID = "tenant_id";
38     private static final String SEGMENTATION_ID = "provider:segmentation_id";
39     private static final String NETWORK_TYPE = "provider:network_type";
40     private static final String ID = "id";
41
42     @Override
43     public OpenstackNetwork decode(ObjectNode json, CodecContext context) {
44
45         JsonNode networkInfo = json.get(NETWORK);
46
47         String name = networkInfo.path(NAME).asText();
48         String tenantId = networkInfo.path(TENANT_ID).asText();
49         String id = networkInfo.path(ID).asText();
50
51         OpenstackNetwork.Builder onb = OpenstackNetwork.builder();
52         onb.name(name)
53                 .tenantId(tenantId)
54                 .id(id);
55
56         if (!networkInfo.path(NETWORK_TYPE).isMissingNode()) {
57             onb.name(networkInfo.path(NETWORK_TYPE).asText());
58             onb.segmentId(networkInfo.path(SEGMENTATION_ID).asText());
59         }
60
61         return onb.build();
62     }
63
64 }