Merge "Bug 2561: Parser incorrectly allows usage of union in list"
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / GroupingDefinitionImpl.java
1 package org.opendaylight.yangtools.yang.parser.builder.impl;
2
3 import com.google.common.collect.ImmutableList;
4 import java.util.List;
5 import org.opendaylight.yangtools.yang.common.QName;
6 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
7 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
8 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
9 import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDocumentedDataNodeContainer;
10
11 final class GroupingDefinitionImpl extends AbstractDocumentedDataNodeContainer implements
12 GroupingDefinition {
13     private final QName qname;
14     private final SchemaPath path;
15
16     boolean addedByUses;
17     ImmutableList<UnknownSchemaNode> unknownNodes;
18
19     GroupingDefinitionImpl(final QName qname, final SchemaPath path, final GroupingBuilderImpl builder) {
20         super(builder);
21         this.qname = qname;
22         this.path = path;
23     }
24
25     @Override
26     public QName getQName() {
27         return qname;
28     }
29
30     @Override
31     public SchemaPath getPath() {
32         return path;
33     }
34
35     @Override
36     public boolean isAddedByUses() {
37         return addedByUses;
38     }
39
40     @Override
41     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
42         return unknownNodes;
43     }
44
45     @Override
46     public int hashCode() {
47         final int prime = 31;
48         int result = 1;
49         result = prime * result + ((qname == null) ? 0 : qname.hashCode());
50         result = prime * result + ((path == null) ? 0 : path.hashCode());
51         return result;
52     }
53
54     @Override
55     public boolean equals(final Object obj) {
56         if (this == obj) {
57             return true;
58         }
59         if (obj == null) {
60             return false;
61         }
62         if (getClass() != obj.getClass()) {
63             return false;
64         }
65         final GroupingDefinitionImpl other = (GroupingDefinitionImpl) obj;
66         if (qname == null) {
67             if (other.qname != null) {
68                 return false;
69             }
70         } else if (!qname.equals(other.qname)) {
71             return false;
72         }
73         if (path == null) {
74             if (other.path != null) {
75                 return false;
76             }
77         } else if (!path.equals(other.path)) {
78             return false;
79         }
80         return true;
81     }
82
83     @Override
84     public String toString() {
85         StringBuilder sb = new StringBuilder(GroupingDefinitionImpl.class.getSimpleName());
86         sb.append("[");
87         sb.append("qname=").append(qname);
88         sb.append("]");
89         return sb.toString();
90     }
91 }