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.List;
13 import java.util.Objects;
14 import org.opendaylight.yangtools.yang.common.QName;
15 import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
16 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
17 import org.opendaylight.yangtools.yang.model.api.Status;
18 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
19 import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder;
20 import org.opendaylight.yangtools.yang.parser.builder.util.AbstractSchemaNodeBuilder;
22 public final class FeatureBuilder extends AbstractSchemaNodeBuilder {
23 private FeatureDefinitionImpl instance;
25 FeatureBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path) {
26 super(moduleName, line, qname);
27 this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null");
31 public FeatureDefinitionImpl build() {
32 if (instance != null) {
36 instance = new FeatureDefinitionImpl(qname, schemaPath);
39 for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
40 unknownNodes.add(b.build());
42 instance.unknownNodes = ImmutableList.copyOf(unknownNodes);
48 public String toString() {
49 return "feature " + qname.getLocalName();
52 private static final class FeatureDefinitionImpl implements FeatureDefinition {
53 private final QName qname;
54 private final SchemaPath path;
55 private String description;
56 private String reference;
57 private Status status;
58 private ImmutableList<UnknownSchemaNode> unknownNodes;
60 private FeatureDefinitionImpl(final QName qname, final SchemaPath path) {
66 public QName getQName() {
71 public SchemaPath getPath() {
76 public String getDescription() {
81 public String getReference() {
86 public Status getStatus() {
91 public List<UnknownSchemaNode> getUnknownSchemaNodes() {
96 public int hashCode() {
99 result = prime * result + Objects.hashCode(qname);
100 result = prime * result + Objects.hashCode(path);
105 public boolean equals(final Object obj) {
112 if (getClass() != obj.getClass()) {
115 FeatureDefinitionImpl other = (FeatureDefinitionImpl) obj;
117 if (other.qname != null) {
120 } else if (!qname.equals(other.qname)) {
124 if (other.path != null) {
127 } else if (!path.equals(other.path)) {
134 public String toString() {
135 StringBuilder sb = new StringBuilder(FeatureDefinitionImpl.class.getSimpleName());
136 sb.append("[name=").append(qname).append("]");
137 return sb.toString();