2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.restconf;
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;
22 * Base Draft for Restconf project
24 * <li>Supported {@link MediaTypes}
25 * <li>Constants for modules
27 * <li>{@link RestconfModule}
28 * <li>{@link MonitoringModule}
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.
36 public final class Draft18 {
39 throw new UnsupportedOperationException("Util class");
43 * Set of application specific media types to identify each of the available
46 public static final class MediaTypes {
48 private MediaTypes() {
49 throw new UnsupportedOperationException("Util class");
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";
60 * Constants for restconf module
63 public static final class RestconfModule {
65 private RestconfModule() {
66 throw new UnsupportedOperationException("Util class");
69 public static final String REVISION = "2013-10-19";
71 public static final String NAME = "ietf-restconf";
73 public static final String NAMESPACE = "urn:ietf:params:xml:ns:yang:ietf-restconf";
75 public static final String RESTCONF_GROUPING_SCHEMA_NODE = "restconf";
77 public static final String RESTCONF_CONTAINER_SCHEMA_NODE = "restconf";
79 public static final String MODULES_CONTAINER_SCHEMA_NODE = "modules";
81 public static final String MODULE_LIST_SCHEMA_NODE = "module";
83 public static final String OPERATIONS_CONTAINER_SCHEMA_NODE = "operations";
85 public static final String ERRORS_GROUPING_SCHEMA_NODE = "errors";
87 public static final String ERRORS_CONTAINER_SCHEMA_NODE = "errors";
89 public static final String ERROR_LIST_SCHEMA_NODE = "error";
91 public static final QName IETF_RESTCONF_QNAME = QName.create(Draft18.RestconfModule.NAMESPACE, Draft18.RestconfModule.REVISION,
92 Draft18.RestconfModule.NAME);
94 public static final QName ERRORS_CONTAINER_QNAME = QName.create(IETF_RESTCONF_QNAME, ERRORS_CONTAINER_SCHEMA_NODE);
96 public static final QName ERROR_LIST_QNAME = QName.create(IETF_RESTCONF_QNAME, ERROR_LIST_SCHEMA_NODE);
98 public static final QName ERROR_TYPE_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-type");
100 public static final QName ERROR_TAG_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-tag");
102 public static final QName ERROR_APP_TAG_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-app-tag");
104 public static final QName ERROR_MESSAGE_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-message");
106 public static final QName ERROR_INFO_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-info");
108 public static final QName ERROR_PATH_QNAME = QName.create(IETF_RESTCONF_QNAME, "error-path");
112 * Constants for ietf-yang-library model
115 public static final class IetfYangLibrary {
117 private static final Logger LOG = LoggerFactory.getLogger(NotificationListenerAdapter.class);
119 private IetfYangLibrary() {
120 throw new UnsupportedOperationException("Util class");
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";
127 public static Date DATE = null;
128 public static URI URI_MODULE = null;
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());
139 public static final QNameModule MODULE_QNAME = QNameModule.create(URI_MODULE, DATE);
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);
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);
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);
150 public static final String MODULE_LIST = "module";
151 public static final QName MODULE_QNAME_LIST = QName.create(MODULE_QNAME, MODULE_LIST);
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);
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);
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);
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);
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);
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);
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);
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);
188 * Constants for restconf module
191 public static final class MonitoringModule {
193 private MonitoringModule() {
194 throw new UnsupportedOperationException("Util class");
197 public static final String STREAMS_CONTAINER_SCHEMA_NODE = "streams";
199 public static final String STREAM_LIST_SCHEMA_NODE = "stream";