dbf9f2d0b6b0673b0537959b5c27312a5b2b284c
[netconf.git] / restconf / sal-rest-connector / src / main / java / org / opendaylight / restconf / Draft18.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.restconf;
9
10 import java.net.URI;
11 import java.net.URISyntaxException;
12 import java.text.ParseException;
13 import java.text.SimpleDateFormat;
14 import java.util.Date;
15 import org.opendaylight.netconf.sal.streams.listeners.NotificationListenerAdapter;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.common.QNameModule;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
20
21 /**
22  * Base Draft for Restconf project
23  * <ul>
24  * <li>Supported {@link MediaTypes}
25  * <li>Constants for modules
26  * <ul>
27  * <li>{@link RestconfModule}
28  * <li>{@link MonitoringModule}
29  * </ul>
30  * </ul>
31  *
32  * We used old revision {@link Draft18.RestconfModule#REVISION} of restconf yang
33  * because the latest restconf draft has to be supported by Yang 1.1 and we are
34  * not. Then, this is only partial implementation of the latest restconf draft.
35  */
36 public final class Draft18 {
37
38     private Draft18() {
39         throw new UnsupportedOperationException("Util class");
40     }
41
42     /**
43      * Set of application specific media types to identify each of the available
44      * resource types
45      */
46     public static final class MediaTypes {
47
48         private MediaTypes() {
49             throw new UnsupportedOperationException("Util class");
50         }
51
52         public static final String DATA = "application/yang-data";
53         public static final String PATCH = "application/yang.patch";
54         public static final String PATCH_STATUS = "application/yang.patch-status";
55         public static final String YIN = "application/yin";
56         public static final String YANG = "application/yang";
57     }
58
59     /**
60      * Constants for restconf module
61      *
62      */
63     public static final class RestconfModule {
64
65         private RestconfModule() {
66             throw new UnsupportedOperationException("Util class");
67         }
68
69         public static final String REVISION = "2013-10-19";
70
71         public static final String NAME = "ietf-restconf";
72
73         public static final String NAMESPACE = "urn:ietf:params:xml:ns:yang:ietf-restconf";
74
75         public static final String RESTCONF_GROUPING_SCHEMA_NODE = "restconf";
76
77         public static final String RESTCONF_CONTAINER_SCHEMA_NODE = "restconf";
78
79         public static final String MODULES_CONTAINER_SCHEMA_NODE = "modules";
80
81         public static final String MODULE_LIST_SCHEMA_NODE = "module";
82
83         public static final String OPERATIONS_CONTAINER_SCHEMA_NODE = "operations";
84
85         public static final String ERRORS_GROUPING_SCHEMA_NODE = "errors";
86
87         public static final String ERRORS_CONTAINER_SCHEMA_NODE = "errors";
88
89         public static final String ERROR_LIST_SCHEMA_NODE = "error";
90
91         public static final QName IETF_RESTCONF_QNAME = QName.create(Draft18.RestconfModule.NAMESPACE, Draft18.RestconfModule.REVISION,
92                 Draft18.RestconfModule.NAME);
93
94         public static final QName ERRORS_CONTAINER_QNAME = QName.create(IETF_RESTCONF_QNAME, ERRORS_CONTAINER_SCHEMA_NODE);
95
96         public static final QName ERROR_LIST_QNAME = QName.create(IETF_RESTCONF_QNAME, ERROR_LIST_SCHEMA_NODE);
97
98         public static final QName ERROR_TYPE_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-type");
99
100         public static final QName ERROR_TAG_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-tag");
101
102         public static final QName ERROR_APP_TAG_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-app-tag");
103
104         public static final QName ERROR_MESSAGE_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-message");
105
106         public static final QName ERROR_INFO_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-info");
107
108         public static final QName ERROR_PATH_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-path");
109     }
110
111     /**
112      * Constants for ietf-yang-library model
113      *
114      */
115     public static final class IetfYangLibrary {
116
117         private static final Logger LOG = LoggerFactory.getLogger(NotificationListenerAdapter.class);
118
119         private IetfYangLibrary() {
120             throw new UnsupportedOperationException("Util class");
121         }
122
123         public static final String NAME = "ietf-yang-library";
124         public static final String NAMESPACE = "urn:ietf:params:xml:ns:yang:ietf-yang-library";
125         public static final String REVISION = "2016-06-21";
126
127         public static Date DATE = null;
128         public static URI URI_MODULE = null;
129
130         static {
131             try {
132                 DATE = new SimpleDateFormat("yyyy-MM-dd").parse(REVISION);
133                 URI_MODULE = new URI(NAMESPACE);
134             } catch (final ParseException | URISyntaxException e) {
135                 LOG.error(e.getMessage());
136             }
137         }
138
139         public static final QNameModule MODULE_QNAME = QNameModule.create(URI_MODULE, DATE);
140
141         public static final String MODULE_SET_ID_LEAF = "module-set-id";
142         public static final QName MODULE_SET_ID_LEAF_QNAME = QName.create(MODULE_QNAME, MODULE_SET_ID_LEAF);
143
144         public static final String GROUPING_MODULE_LIST = "module-list";
145         public static final QName GROUPING_MODULE_LIST_QNAME = QName.create(MODULE_QNAME, GROUPING_MODULE_LIST);
146
147         public static final String MODULES_STATE_CONT = "modules-state";
148         public static final QName MODUELS_STATE_CONT_QNAME = QName.create(MODULE_QNAME, MODULES_STATE_CONT);
149
150         public static final String MODULE_LIST = "module";
151         public static final QName MODULE_QNAME_LIST = QName.create(MODULE_QNAME, MODULE_LIST);
152
153         public static final String SPECIFIC_MODULE_NAME_LEAF = "name";
154         public static final QName SPECIFIC_MODULE_NAME_LEAF_QNAME =
155                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_NAME_LEAF);
156
157         public static final String SPECIFIC_MODULE_REVISION_LEAF = "revision";
158         public static final QName SPECIFIC_MODULE_REVISION_LEAF_QNAME =
159                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_REVISION_LEAF);
160
161         public static final String BASE_URI_OF_SCHEMA = "/modules/";
162         public static final String SPECIFIC_MODULE_SCHEMA_LEAF = "schema";
163         public static final QName SPECIFIC_MODULE_SCHEMA_LEAF_QNAME =
164                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_SCHEMA_LEAF);
165
166         public static final String SPECIFIC_MODULE_NAMESPACE_LEAF = "namespace";
167         public static final QName SPECIFIC_MODULE_NAMESPACE_LEAF_QNAME =
168                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_NAMESPACE_LEAF);
169
170         public static final String SPECIFIC_MODULE_FEATURE_LEAF_LIST = "feature";
171         public static final QName SPECIFIC_MODULE_FEATURE_LEAF_LIST_QNAME =
172                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_FEATURE_LEAF_LIST);
173
174         public static final String SPECIFIC_MODULE_DEVIATION_LIST = "deviation";
175         public static final QName SPECIFIC_MODULE_DEVIATION_LIST_QNAME =
176                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_DEVIATION_LIST);
177
178         public static final String SPECIFIC_MODULE_CONFORMANCE_LEAF = "conformance-type";
179         public static final QName SPECIFIC_MODULE_CONFORMANCE_LEAF_QNAME =
180                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_CONFORMANCE_LEAF);
181
182         public static final String SPECIFIC_MODULE_SUBMODULE_LIST = "submodule";
183         public static final QName SPECIFIC_MODULE_SUBMODULE_LIST_QNAME =
184                 QName.create(MODULE_QNAME, SPECIFIC_MODULE_SUBMODULE_LIST);
185     }
186
187     /**
188      * Constants for restconf module
189      *
190      */
191     public static final class MonitoringModule {
192
193         private MonitoringModule() {
194             throw new UnsupportedOperationException("Util class");
195         }
196
197         public static final String STREAMS_CONTAINER_SCHEMA_NODE = "streams";
198
199         public static final String STREAM_LIST_SCHEMA_NODE = "stream";
200     }
201 }