import org.opendaylight.controller.yang.model.api.SchemaPath;\r
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;\r
import org.opendaylight.controller.yang.model.api.UsesNode;\r
+import org.opendaylight.controller.yang.parser.builder.api.AbstractBuilder;\r
import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.api.Builder;\r
import org.opendaylight.controller.yang.parser.builder.api.DataNodeContainerBuilder;\r
import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;\r
import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;\r
import org.opendaylight.controller.yang.parser.util.RefineHolder;\r
+import org.opendaylight.controller.yang.parser.util.YangParseException;\r
\r
-public final class UsesNodeBuilderImpl implements UsesNodeBuilder {\r
+public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNodeBuilder {\r
private boolean isBuilt;\r
private UsesNodeImpl instance;\r
- private final int line;\r
- private final DataNodeContainerBuilder parent;\r
+ private DataNodeContainerBuilder parent;\r
private final String groupingName;\r
private SchemaPath groupingPath;\r
private boolean augmenting;\r
private final Set<AugmentationSchemaBuilder> addedAugments = new HashSet<AugmentationSchemaBuilder>();\r
private final List<SchemaNodeBuilder> refineBuilders = new ArrayList<SchemaNodeBuilder>();\r
private final List<RefineHolder> refines = new ArrayList<RefineHolder>();\r
- private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();\r
\r
- public UsesNodeBuilderImpl(final String groupingName, final int line, final DataNodeContainerBuilder parent) {\r
+ public UsesNodeBuilderImpl(final String moduleName, final int line, final String groupingName) {\r
+ super(moduleName, line);\r
this.groupingName = groupingName;\r
- this.line = line;\r
- this.parent = parent;\r
}\r
\r
public UsesNodeBuilderImpl(UsesNodeBuilder b) {\r
+ super(b.getModuleName(), b.getLine());\r
groupingName = b.getGroupingName();\r
- line = b.getLine();\r
parent = b.getParent();\r
groupingPath = b.getGroupingPath();\r
augmenting = b.isAugmenting();\r
}\r
\r
@Override\r
- public int getLine() {\r
- return line;\r
+ public DataNodeContainerBuilder getParent() {\r
+ return parent;\r
}\r
\r
@Override\r
- public DataNodeContainerBuilder getParent() {\r
- return parent;\r
+ public void setParent(Builder parent) {\r
+ if (!(parent instanceof DataNodeContainerBuilder)) {\r
+ throw new YangParseException(moduleName, line, "Unresolved parent of uses '" + groupingName + "'.");\r
+ }\r
+ this.parent = (DataNodeContainerBuilder) parent;\r
}\r
\r
@Override\r
refines.add(refine);\r
}\r
\r
- public List<UnknownSchemaNodeBuilder> getUnknownNodes() {\r
- return addedUnknownNodes;\r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ result = prime * result + ((groupingName == null) ? 0 : groupingName.hashCode());\r
+ return result;\r
}\r
\r
@Override\r
- public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownNode) {\r
- addedUnknownNodes.add(unknownNode);\r
+ public boolean equals(Object obj) {\r
+ if (this == obj)\r
+ return true;\r
+ if (obj == null)\r
+ return false;\r
+ if (getClass() != obj.getClass())\r
+ return false;\r
+ UsesNodeBuilderImpl other = (UsesNodeBuilderImpl) obj;\r
+ if (groupingName == null) {\r
+ if (other.groupingName != null)\r
+ return false;\r
+ } else if (!groupingName.equals(other.groupingName))\r
+ return false;\r
+\r
+ if (parent == null) {\r
+ if (other.parent != null)\r
+ return false;\r
+ } else if (!parent.equals(other.parent))\r
+ return false;\r
+ if (refines == null) {\r
+ if (other.refines != null)\r
+ return false;\r
+ } else if (!refines.equals(other.refines))\r
+ return false;\r
+ return true;\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ return "uses '" + groupingName + "'";\r
}\r
\r
public final class UsesNodeImpl implements UsesNode {\r
return sb.toString();\r
}\r
}\r
+\r
}\r