BUG-6533: add immutable implementations of yang.model.api
[yangtools.git] / yang / yang-model-api / src / main / java / org / opendaylight / yangtools / yang / model / api / package-info.java
1 /*
2  * Copyright (c) 2013 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
9 /**
10  * Definition of structures and DOM like API of effected YANG schema
11  *
12  * <p>
13  * This package is structured into following logical units:
14  * <dl>
15  * <dt>YANG Meta model</dt>
16  * <dd>Meta model of YANG, which defines basic concepts and building blocks of YANG models
17  * such as {@link org.opendaylight.yangtools.yang.model.api.meta.ModelStatement}.</dd>
18  * <dt>YANG Statement model</dt>
19  * <dd>Concrete java model of YANG statements, which defines basic relationship between statements
20  * and represents these statements.</dd>
21  *
22  * <dt>YANG Effective model</dt>
23  * <dd>Effective model of processed YANG models, which represents semantic interpretation
24  * of YANG models and provides convenience views for interpreting models.
25  * </dd>
26  * </dl>
27  *
28  *
29  * <h2>YANG Effective model</h2>
30  * <h3>Effective model statement mapping</h3>
31  *
32  * <dl>
33  * <dt>anyxml
34  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode}
35  *
36  * <dt>argument
37  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ExtensionDefinition#getArgument()}
38  *
39  * <dt>augment
40  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.AugmentationSchema}
41  *
42  * <dt>base
43  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition#getIdentity()}
44  *
45  * <dt>belongs-to
46  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement#getBelongsTo()}
47  *
48  * <dt>bit
49  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit}
50  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition#getBits()}
51  *
52  * <dt>case
53  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode}
54  *
55  * <dt>choice
56  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode}
57  *
58  * <dt>config
59  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DataSchemaNode#isConfiguration()}
60  *
61  * <dt>contact
62  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module#getContact()}
63  *
64  * <dt>container
65  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode}
66  *
67  * <dt>default
68  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.LeafSchemaNode#getDefault()}
69  *
70  * <dt>description
71  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.SchemaNode#getDescription()}
72  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition#getDescription()}
73  *
74  * <dt>enum
75  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair}
76  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition#getValues()}
77  *
78  * <dt>error-app-tag
79  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition#getErrorAppTag()}
80  *
81  * <dt>error-message
82  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition#getErrorMessage()}
83  *
84  * <dt>extension
85  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ExtensionDefinition}
86  *
87  * <dt>deviation
88  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Deviation}
89  *
90  * <dt>deviate
91  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DeviateKind}
92  *
93  * <dt>feature
94  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.FeatureDefinition}
95  *
96  * <dt>fraction-digits
97  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition#getFractionDigits()}
98  *
99  * <dt>grouping
100  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.GroupingDefinition}
101  *
102  * <dt>identity
103  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode}
104  *
105  * <dt>if-feature
106  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement}
107  *
108  * <dt>import
109  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ModuleImport}
110  *
111  * <dt>include
112  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement}
113  *
114  * <dt>input
115  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.RpcDefinition#getInput()}
116  *
117  * <dt>key
118  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#getKeyDefinition()}
119  *
120  * <dt>leaf
121  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.LeafSchemaNode}
122  *
123  * <dt>leaf-list
124  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode}
125  *
126  * <dt>length
127  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.LengthConstraint}
128  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition#getLengthConstraints()}
129  *
130  * <dt>list
131  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode}
132  *
133  * <dt>mandatory
134  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#isMandatory()}
135  *
136  * <dt>max-elements
137  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#getMinElements()}
138  *
139  * <dt>min-elements
140  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#getMaxElements()}
141  *
142  * <dt>module
143  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module}
144  *
145  * <dt>must
146  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#getMustConstraints()}
147  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.MustDefinition}
148  *
149  * <dt>namespace
150  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module#getNamespace()}
151  *
152  * <dt>notification
153  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.NotificationDefinition}
154  *
155  * <dt>ordered-by
156  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#isUserOrdered()}
157  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode#isUserOrdered()}
158  *
159  * <dt>organization
160  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module#getOrganization()}
161  *
162  * <dt>output
163  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.RpcDefinition#getOutput()}
164  *
165  * <dt>path
166  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition#getPathStatement()}
167  *
168  * <dt>pattern
169  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.PatternConstraint}
170  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition}
171  *
172  * <dt>position
173  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit#getPosition()}
174  *
175  * <dt>prefix
176  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module#getPrefix()}
177  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ModuleImport#getPrefix()}
178  *
179  * <dt>presence
180  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode#isPresenceContainer()}
181  *
182  * <dt>range
183  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.RangeConstraint}
184  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition#getRangeConstraints()}
185  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition#getRangeConstraints()}
186  *
187  * <dt>reference
188  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.SchemaNode#getReference()}
189  *
190  * <dt>refine
191  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement}
192  *
193  * <dt>require-instance
194  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition#requireInstance()}
195  *
196  * <dt>revision
197  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module#getRevision()}
198  *
199  * <dt>revision-date
200  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ModuleImport#getRevision()}
201  *
202  * <dt>rpc
203  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.RpcDefinition}
204  *
205  * <dt>status
206  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.SchemaNode#getStatus()}
207  *
208  * <dt>submodule
209  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement}
210  *
211  * <dt>type
212  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.TypeDefinition}
213  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.LeafSchemaNode#getType()}
214  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode#getType()}
215  *
216  * <dt>typedef
217  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.TypeDefinition}
218  *
219  * <dt>unique
220  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.UniqueConstraint}
221  *
222  * <dt>units
223  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.TypeDefinition#getUnits()}
224  *
225  * <dt>uses
226  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.UsesNode}
227  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DataNodeContainer#getUses()}
228  *
229  * <dt>value
230  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair#getValue()}
231  *
232  * <dt>when
233  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#getWhenCondition()}
234  *
235  * <dt>yang-version
236  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Module#getYangVersion()}
237  *
238  * <dt>yin-element
239  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ExtensionDefinition#isYinElement()}
240  *
241  * <dt>add
242  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DeviateKind#ADD}
243  *
244  * <dt>current
245  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Status#CURRENT}
246  *
247  * <dt>delete
248  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DeviateKind#DELETE}
249  *
250  * <dt>deprecated
251  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Status#DEPRECATED}
252  *
253  * <dt>false
254  *   <dd>{@link java.lang.Boolean#FALSE}
255  *
256  * <dt>max
257  *   <dd>Not exposed
258  *
259  * <dt>min
260  *   <dd>Not exposed
261  *
262  * <dt>not-supported
263  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DeviateKind#NOT_SUPPORTED}
264  *
265  * <dt>obsolete
266  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.Status#OBSOLETE}
267  *
268  * <dt>replace
269  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.DeviateKind#REPLACE}
270  *
271  * <dt>system
272  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#isUserOrdered()}
273  *
274  * <dt>true
275  *   <dd>{@link java.lang.Boolean#TRUE}
276  *
277  * <dt>unbounded
278  *   <dd>Not exposed
279  *
280  * <dt>user
281  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#isUserOrdered()}
282  * </dl>
283  *
284  *
285  * <h3>YANG Base Type Mapping</h3>
286  *
287  *
288  * <dl>
289  * <dt>Integer built-in type
290  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition}
291  *
292  * <dt>Unsigned integer built-in type
293  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition}
294  *
295  * <dt>Decimal64 built-ib type
296  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition}
297  *
298  * <dt>Boolean built-in type
299  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition}
300  *
301  * <dt>Enumeration built-in type
302  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition}
303  *
304  * <dt>Bits Built-In Type
305  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition}
306  *
307  * <dt>The binary Built-In Type
308  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition}
309  *
310  * <dt>The leafref Built-In Type
311  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition}
312  *
313  * <dt>The identityref Built-In Type
314  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition}
315  *
316  * <dt>The empty Built-In Type
317  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition}
318  *
319  * <dt>The union Built-In Type
320  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition}
321  * <dt>The instance-identifier Built-In Type
322  *   <dd>{@link org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition}
323  *
324  * </dl>
325  */
326 package org.opendaylight.yangtools.yang.model.api;
327