2 * Copyright (c) 2013 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.yangtools.yang.parser.builder.impl;
10 import com.google.common.base.Preconditions;
11 import com.google.common.collect.ImmutableList;
12 import java.util.Objects;
13 import org.opendaylight.yangtools.yang.common.QName;
14 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
15 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
16 import org.opendaylight.yangtools.yang.model.api.Status;
17 import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder;
18 import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder;
19 import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder;
20 import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
21 import org.opendaylight.yangtools.yang.parser.builder.util.AbstractTypeAwareBuilder;
24 * @deprecated Pre-Beryllium implementation, scheduled for removal.
27 public final class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder implements DataSchemaNodeBuilder {
28 private LeafListSchemaNodeImpl instance;
29 private boolean userOrdered;
31 private SchemaPath schemaPath;
32 private String description;
33 private String reference;
34 private Status status = Status.CURRENT;
35 // DataSchemaNode args
36 private boolean augmenting;
37 private boolean addedByUses;
38 private LeafListSchemaNode originalNode;
39 private LeafListSchemaNodeBuilder originalBuilder;
40 private boolean configuration;
41 private final ConstraintsBuilder constraints;
43 public LeafListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) {
44 super(moduleName, line, qname);
45 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
46 constraints = new ConstraintsBuilderImpl(moduleName, line);
49 public LeafListSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path,
50 final LeafListSchemaNode base) {
51 super(moduleName, line, qname);
52 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
53 constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints());
55 description = base.getDescription();
56 reference = base.getReference();
57 status = base.getStatus();
58 augmenting = base.isAugmenting();
59 addedByUses = base.isAddedByUses();
61 configuration = base.isConfiguration();
62 this.type = base.getType();
63 userOrdered = base.isUserOrdered();
64 unknownNodes.addAll(base.getUnknownSchemaNodes());
68 public LeafListSchemaNode build() {
69 if (instance != null) {
73 instance = new LeafListSchemaNodeImpl(qname, schemaPath);
75 instance.description = description;
76 instance.reference = reference;
77 instance.status = status;
78 instance.augmenting = augmenting;
79 instance.addedByUses = addedByUses;
80 instance.configuration = configuration;
81 instance.constraintsDef = constraints.build();
82 instance.userOrdered = userOrdered;
85 instance.type = typedef.build();
91 if (originalNode == null && originalBuilder != null) {
92 originalNode = originalBuilder.build();
94 instance.original = originalNode;
97 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
98 unknownNodes.add(b.build());
100 instance.unknownNodes = ImmutableList.copyOf(unknownNodes);
106 public SchemaPath getPath() {
111 public void setPath(final SchemaPath path) {
112 this.schemaPath = path;
116 public String getDescription() {
121 public void setDescription(final String description) {
122 this.description = description;
126 public String getReference() {
131 public void setReference(final String reference) {
132 this.reference = reference;
136 public Status getStatus() {
141 public void setStatus(final Status status) {
142 this.status = Preconditions.checkNotNull(status, "status cannot be null");
146 public boolean isAugmenting() {
151 public void setAugmenting(final boolean augmenting) {
152 this.augmenting = augmenting;
156 public boolean isAddedByUses() {
161 public void setAddedByUses(final boolean addedByUses) {
162 this.addedByUses = addedByUses;
166 public LeafListSchemaNodeBuilder getOriginal() {
167 return originalBuilder;
171 public void setOriginal(final SchemaNodeBuilder builder) {
172 Preconditions.checkArgument(builder instanceof LeafListSchemaNodeBuilder, "Original of leaf-list cannot be "
174 this.originalBuilder = (LeafListSchemaNodeBuilder) builder;
178 public boolean isConfiguration() {
179 return configuration;
183 public void setConfiguration(final boolean configuration) {
184 this.configuration = configuration;
188 public ConstraintsBuilder getConstraints() {
192 public boolean isUserOrdered() {
196 public void setUserOrdered(final boolean userOrdered) {
197 this.userOrdered = userOrdered;
201 public int hashCode() {
202 final int prime = 31;
204 result = prime * result + Objects.hashCode(schemaPath);
209 public boolean equals(final Object obj) {
216 if (getClass() != obj.getClass()) {
219 LeafListSchemaNodeBuilder other = (LeafListSchemaNodeBuilder) obj;
220 if (schemaPath == null) {
221 if (other.schemaPath != null) {
224 } else if (!schemaPath.equals(other.schemaPath)) {
227 if (getParent() == null) {
228 if (other.getParent() != null) {
231 } else if (!getParent().equals(other.getParent())) {
238 public String toString() {
239 return "leaf-list " + qname.getLocalName();