X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fbuilder%2Fimpl%2FChoiceCaseBuilder.java;h=c97eb14ebefd889e560a9afd96f43b01e65aaa89;hb=0c5bc1ee1d4f2e193ddc1ce630bc399d13483100;hp=a090d733e9d5ac1d7fb8c48cced4b06c9a5ad4c8;hpb=90d0c4f928887171dd1598d844c7939a78beb708;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java index a090d733e9..c97eb14ebe 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/ChoiceCaseBuilder.java @@ -7,10 +7,6 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; - import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -19,29 +15,34 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; +import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.ConstraintsBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDocumentedDataNodeContainer; import org.opendaylight.yangtools.yang.parser.builder.util.AbstractDocumentedDataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; + public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainerBuilder implements DataSchemaNodeBuilder, AugmentationTargetBuilder { private ChoiceCaseNodeImpl instance; // SchemaNode args private SchemaPath schemaPath; - private String description; - private String reference; - private Status status = Status.CURRENT; // DataSchemaNode args private boolean augmenting; + private ChoiceCaseNode originalNode; + private ChoiceCaseBuilder originalBuilder; private boolean addedByUses; private final ConstraintsBuilder constraints; // AugmentationTarget args @@ -56,17 +57,13 @@ AugmentationTargetBuilder { public ChoiceCaseBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final ChoiceCaseNode base) { - - super(moduleName, line, qname); - this.schemaPath = Preconditions.checkNotNull(path, "Schema Path must not be null"); + super(moduleName, line, qname, Preconditions.checkNotNull(path, "Schema Path must not be null"), base); + this.schemaPath = path; constraints = new ConstraintsBuilderImpl(moduleName, line, base.getConstraints()); - description = base.getDescription(); - reference = base.getReference(); - status = base.getStatus(); augmenting = base.isAugmenting(); addedByUses = base.isAddedByUses(); - + originalNode = base; addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, qname)); augmentations.addAll(base.getAvailableAugmentations()); @@ -85,6 +82,12 @@ AugmentationTargetBuilder { instance.constraints = constraints.toInstance(); + // ORIGINAL NODE + if (originalNode == null && originalBuilder != null) { + originalNode = originalBuilder.build(); + } + instance.original = originalNode; + // UNKNOWN NODES for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { unknownNodes.add(b.build()); @@ -129,6 +132,17 @@ AugmentationTargetBuilder { this.addedByUses = addedByUses; } + @Override + public ChoiceCaseBuilder getOriginal() { + return originalBuilder; + } + + @Override + public void setOriginal(final SchemaNodeBuilder builder) { + Preconditions.checkArgument(builder instanceof ChoiceCaseBuilder, "Original of case cannot be " + builder); + this.originalBuilder = (ChoiceCaseBuilder) builder; + } + @Override public void addTypedef(final TypeDefinitionBuilder typedefBuilder) { throw new YangParseException(getModuleName(), typedefBuilder.getLine(), "Can not add type definition to choice case."); @@ -201,11 +215,12 @@ AugmentationTargetBuilder { return "choice"; } - private static final class ChoiceCaseNodeImpl extends AbstractDocumentedDataNodeContainer implements ChoiceCaseNode { + private static final class ChoiceCaseNodeImpl extends AbstractDocumentedDataNodeContainer implements ChoiceCaseNode, DerivableSchemaNode { private final QName qname; private final SchemaPath path; private boolean augmenting; private boolean addedByUses; + private ChoiceCaseNode original; private ConstraintDefinition constraints; private ImmutableSet augmentations; private ImmutableList unknownNodes; @@ -246,6 +261,11 @@ AugmentationTargetBuilder { return addedByUses; } + @Override + public Optional getOriginal() { + return Optional.fromNullable(original); + } + @Override public List getUnknownSchemaNodes() { return unknownNodes; @@ -303,6 +323,7 @@ AugmentationTargetBuilder { sb.append("]"); return sb.toString(); } + } }