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=9a591c38809720f0edc438f1f6bab857d1bef9a2;hp=2a59e7279aa3ac1e3f0ce7d682f9f63c3f5e39d8;hpb=79682669e4e54af1fa2f98aafbdebba55ff184f9;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 2a59e7279a..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,9 +7,7 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; -import java.net.URI; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Set; @@ -17,33 +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 { +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 @@ -58,22 +57,15 @@ public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainer 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(); - - URI ns = qname.getNamespace(); - Date rev = qname.getRevision(); - String pref = qname.getPrefix(); - addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns, - rev, pref)); + originalNode = base; + addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, + qname)); augmentations.addAll(base.getAvailableAugmentations()); } @@ -90,6 +82,12 @@ public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainer 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()); @@ -134,6 +132,17 @@ public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainer 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."); @@ -206,11 +215,12 @@ public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainer 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; @@ -251,6 +261,11 @@ public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainer return addedByUses; } + @Override + public Optional getOriginal() { + return Optional.fromNullable(original); + } + @Override public List getUnknownSchemaNodes() { return unknownNodes; @@ -308,6 +323,7 @@ public final class ChoiceCaseBuilder extends AbstractDocumentedDataNodeContainer sb.append("]"); return sb.toString(); } + } }