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%2FAugmentationSchemaBuilderImpl.java;h=e5ba8b17ccfe1f872070e491cf9c6396d8623557;hp=29c38dfa0e727eaaba4c61adf7320f8893bb90c8;hb=50d50e106bcbe761b05417e747c217c1f5b36534;hpb=6f9523a8243defc7e0c9534274e2c41a4b89dc9e diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java index 29c38dfa0e..e5ba8b17cc 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/parser/builder/impl/AugmentationSchemaBuilderImpl.java @@ -29,8 +29,10 @@ import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder; import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil; +import org.opendaylight.controller.yang.parser.util.YangParseException; -public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder { +public final class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder { + private boolean built; private final AugmentationSchemaImpl instance; private final int line; private final String augmentTargetStr; @@ -94,37 +96,40 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder @Override public AugmentationSchema build() { - instance.setTargetPath(finalAugmentTarget); + if (!built) { + instance.setTargetPath(finalAugmentTarget); - RevisionAwareXPath whenStmt; - if (whenCondition == null) { - whenStmt = null; - } else { - whenStmt = new RevisionAwareXPathImpl(whenCondition, false); - } - instance.setWhenCondition(whenStmt); + RevisionAwareXPath whenStmt; + if (whenCondition == null) { + whenStmt = null; + } else { + whenStmt = new RevisionAwareXPathImpl(whenCondition, false); + } + instance.setWhenCondition(whenStmt); - // CHILD NODES - final Map childs = new HashMap(); - for (DataSchemaNodeBuilder node : childNodes) { - childs.put(node.getQName(), node.build()); - } - instance.setChildNodes(childs); + // CHILD NODES + final Map childs = new HashMap(); + for (DataSchemaNodeBuilder node : childNodes) { + childs.put(node.getQName(), node.build()); + } + instance.setChildNodes(childs); - // GROUPINGS - final Set groupingDefinitions = new HashSet(); - for (GroupingBuilder builder : groupings) { - groupingDefinitions.add(builder.build()); - } - instance.setGroupings(groupingDefinitions); + // GROUPINGS + final Set groupingDefinitions = new HashSet(); + for (GroupingBuilder builder : groupings) { + groupingDefinitions.add(builder.build()); + } + instance.setGroupings(groupingDefinitions); - // USES - final Set usesNodeDefinitions = new HashSet(); - for (UsesNodeBuilder builder : usesNodes) { - usesNodeDefinitions.add(builder.build()); - } - instance.setUses(usesNodeDefinitions); + // USES + final Set usesNodeDefinitions = new HashSet(); + for (UsesNodeBuilder builder : usesNodes) { + usesNodeDefinitions.add(builder.build()); + } + instance.setUses(usesNodeDefinitions); + built = true; + } return instance; } @@ -146,9 +151,14 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder this.whenCondition = whenCondition; } + @Override + public Set getTypeDefinitions() { + return Collections.emptySet(); + } + @Override public void addTypedef(TypeDefinitionBuilder type) { - throw new UnsupportedOperationException( + throw new YangParseException(line, "Augmentation can not contains type definitions"); } @@ -186,10 +196,13 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder public int hashCode() { final int prime = 17; int result = 1; - result = prime * result + result = prime + * result + ((augmentTargetStr == null) ? 0 : augmentTargetStr.hashCode()); result = prime * result + ((whenCondition == null) ? 0 : whenCondition.hashCode()); + result = prime * result + + ((childNodes == null) ? 0 : childNodes.hashCode()); return result; } @@ -219,11 +232,17 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder } else if (!whenCondition.equals(other.whenCondition)) { return false; } + if (childNodes == null) { + if (other.childNodes != null) { + return false; + } + } else if (!childNodes.equals(other.childNodes)) { + return false; + } return true; } - - private static class AugmentationSchemaImpl implements AugmentationSchema { + private final class AugmentationSchemaImpl implements AugmentationSchema { private SchemaPath targetPath; private RevisionAwareXPath whenCondition; private Map childNodes = Collections.emptyMap(); @@ -350,6 +369,8 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder + ((targetPath == null) ? 0 : targetPath.hashCode()); result = prime * result + ((whenCondition == null) ? 0 : whenCondition.hashCode()); + result = prime * result + + ((childNodes == null) ? 0 : childNodes.hashCode()); return result; } @@ -379,6 +400,13 @@ public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder } else if (!whenCondition.equals(other.whenCondition)) { return false; } + if (childNodes == null) { + if (other.childNodes != null) { + return false; + } + } else if (!childNodes.equals(other.childNodes)) { + return false; + } return true; }