2 * Copyright (c) 2021 PANTHEON.tech, s.r.o. 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.yangtools.yang.model.ri.stmt;
10 import com.google.common.annotations.Beta;
11 import com.google.common.collect.ImmutableList;
12 import java.util.List;
14 import org.eclipse.jdt.annotation.NonNullByDefault;
15 import org.opendaylight.yangtools.yang.common.Ordering;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.common.Revision;
18 import org.opendaylight.yangtools.yang.common.Uint32;
19 import org.opendaylight.yangtools.yang.common.UnqualifiedQName;
20 import org.opendaylight.yangtools.yang.common.XMLNamespace;
21 import org.opendaylight.yangtools.yang.common.YangVersion;
22 import org.opendaylight.yangtools.yang.model.api.DeviateKind;
23 import org.opendaylight.yangtools.yang.model.api.PathExpression;
24 import org.opendaylight.yangtools.yang.model.api.Status;
25 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
26 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
27 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
28 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
29 import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement;
30 import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
31 import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement;
32 import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
33 import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
34 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
35 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
36 import org.opendaylight.yangtools.yang.model.api.stmt.ContactStatement;
37 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
38 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement;
39 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
40 import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
41 import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
42 import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
43 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorAppTagStatement;
44 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement;
45 import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
46 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
47 import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement;
48 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
49 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
50 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureExpr;
51 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
52 import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
53 import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
54 import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
55 import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement;
56 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
57 import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
58 import org.opendaylight.yangtools.yang.model.api.stmt.LengthStatement;
59 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
60 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
61 import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
62 import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
63 import org.opendaylight.yangtools.yang.model.api.stmt.ModifierStatement;
64 import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
65 import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement;
66 import org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement;
67 import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
68 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
69 import org.opendaylight.yangtools.yang.model.api.stmt.OrganizationStatement;
70 import org.opendaylight.yangtools.yang.model.api.stmt.OutputStatement;
71 import org.opendaylight.yangtools.yang.model.api.stmt.PathStatement;
72 import org.opendaylight.yangtools.yang.model.api.stmt.PatternExpression;
73 import org.opendaylight.yangtools.yang.model.api.stmt.PatternStatement;
74 import org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement;
75 import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
76 import org.opendaylight.yangtools.yang.model.api.stmt.PresenceStatement;
77 import org.opendaylight.yangtools.yang.model.api.stmt.RangeStatement;
78 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
79 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
80 import org.opendaylight.yangtools.yang.model.api.stmt.RequireInstanceStatement;
81 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
82 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
83 import org.opendaylight.yangtools.yang.model.api.stmt.RpcStatement;
84 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
85 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
86 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
87 import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement;
88 import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
89 import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
90 import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
91 import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement;
92 import org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement;
93 import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement;
94 import org.opendaylight.yangtools.yang.model.api.stmt.ValueRange;
95 import org.opendaylight.yangtools.yang.model.api.stmt.ValueStatement;
96 import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
97 import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement;
98 import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement;
99 import org.opendaylight.yangtools.yang.model.api.type.ModifierKind;
100 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.DeviateStatementImpl;
101 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.DeviationStatementImpl;
102 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyActionStatement;
103 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyAnydataStatement;
104 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyAnyxmlStatement;
105 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyArgumentStatement;
106 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyAugmentStatement;
107 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBaseStatement;
108 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBelongsToStatement;
109 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyBitStatement;
110 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyChoiceStatement;
111 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyConfigStatement;
112 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyContactStatement;
113 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyContainerStatement;
114 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyDefaultStatement;
115 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyDescriptionStatement;
116 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyEnumStatement;
117 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyErrorAppTagStatement;
118 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyErrorMessageStatement;
119 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyExtensionStatement;
120 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyFeatureStatement;
121 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyFractionDigitsStatement;
122 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyGroupingStatement;
123 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyIdentityStatement;
124 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyIfFeatureStatement;
125 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyIncludeStatement;
126 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyInputStatement;
127 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyKeyStatement;
128 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyLeafListStatement;
129 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyLeafStatement;
130 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyLengthStatement;
131 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyListStatement;
132 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyMandatoryStatement;
133 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyMaxElementsStatement;
134 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyMinElementsStatement;
135 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyModifierStatement;
136 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyMustStatement;
137 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyNamespaceStatement;
138 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyNotificationStatement;
139 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyOrderedByStatement;
140 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyOrganizationStatement;
141 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyOutputStatement;
142 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyPathStatement;
143 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyPatternStatement;
144 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyPositionStatement;
145 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyPrefixStatement;
146 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyPresenceStatement;
147 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyRangeStatement;
148 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyReferenceStatement;
149 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyRequireInstanceStatement;
150 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyRevisionDateStatement;
151 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyRevisionStatement;
152 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyRpcStatement;
153 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyStatusStatement;
154 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyTypeStatement;
155 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyTypedefStatement;
156 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUniqueStatement;
157 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUnitsStatement;
158 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyUsesStatement;
159 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyValueStatement;
160 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyWhenStatement;
161 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyYangVersionStatement;
162 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.EmptyYinElementStatement;
163 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.ImportStatementImpl;
164 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.ModuleStatementImpl;
165 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RefineStatementImpl;
166 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularActionStatement;
167 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularAnydataStatement;
168 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularAnyxmlStatement;
169 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularArgumentStatement;
170 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularAugmentStatement;
171 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBaseStatement;
172 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBelongsToStatement;
173 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularBitStatement;
174 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularChoiceStatement;
175 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularConfigStatement;
176 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularContactStatement;
177 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularContainerStatement;
178 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularDefaultStatement;
179 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularDescriptionStatement;
180 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularEnumStatement;
181 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularErrorAppTagStatement;
182 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularErrorMessageStatement;
183 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularExtensionStatement;
184 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularFeatureStatement;
185 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularFractionDigitsStatement;
186 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularGroupingStatement;
187 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularIdentityStatement;
188 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularIfFeatureStatement;
189 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularIncludeStatement;
190 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularInputStatement;
191 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularKeyStatement;
192 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularLeafListStatement;
193 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularLeafStatement;
194 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularLengthStatement;
195 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularListStatement;
196 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularMandatoryStatement;
197 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularMaxElementsStatement;
198 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularMinElementsStatement;
199 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularModifierStatement;
200 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularMustStatement;
201 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularNamespaceStatement;
202 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularNotificationStatement;
203 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularOrderedByStatement;
204 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularOrganizationStatement;
205 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularOutputStatement;
206 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularPathStatement;
207 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularPatternStatement;
208 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularPositionStatement;
209 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularPrefixStatement;
210 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularPresenceStatement;
211 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularRangeStatement;
212 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularReferenceStatement;
213 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularRequireInstanceStatement;
214 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularRevisionDateStatement;
215 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularRevisionStatement;
216 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularRpcStatement;
217 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularStatusStatement;
218 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularTypeStatement;
219 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularTypedefStatement;
220 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUniqueStatement;
221 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUnitsStatement;
222 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularUsesStatement;
223 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularValueStatement;
224 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularWhenStatement;
225 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularYangVersionStatement;
226 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.RegularYinElementStatement;
227 import org.opendaylight.yangtools.yang.model.ri.stmt.impl.decl.SubmoduleStatementImpl;
228 import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBound;
231 * Static entry point to instantiating {@link DeclaredStatement} covered in the {@code RFC7950} metamodel.
235 public final class DeclaredStatements {
236 private DeclaredStatements() {
240 public static ActionStatement createAction(final QName argument,
241 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
242 return substatements.isEmpty() ? new EmptyActionStatement(argument)
243 : new RegularActionStatement(argument, substatements);
246 public static AnydataStatement createAnydata(final QName argument,
247 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
248 return substatements.isEmpty() ? new EmptyAnydataStatement(argument)
249 : new RegularAnydataStatement(argument, substatements);
252 public static AnyxmlStatement createAnyxml(final QName argument,
253 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
254 return substatements.isEmpty() ? new EmptyAnyxmlStatement(argument)
255 : new RegularAnyxmlStatement(argument, substatements);
258 public static ArgumentStatement createArgument(final QName argument,
259 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
260 return substatements.isEmpty() ? new EmptyArgumentStatement(argument)
261 : new RegularArgumentStatement(argument, substatements);
264 public static AugmentStatement createAugment(final String rawArgument, final SchemaNodeIdentifier argument,
265 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
266 return substatements.isEmpty() ? new EmptyAugmentStatement(rawArgument, argument)
267 : new RegularAugmentStatement(rawArgument, argument, substatements);
270 public static BaseStatement createBase(final QName argument,
271 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
272 return substatements.isEmpty() ? new EmptyBaseStatement(argument)
273 : new RegularBaseStatement(argument, substatements);
276 public static BelongsToStatement createBelongsTo(final String argument,
277 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
278 return substatements.isEmpty() ? new EmptyBelongsToStatement(argument)
279 : new RegularBelongsToStatement(argument, substatements);
282 public static BitStatement createBit(final String argument,
283 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
284 return substatements.isEmpty() ? new EmptyBitStatement(argument)
285 : new RegularBitStatement(argument, substatements);
288 public static ChoiceStatement createChoice(final QName argument,
289 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
290 return substatements.isEmpty() ? new EmptyChoiceStatement(argument)
291 : new RegularChoiceStatement(argument, substatements);
294 public static ConfigStatement createConfig(final boolean argument) {
295 return argument ? EmptyConfigStatement.TRUE : EmptyConfigStatement.FALSE;
298 public static ConfigStatement createConfig(final Boolean argument,
299 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
300 return substatements.isEmpty() ? createConfig(argument) : new RegularConfigStatement(argument, substatements);
303 public static ContactStatement createContact(final String argument) {
304 return new EmptyContactStatement(argument);
307 public static ContactStatement createContact(final String argument,
308 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
309 return substatements.isEmpty() ? createContact(argument) : new RegularContactStatement(argument, substatements);
312 public static ContainerStatement createContainer(final QName argument,
313 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
314 return substatements.isEmpty() ? new EmptyContainerStatement(argument)
315 : new RegularContainerStatement(argument, substatements);
318 public static DefaultStatement createDefault(final String argument,
319 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
320 return substatements.isEmpty() ? new EmptyDefaultStatement(argument)
321 : new RegularDefaultStatement(argument, substatements);
324 public static DescriptionStatement createDescription(final String argument,
325 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
326 return substatements.isEmpty() ? new EmptyDescriptionStatement(argument)
327 : new RegularDescriptionStatement(argument, substatements);
330 public static DeviateStatement createDeviate(final DeviateKind argument,
331 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
332 return new DeviateStatementImpl(argument, substatements);
335 public static DeviationStatement createDeviation(final String rawArgument, final Absolute argument,
336 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
337 return new DeviationStatementImpl(rawArgument, argument, substatements);
340 // FIXME: what is the distinction between rawArgument and argument?
341 public static EnumStatement createEnum(final String rawArgument, final String argument,
342 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
343 return substatements.isEmpty() ? new EmptyEnumStatement(rawArgument, argument)
344 : new RegularEnumStatement(rawArgument, argument, substatements);
347 public static ErrorAppTagStatement createErrorAppTag(final String argument,
348 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
349 return substatements.isEmpty() ? new EmptyErrorAppTagStatement(argument)
350 : new RegularErrorAppTagStatement(argument, substatements);
353 public static ErrorMessageStatement createErrorMessage(final String argument,
354 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
355 return substatements.isEmpty() ? new EmptyErrorMessageStatement(argument)
356 : new RegularErrorMessageStatement(argument, substatements);
359 public static ExtensionStatement createExtension(final QName argument,
360 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
361 return substatements.isEmpty() ? new EmptyExtensionStatement(argument)
362 : new RegularExtensionStatement(argument, substatements);
365 public static FeatureStatement createFeature(final QName argument,
366 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
367 return substatements.isEmpty() ? new EmptyFeatureStatement(argument)
368 : new RegularFeatureStatement(argument, substatements);
371 public static FractionDigitsStatement createFractionDigits(final int argument) {
372 return EmptyFractionDigitsStatement.of(argument);
375 public static FractionDigitsStatement createFractionDigits(final Integer argument,
376 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
377 return substatements.isEmpty() ? createFractionDigits(argument)
378 : new RegularFractionDigitsStatement(argument, substatements);
381 public static GroupingStatement createGrouping(final QName argument,
382 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
383 return substatements.isEmpty() ? new EmptyGroupingStatement(argument)
384 : new RegularGroupingStatement(argument, substatements);
387 public static IdentityStatement createIdentity(final QName argument,
388 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
389 return substatements.isEmpty() ? new EmptyIdentityStatement(argument)
390 : new RegularIdentityStatement(argument, substatements);
393 public static IfFeatureStatement createIfFeature(final String rawArgument, final IfFeatureExpr argument,
394 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
395 return substatements.isEmpty() ? new EmptyIfFeatureStatement(rawArgument, argument)
396 : new RegularIfFeatureStatement(rawArgument, argument, substatements);
399 public static ImportStatement createImport(final String argument,
400 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
401 return new ImportStatementImpl(argument, substatements);
404 public static IncludeStatement createInclude(final String rawArgument, final String argument,
405 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
406 return substatements.isEmpty() ? new EmptyIncludeStatement(rawArgument, argument)
407 : new RegularIncludeStatement(rawArgument, argument, substatements);
410 public static InputStatement createInput(final QName argument) {
411 return new EmptyInputStatement(argument);
414 public static InputStatement createInput(final QName argument,
415 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
416 return substatements.isEmpty() ? createInput(argument) : new RegularInputStatement(argument, substatements);
419 public static KeyStatement createKey(final String rawArgument, final Set<QName> argument,
420 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
421 return substatements.isEmpty() ? new EmptyKeyStatement(rawArgument, argument)
422 : new RegularKeyStatement(rawArgument, argument, substatements);
425 public static LeafStatement createLeaf(final QName argument,
426 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
427 return substatements.isEmpty() ? new EmptyLeafStatement(argument)
428 : new RegularLeafStatement(argument, substatements);
431 public static LeafListStatement createLeafList(final QName argument,
432 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
433 return substatements.isEmpty() ? new EmptyLeafListStatement(argument)
434 : new RegularLeafListStatement(argument, substatements);
437 public static LengthStatement createLength(final String rawArgument, final List<ValueRange> argument,
438 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
439 return substatements.isEmpty() ? new EmptyLengthStatement(rawArgument, argument)
440 : new RegularLengthStatement(rawArgument, argument, substatements);
443 public static ListStatement createList(final QName argument,
444 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
445 return substatements.isEmpty() ? new EmptyListStatement(argument)
446 : new RegularListStatement(argument, substatements);
449 public static MandatoryStatement createMandatory(final Boolean argument) {
450 return new EmptyMandatoryStatement(argument);
453 public static MandatoryStatement createMandatory(final Boolean argument,
454 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
455 return substatements.isEmpty() ? createMandatory(argument)
456 : new RegularMandatoryStatement(argument, substatements);
459 public static MaxElementsStatement createMaxElements(final String rawArgument, final String argument,
460 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
461 return substatements.isEmpty() ? new EmptyMaxElementsStatement(rawArgument, argument)
462 : new RegularMaxElementsStatement(rawArgument, argument, substatements);
465 public static MinElementsStatement createMinElements(final Integer argument) {
466 return new EmptyMinElementsStatement(argument);
469 public static MinElementsStatement createMinElements(final Integer argument,
470 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
471 return substatements.isEmpty() ? createMinElements(argument)
472 : new RegularMinElementsStatement(argument, substatements);
475 public static ModifierStatement createModifier(final ModifierKind argument,
476 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
477 return substatements.isEmpty() ? new EmptyModifierStatement(argument)
478 : new RegularModifierStatement(argument, substatements);
481 public static ModuleStatement createModule(final String rawArgument, final UnqualifiedQName argument,
482 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
483 return new ModuleStatementImpl(rawArgument, argument, substatements);
486 public static MustStatement createMust(final String rawArgument, final QualifiedBound argument,
487 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
488 return substatements.isEmpty() ? new EmptyMustStatement(rawArgument, argument)
489 : new RegularMustStatement(rawArgument, argument, substatements);
492 public static NamespaceStatement createNamespace(final XMLNamespace argument,
493 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
494 return substatements.isEmpty() ? new EmptyNamespaceStatement(argument)
495 : new RegularNamespaceStatement(argument, substatements);
498 public static NotificationStatement createNotification(final QName argument,
499 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
500 return substatements.isEmpty() ? new EmptyNotificationStatement(argument)
501 : new RegularNotificationStatement(argument, substatements);
504 public static OrganizationStatement createOrganization(final String argument) {
505 return new EmptyOrganizationStatement(argument);
508 public static OrganizationStatement createOrganization(final String argument,
509 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
510 return substatements.isEmpty() ? createOrganization(argument)
511 : new RegularOrganizationStatement(argument, substatements);
514 public static OutputStatement createOutput(final QName argument) {
515 return new EmptyOutputStatement(argument);
518 public static OutputStatement createOutput(final QName argument,
519 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
520 return substatements.isEmpty() ? createOutput(argument) : new RegularOutputStatement(argument, substatements);
523 public static OrderedByStatement createOrderedBy(final Ordering argument) {
524 return new EmptyOrderedByStatement(argument);
527 public static OrderedByStatement createOrderedBy(final Ordering argument,
528 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
529 return substatements.isEmpty() ? createOrderedBy(argument)
530 : new RegularOrderedByStatement(argument, substatements);
533 public static PathStatement createPath(final PathExpression argument,
534 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
535 return substatements.isEmpty() ? new EmptyPathStatement(argument)
536 : new RegularPathStatement(argument, substatements);
539 public static PatternStatement createPattern(final PatternExpression argument,
540 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
541 return substatements.isEmpty() ? new EmptyPatternStatement(argument)
542 : new RegularPatternStatement(argument, substatements);
545 public static PositionStatement createPosition(final Uint32 argument,
546 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
547 return substatements.isEmpty() ? new EmptyPositionStatement(argument)
548 : new RegularPositionStatement(argument, substatements);
551 public static PrefixStatement createPrefix(final String argument,
552 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
553 return substatements.isEmpty() ? new EmptyPrefixStatement(argument)
554 : new RegularPrefixStatement(argument, substatements);
557 public static PresenceStatement createPresence(final String argument,
558 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
559 return substatements.isEmpty() ? new EmptyPresenceStatement(argument)
560 : new RegularPresenceStatement(argument, substatements);
563 public static ReferenceStatement createReference(final String argument) {
564 return new EmptyReferenceStatement(argument);
567 public static ReferenceStatement createReference(final String argument,
568 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
569 return substatements.isEmpty() ? createReference(argument)
570 : new RegularReferenceStatement(argument, substatements);
573 public static RangeStatement createRange(final String rawArgument, final List<ValueRange> argument,
574 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
575 return substatements.isEmpty() ? new EmptyRangeStatement(rawArgument, argument)
576 : new RegularRangeStatement(rawArgument, argument, substatements);
579 public static RefineStatement createRefine(final String rawArgument, final Descendant argument,
580 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
581 return new RefineStatementImpl(rawArgument, argument, substatements);
584 public static RequireInstanceStatement createRequireInstance(final Boolean argument,
585 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
586 if (substatements.isEmpty()) {
587 return argument ? EmptyRequireInstanceStatement.TRUE : EmptyRequireInstanceStatement.FALSE;
589 return new RegularRequireInstanceStatement(argument, substatements);
592 public static RevisionStatement createRevision(final Revision argument,
593 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
594 return substatements.isEmpty() ? new EmptyRevisionStatement(argument)
595 : new RegularRevisionStatement(argument, substatements);
598 public static RevisionDateStatement createRevisionDate(final Revision argument,
599 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
600 return substatements.isEmpty() ? new EmptyRevisionDateStatement(argument)
601 : new RegularRevisionDateStatement(argument, substatements);
604 public static RpcStatement createRpc(final QName argument,
605 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
606 return substatements.isEmpty() ? new EmptyRpcStatement(argument)
607 : new RegularRpcStatement(argument, substatements);
610 public static StatusStatement createStatus(final Status argument,
611 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
612 return substatements.isEmpty() ? createStatus(argument) : new RegularStatusStatement(argument, substatements);
615 private static StatusStatement createStatus(final Status argument) {
618 return EmptyStatusStatement.CURRENT;
620 return EmptyStatusStatement.DEPRECATED;
622 return EmptyStatusStatement.OBSOLETE;
624 throw new IllegalStateException("Unhandled argument " + argument);
628 public static SubmoduleStatement createSubmodule(final String rawArgument, final UnqualifiedQName argument,
629 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
630 return new SubmoduleStatementImpl(rawArgument, argument, substatements);
633 public static TypeStatement createType(final String argument,
634 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
635 return substatements.isEmpty() ? new EmptyTypeStatement(argument)
636 : new RegularTypeStatement(argument, substatements);
639 public static TypedefStatement createTypedef(final QName argument,
640 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
641 return substatements.isEmpty() ? new EmptyTypedefStatement(argument)
642 : new RegularTypedefStatement(argument, substatements);
645 public static UniqueStatement createUnique(final String rawArgument, final Set<Descendant> argument,
646 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
647 return substatements.isEmpty() ? new EmptyUniqueStatement(rawArgument, argument)
648 : new RegularUniqueStatement(rawArgument, argument, substatements);
651 public static UnitsStatement createUnits(final String argument,
652 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
653 return substatements.isEmpty() ? new EmptyUnitsStatement(argument)
654 : new RegularUnitsStatement(argument, substatements);
657 public static UsesStatement createUses(final String rawArgument, final QName argument,
658 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
659 return substatements.isEmpty() ? new EmptyUsesStatement(rawArgument, argument)
660 : new RegularUsesStatement(rawArgument, argument, substatements);
663 public static ValueStatement createValue(final Integer argument) {
664 return new EmptyValueStatement(argument);
667 public static ValueStatement createValue(final Integer argument,
668 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
669 return substatements.isEmpty() ? createValue(argument) : new RegularValueStatement(argument, substatements);
672 public static WhenStatement createWhen(final String rawArgument, final QualifiedBound argument,
673 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
674 return substatements.isEmpty() ? new EmptyWhenStatement(rawArgument, argument)
675 : new RegularWhenStatement(rawArgument, argument, substatements);
678 public static YangVersionStatement createYangVersion(final YangVersion argument,
679 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
680 return substatements.isEmpty() ? createYangVersion(argument)
681 : new RegularYangVersionStatement(argument, substatements);
684 private static YangVersionStatement createYangVersion(final YangVersion argument) {
687 return EmptyYangVersionStatement.VERSION_1;
689 return EmptyYangVersionStatement.VERSION_1_1;
691 throw new IllegalStateException("Unhandled version " + argument);
695 public static YinElementStatement createYinElement(final boolean argument) {
696 return argument ? EmptyYinElementStatement.TRUE : EmptyYinElementStatement.FALSE;
699 public static YinElementStatement createYinElement(final Boolean argument,
700 final ImmutableList<? extends DeclaredStatement<?>> substatements) {
701 return substatements.isEmpty() ? createYinElement(argument)
702 : new RegularYinElementStatement(argument, substatements);