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.LeafSchemaNode;
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;
22 import org.opendaylight.yangtools.yang.parser.util.YangParseException;
25 * @deprecated Pre-Beryllium implementation, scheduled for removal.
28 public final class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements DataSchemaNodeBuilder {
29 private LeafSchemaNodeImpl instance;
30 private String defaultStr;
31 private String unitsStr;
33 private SchemaPath schemaPath;
34 private String description;
35 private String reference;
36 private Status status = Status.CURRENT;
37 // DataSchemaNode args
38 private boolean augmenting;
39 private boolean addedByUses;
40 private LeafSchemaNode originalNode;
41 private LeafSchemaNodeBuilder originalBuilder;
42 private boolean configuration;
43 private final ConstraintsBuilder constraints;
45 public LeafSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath schemaPath) {
46 super(moduleName, line, qname);
47 this.schemaPath = Preconditions.checkNotNull(schemaPath, "Schema Path must not be null");
48 constraints = new ConstraintsBuilderImpl(moduleName, line);
51 public LeafSchemaNodeBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final LeafSchemaNode base) {
52 super(moduleName, line, qname);
53 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
54 constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints());
56 description = base.getDescription();
57 reference = base.getReference();
58 status = base.getStatus();
59 augmenting = base.isAugmenting();
60 addedByUses = base.isAddedByUses();
62 configuration = base.isConfiguration();
63 this.type = base.getType();
64 unknownNodes.addAll(base.getUnknownSchemaNodes());
66 defaultStr = base.getDefault();
67 unitsStr = base.getUnits();
71 public LeafSchemaNode build() {
72 if (instance != null) {
76 instance = new LeafSchemaNodeImpl(qname, schemaPath);
78 instance.description = description;
79 instance.reference = reference;
80 instance.status = status;
81 instance.augmenting = augmenting;
82 instance.addedByUses = addedByUses;
83 instance.configuration = configuration;
84 instance.constraintsDef = constraints.build();
85 instance.defaultStr = defaultStr;
86 instance.unitsStr = unitsStr;
88 if (type == null && typedef == null) {
89 throw new YangParseException(getModuleName(), getLine(), "Failed to resolve leaf type.");
94 instance.type = typedef.build();
100 if (originalNode == null && originalBuilder != null) {
101 originalNode = originalBuilder.build();
103 instance.original = originalNode;
106 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
107 unknownNodes.add(b.build());
109 instance.unknownNodes = ImmutableList.copyOf(unknownNodes);
115 public SchemaPath getPath() {
120 public void setPath(final SchemaPath path) {
121 this.schemaPath = path;
125 public ConstraintsBuilder getConstraints() {
130 public String getDescription() {
135 public void setDescription(final String description) {
136 this.description = description;
140 public String getReference() {
145 public void setReference(final String reference) {
146 this.reference = reference;
150 public Status getStatus() {
155 public void setStatus(final Status status) {
156 this.status = Preconditions.checkNotNull(status, "status cannot be null");
160 public boolean isAugmenting() {
165 public void setAugmenting(final boolean augmenting) {
166 this.augmenting = augmenting;
170 public boolean isAddedByUses() {
175 public void setAddedByUses(final boolean addedByUses) {
176 this.addedByUses = addedByUses;
180 public LeafSchemaNodeBuilder getOriginal() {
181 return originalBuilder;
185 public void setOriginal(final SchemaNodeBuilder builder) {
186 Preconditions.checkArgument(builder instanceof LeafSchemaNodeBuilder, "Original of leaf cannot be " + builder);
187 this.originalBuilder = (LeafSchemaNodeBuilder) builder;
191 public boolean isConfiguration() {
192 return configuration;
196 public void setConfiguration(final boolean configuration) {
197 this.configuration = configuration;
200 public String getDefaultStr() {
204 public void setDefaultStr(final String defaultStr) {
205 this.defaultStr = defaultStr;
208 public String getUnits() {
212 public void setUnits(final String unitsStr) {
213 this.unitsStr = unitsStr;
217 public int hashCode() {
218 final int prime = 31;
220 result = prime * result + Objects.hashCode(schemaPath);
225 public boolean equals(final Object obj) {
232 if (getClass() != obj.getClass()) {
235 LeafSchemaNodeBuilder other = (LeafSchemaNodeBuilder) obj;
236 if (schemaPath == null) {
237 if (other.schemaPath != null) {
240 } else if (!schemaPath.equals(other.schemaPath)) {
243 if (getParent() == null) {
244 if (other.getParent() != null) {
247 } else if (!getParent().equals(other.getParent())) {
254 public String toString() {
255 return "leaf " + qname.getLocalName();