Redirect Builders through ImmutableNodes' builder factory
[yangtools.git] / data / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / Builders.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 package org.opendaylight.yangtools.yang.data.impl.schema;
9
10 import javax.xml.transform.dom.DOMSource;
11 import org.eclipse.jdt.annotation.NonNull;
12 import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode;
13 import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode;
14 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
15 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
16 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
17 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
18 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
19 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode.BuilderFactory;
20 import org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode;
22 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
23 import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
24 import org.opendaylight.yangtools.yang.data.api.schema.UserLeafSetNode;
25 import org.opendaylight.yangtools.yang.data.api.schema.UserMapNode;
26
27 public final class Builders {
28     private static final BuilderFactory BUILDER_FACTORY = ImmutableNodes.builderFactory();
29
30     private Builders() {
31         // Hidden on purpose
32     }
33
34     public static <T> LeafNode.@NonNull Builder<T> leafBuilder() {
35         return BUILDER_FACTORY.newLeafBuilder();
36     }
37
38     public static <T> LeafSetEntryNode.@NonNull Builder<T> leafSetEntryBuilder() {
39         return BUILDER_FACTORY.newLeafSetEntryBuilder();
40     }
41
42     public static AnyxmlNode.@NonNull Builder<DOMSource, AnyxmlNode<DOMSource>> anyXmlBuilder() {
43         return BUILDER_FACTORY.newAnyxmlBuilder(DOMSource.class);
44     }
45
46     public static <T> AnydataNode.@NonNull Builder<T> anydataBuilder(final Class<T> objectModel) {
47         return BUILDER_FACTORY.newAnydataBuilder(objectModel);
48     }
49
50     public static <T> UserLeafSetNode.@NonNull Builder<T> orderedLeafSetBuilder() {
51         return BUILDER_FACTORY.newUserLeafSetBuilder();
52     }
53
54     public static <T> UserLeafSetNode.@NonNull Builder<T> orderedLeafSetBuilder(final UserLeafSetNode<T> node) {
55         return BUILDER_FACTORY.newUserLeafSetBuilder(node);
56     }
57
58     public static <T> SystemLeafSetNode.@NonNull Builder<T> leafSetBuilder() {
59         return BUILDER_FACTORY.newSystemLeafSetBuilder();
60     }
61
62     public static <T> SystemLeafSetNode.@NonNull Builder<T> leafSetBuilder(final int sizeHint) {
63         return BUILDER_FACTORY.newSystemLeafSetBuilder(sizeHint);
64     }
65
66     public static <T> SystemLeafSetNode.@NonNull Builder<T> leafSetBuilder(final SystemLeafSetNode<T> node) {
67         return BUILDER_FACTORY.newSystemLeafSetBuilder(node);
68     }
69
70     public static ContainerNode.@NonNull Builder containerBuilder() {
71         return BUILDER_FACTORY.newContainerBuilder();
72     }
73
74     public static ContainerNode.@NonNull Builder containerBuilder(final int sizeHint) {
75         return BUILDER_FACTORY.newContainerBuilder(sizeHint);
76     }
77
78     public static ContainerNode.@NonNull Builder containerBuilder(final ContainerNode node) {
79         return BUILDER_FACTORY.newContainerBuilder(node);
80     }
81
82     public static MapEntryNode.@NonNull Builder mapEntryBuilder() {
83         return BUILDER_FACTORY.newMapEntryBuilder();
84     }
85
86     public static MapEntryNode.@NonNull Builder mapEntryBuilder(final int sizeHint) {
87         return BUILDER_FACTORY.newMapEntryBuilder(sizeHint);
88     }
89
90     public static MapEntryNode.@NonNull Builder mapEntryBuilder(final MapEntryNode mapEntryNode) {
91         return BUILDER_FACTORY.newMapEntryBuilder(mapEntryNode);
92     }
93
94     public static UserMapNode.@NonNull Builder orderedMapBuilder() {
95         return BUILDER_FACTORY.newUserMapBuilder();
96     }
97
98     public static UserMapNode.@NonNull Builder orderedMapBuilder(final int sizeHint) {
99         return BUILDER_FACTORY.newUserMapBuilder(sizeHint);
100     }
101
102     public static UnkeyedListNode.@NonNull Builder unkeyedListBuilder() {
103         return BUILDER_FACTORY.newUnkeyedListBuilder();
104     }
105
106     public static UnkeyedListNode.@NonNull Builder unkeyedListBuilder(final int sizeHint) {
107         return BUILDER_FACTORY.newUnkeyedListBuilder(sizeHint);
108     }
109
110     public static SystemMapNode.@NonNull Builder mapBuilder() {
111         return BUILDER_FACTORY.newSystemMapBuilder();
112     }
113
114     public static SystemMapNode.@NonNull Builder mapBuilder(final int sizeHint) {
115         return BUILDER_FACTORY.newSystemMapBuilder(sizeHint);
116     }
117
118     public static SystemMapNode.@NonNull Builder mapBuilder(final SystemMapNode node) {
119         return BUILDER_FACTORY.newSystemMapBuilder(node);
120     }
121
122     public static ChoiceNode.@NonNull Builder choiceBuilder() {
123         return BUILDER_FACTORY.newChoiceBuilder();
124     }
125
126     public static ChoiceNode.@NonNull Builder choiceBuilder(final int sizeHint) {
127         return BUILDER_FACTORY.newChoiceBuilder(sizeHint);
128     }
129
130     public static UnkeyedListEntryNode.@NonNull Builder unkeyedListEntryBuilder() {
131         return BUILDER_FACTORY.newUnkeyedListEntryBuilder();
132     }
133
134     public static UnkeyedListEntryNode.@NonNull Builder unkeyedListEntryBuilder(final int sizeHint) {
135         return BUILDER_FACTORY.newUnkeyedListEntryBuilder(sizeHint);
136     }
137 }