X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FUsesNodeBuilderImpl.java;h=77a465d5fd3346ab41657c84421f5cd35c1c6e98;hp=850938161bf4c25cc30fd5d7e7270d0056d9f596;hb=3c8c7171aa9a2fdf322b85cf104ae551665aa0d8;hpb=7989f1cecf0fd0d69c5b69263d80dc084db66f0c diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java index 850938161b..77a465d5fd 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/UsesNodeBuilderImpl.java @@ -18,8 +18,10 @@ import java.util.Set; import org.opendaylight.controller.yang.model.api.AugmentationSchema; import org.opendaylight.controller.yang.model.api.SchemaNode; import org.opendaylight.controller.yang.model.api.SchemaPath; +import org.opendaylight.controller.yang.model.api.UnknownSchemaNode; import org.opendaylight.controller.yang.model.api.UsesNode; import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder; +import org.opendaylight.controller.yang.parser.builder.api.DataNodeContainerBuilder; import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.controller.yang.parser.util.RefineHolder; @@ -28,17 +30,32 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { private boolean isBuilt; private UsesNodeImpl instance; private final int line; - private SchemaPath schemaPath; + private final DataNodeContainerBuilder parent; private final String groupingName; private SchemaPath groupingPath; private boolean augmenting; + private boolean addedByUses; private final Set addedAugments = new HashSet(); - private List refineBuilders = new ArrayList(); - private List refines = new ArrayList(); + private final List refineBuilders = new ArrayList(); + private final List refines = new ArrayList(); + private final List addedUnknownNodes = new ArrayList(); - public UsesNodeBuilderImpl(final String groupingName, final int line) { + public UsesNodeBuilderImpl(final String groupingName, final int line, final DataNodeContainerBuilder parent) { this.groupingName = groupingName; this.line = line; + this.parent = parent; + } + + public UsesNodeBuilderImpl(UsesNodeBuilder b) { + groupingName = b.getGroupingName(); + line = b.getLine(); + parent = b.getParent(); + groupingPath = b.getGroupingPath(); + augmenting = b.isAugmenting(); + addedByUses = b.isAddedByUses(); + addedAugments.addAll(b.getAugmentations()); + refineBuilders.addAll(b.getRefineNodes()); + refines.addAll(b.getRefines()); } @Override @@ -46,6 +63,7 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { if (!isBuilt) { instance = new UsesNodeImpl(groupingPath); instance.setAugmenting(augmenting); + instance.setAddedByUses(addedByUses); // AUGMENTATIONS final Set augments = new HashSet(); @@ -62,6 +80,13 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { } instance.setRefines(refineNodes); + // UNKNOWN NODES + List unknownNodes = new ArrayList(); + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); + } + instance.setUnknownSchemaNodes(unknownNodes); + isBuilt = true; } return instance; @@ -73,18 +98,18 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { } @Override - public void setGroupingPath(SchemaPath groupingPath) { - this.groupingPath = groupingPath; + public DataNodeContainerBuilder getParent() { + return parent; } @Override - public SchemaPath getPath() { - return schemaPath; + public SchemaPath getGroupingPath() { + return groupingPath; } @Override - public void setPath(SchemaPath path) { - this.schemaPath = path; + public void setGroupingPath(SchemaPath groupingPath) { + this.groupingPath = groupingPath; } @Override @@ -112,6 +137,16 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { this.augmenting = augmenting; } + @Override + public boolean isAddedByUses() { + return addedByUses; + } + + @Override + public void setAddedByUses(final boolean addedByUses) { + this.addedByUses = addedByUses; + } + @Override public List getRefineNodes() { return refineBuilders; @@ -132,12 +167,22 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { refines.add(refine); } + public List getUnknownNodes() { + return addedUnknownNodes; + } + + @Override + public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownNode) { + addedUnknownNodes.add(unknownNode); + } - private final class UsesNodeImpl implements UsesNode { + public final class UsesNodeImpl implements UsesNode { private final SchemaPath groupingPath; private Set augmentations = Collections.emptySet(); private boolean augmenting; + private boolean addedByUses; private Map refines = Collections.emptyMap(); + private List unknownNodes = Collections.emptyList(); private UsesNodeImpl(final SchemaPath groupingPath) { this.groupingPath = groupingPath; @@ -153,8 +198,7 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { return augmentations; } - private void setAugmentations( - final Set augmentations) { + private void setAugmentations(final Set augmentations) { if (augmentations != null) { this.augmentations = augmentations; } @@ -169,6 +213,15 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { this.augmenting = augmenting; } + @Override + public boolean isAddedByUses() { + return addedByUses; + } + + private void setAddedByUses(final boolean addedByUses) { + this.addedByUses = addedByUses; + } + @Override public Map getRefines() { return refines; @@ -180,14 +233,26 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { } } + public List getUnknownSchemaNodes() { + return unknownNodes; + } + + private void setUnknownSchemaNodes(List unknownSchemaNodes) { + if (unknownSchemaNodes != null) { + this.unknownNodes = unknownSchemaNodes; + } + } + + public UsesNodeBuilder toBuilder() { + return UsesNodeBuilderImpl.this; + } + @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result - + ((groupingPath == null) ? 0 : groupingPath.hashCode()); - result = prime * result - + ((augmentations == null) ? 0 : augmentations.hashCode()); + result = prime * result + ((groupingPath == null) ? 0 : groupingPath.hashCode()); + result = prime * result + ((augmentations == null) ? 0 : augmentations.hashCode()); result = prime * result + (augmenting ? 1231 : 1237); return result; } @@ -226,8 +291,7 @@ public final class UsesNodeBuilderImpl implements UsesNodeBuilder { @Override public String toString() { - StringBuilder sb = new StringBuilder( - UsesNodeImpl.class.getSimpleName()); + StringBuilder sb = new StringBuilder(UsesNodeImpl.class.getSimpleName()); sb.append("[groupingPath=" + groupingPath + "]"); return sb.toString(); }