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%2Futil%2FCopyUtils.java;h=2b3e29bb7faf95abe89cf257a24835f4da7267f6;hb=c2bbf5ea78b943a43f7ca1e2f802e8fd82119335;hp=9e1ccd897e176f97c5ace33bcb5aff214eef6ca7;hpb=fe5a0790b82b95332813017eb93492b6b2cbb822;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java index 9e1ccd897e..2b3e29bb7f 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/CopyUtils.java @@ -9,26 +9,10 @@ package org.opendaylight.yangtools.yang.parser.util; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; import java.util.List; -import java.util.Set; - import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceNode; -import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; -import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; -import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; -import org.opendaylight.yangtools.yang.model.api.MustDefinition; -import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.util.ExtendedType; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; @@ -63,11 +47,15 @@ public final class CopyUtils { * true, qname of node will be corrected based on new parent. * * @param old + * builder to copy * @param newParent + * new parent * @param updateQName - * @return + * flag to indicate if qname should be updated based on new + * parent location + * @return copy of given builder */ - public static DataSchemaNodeBuilder copy(DataSchemaNodeBuilder old, Builder newParent, boolean updateQName) { + public static DataSchemaNodeBuilder copy(final DataSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { if (old instanceof AnyXmlBuilder) { return copy((AnyXmlBuilder) old, newParent, updateQName); } else if (old instanceof ChoiceBuilder) { @@ -88,7 +76,7 @@ public final class CopyUtils { } } - private static AnyXmlBuilder copy(AnyXmlBuilder old, Builder newParent, boolean updateQName) { + private static AnyXmlBuilder copy(final AnyXmlBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -96,29 +84,27 @@ public final class CopyUtils { AnyXmlBuilder copy = new AnyXmlBuilder(newParent.getModuleName(), newParent.getLine(), newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.setAugmenting(old.isAugmenting()); copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } return copy; } - private static ChoiceBuilder copy(ChoiceBuilder old, Builder newParent, boolean updateQName) { + private static ChoiceBuilder copy(final ChoiceBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; - ChoiceBuilder copy = new ChoiceBuilder(newParent.getModuleName(), newParent.getLine(), newQName); + ChoiceBuilder copy = new ChoiceBuilder(newParent.getModuleName(), newParent.getLine(), newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); @@ -128,30 +114,28 @@ public final class CopyUtils { for (ChoiceCaseBuilder childNode : old.getCases()) { copy.addCase(copy(childNode, copy, updateQName)); } - for (AugmentationSchemaBuilder augment : old.getAugmentations()) { + for (AugmentationSchemaBuilder augment : old.getAugmentationBuilders()) { copy.addAugmentation(copyAugment(augment, copy)); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } return copy; } - private static ChoiceCaseBuilder copy(ChoiceCaseBuilder old, Builder newParent, boolean updateQName) { + private static ChoiceCaseBuilder copy(final ChoiceCaseBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; - ChoiceCaseBuilder copy = new ChoiceCaseBuilder(newParent.getModuleName(), newParent.getLine(), newQName); + ChoiceCaseBuilder copy = new ChoiceCaseBuilder(newParent.getModuleName(), newParent.getLine(), newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.setAugmenting(old.isAugmenting()); - copy.getChildNodes().addAll(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { copy.addChildNode(copy(childNode, copy, updateQName)); } @@ -162,18 +146,18 @@ public final class CopyUtils { for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { copy.addTypedef(copy(tdb, copy, updateQName)); } - for (UsesNodeBuilder oldUses : old.getUsesNodes()) { + for (UsesNodeBuilder oldUses : old.getUsesNodeBuilders()) { copy.addUsesNode(copyUses(oldUses, copy)); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } return copy; } - private static ContainerSchemaNodeBuilder copy(ContainerSchemaNodeBuilder old, Builder newParent, - boolean updateQName) { + private static ContainerSchemaNodeBuilder copy(final ContainerSchemaNodeBuilder old, final Builder newParent, + final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -182,7 +166,6 @@ public final class CopyUtils { newParent.getLine(), newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); @@ -190,7 +173,6 @@ public final class CopyUtils { copy.setAugmenting(old.isAugmenting()); copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); - copy.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { copy.addChildNode(copy(childNode, copy, updateQName)); } @@ -201,20 +183,20 @@ public final class CopyUtils { for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { copy.addTypedef(copy(tdb, copy, updateQName)); } - for (UsesNodeBuilder oldUses : old.getUsesNodes()) { + for (UsesNodeBuilder oldUses : old.getUsesNodeBuilders()) { copy.addUsesNode(copyUses(oldUses, copy)); } - for (AugmentationSchemaBuilder augment : old.getAugmentations()) { + for (AugmentationSchemaBuilder augment : old.getAugmentationBuilders()) { copy.addAugmentation(copyAugment(augment, copy)); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } return copy; } - private static LeafSchemaNodeBuilder copy(LeafSchemaNodeBuilder old, Builder newParent, boolean updateQName) { + private static LeafSchemaNodeBuilder copy(final LeafSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -223,14 +205,13 @@ public final class CopyUtils { newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.setAugmenting(old.isAugmenting()); copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } @@ -246,7 +227,7 @@ public final class CopyUtils { return copy; } - public static LeafListSchemaNodeBuilder copy(LeafListSchemaNodeBuilder old, Builder newParent, boolean updateQName) { + public static LeafListSchemaNodeBuilder copy(final LeafListSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -255,14 +236,13 @@ public final class CopyUtils { newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.setAugmenting(old.isAugmenting()); copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } @@ -277,7 +257,7 @@ public final class CopyUtils { return copy; } - private static ListSchemaNodeBuilder copy(ListSchemaNodeBuilder old, Builder newParent, boolean updateQName) { + private static ListSchemaNodeBuilder copy(final ListSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -286,14 +266,12 @@ public final class CopyUtils { newQName, newSchemaPath); copyConstraints(copy.getConstraints(), old.getConstraints()); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.setAugmenting(old.isAugmenting()); copy.setAddedByUses(old.isAddedByUses()); copy.setConfiguration(old.isConfiguration()); - copy.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { copy.addChildNode(copy(childNode, copy, updateQName)); } @@ -304,35 +282,33 @@ public final class CopyUtils { for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { copy.addTypedef(copy(tdb, copy, updateQName)); } - for (UsesNodeBuilder oldUses : old.getUsesNodes()) { + for (UsesNodeBuilder oldUses : old.getUsesNodeBuilders()) { copy.addUsesNode(copyUses(oldUses, copy)); } - for (AugmentationSchemaBuilder augment : old.getAugmentations()) { + for (AugmentationSchemaBuilder augment : old.getAugmentationBuilders()) { copy.addAugmentation(copyAugment(augment, copy)); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } copy.setUserOrdered(old.isUserOrdered()); - copy.setKeyDefinition(old.getKeyDefinition()); + copy.setKeys(old.getKeys()); return copy; } - public static GroupingBuilder copy(GroupingBuilder old, Builder newParent, boolean updateQName) { + public static GroupingBuilder copy(final GroupingBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; - GroupingBuilderImpl copy = new GroupingBuilderImpl(newParent.getModuleName(), newParent.getLine(), newQName); + GroupingBuilderImpl copy = new GroupingBuilderImpl(newParent.getModuleName(), newParent.getLine(), newQName, newSchemaPath); copy.setParent(newParent); - copy.setPath(newSchemaPath); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.setAddedByUses(old.isAddedByUses()); - copy.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { copy.addChildNode(copy(childNode, copy, updateQName)); } @@ -343,21 +319,21 @@ public final class CopyUtils { for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { copy.addTypedef(copy(tdb, copy, updateQName)); } - for (UsesNodeBuilder oldUses : old.getUsesNodes()) { + for (UsesNodeBuilder oldUses : old.getUsesNodeBuilders()) { copy.addUsesNode(copyUses(oldUses, copy)); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, updateQName))); } return copy; } - public static TypeDefinitionBuilder copy(TypeDefinitionBuilder old, Builder newParent, boolean updateQName) { + public static TypeDefinitionBuilder copy(final TypeDefinitionBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; - TypeDefinitionBuilder type = null; + TypeDefinitionBuilder type; if (old instanceof UnionTypeBuilder) { UnionTypeBuilder oldUnion = (UnionTypeBuilder) old; @@ -373,13 +349,9 @@ public final class CopyUtils { type = new IdentityrefTypeBuilder(newParent.getModuleName(), newParent.getLine(), ((IdentityrefTypeBuilder) old).getBaseString(), newSchemaPath); type.setParent(newParent); - type.setPath(newSchemaPath); } else { - type = new TypeDefinitionBuilderImpl(old.getModuleName(), newParent.getLine(), newQName); + type = new TypeDefinitionBuilderImpl(old.getModuleName(), newParent.getLine(), newQName, old.getPath()); type.setParent(newParent); - // TODO - //type.setPath(newSchemaPath); - type.setPath(old.getPath()); if (old.getType() == null) { type.setTypedef(copy(old.getTypedef(), type, updateQName)); @@ -387,7 +359,7 @@ public final class CopyUtils { type.setType(old.getType()); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { type.addUnknownNodeBuilder((copy(un, type, updateQName))); } @@ -406,7 +378,7 @@ public final class CopyUtils { return type; } - private static ConstraintsBuilder copyConstraints(ConstraintsBuilder newConstraints, ConstraintsBuilder old) { + private static ConstraintsBuilder copyConstraints(final ConstraintsBuilder newConstraints, final ConstraintsBuilder old) { newConstraints.getMustDefinitions().addAll(old.getMustDefinitions()); newConstraints.addWhenCondition(old.getWhenCondition()); newConstraints.setMandatory(old.isMandatory()); @@ -415,9 +387,9 @@ public final class CopyUtils { return newConstraints; } - static UsesNodeBuilder copyUses(UsesNodeBuilder old, Builder newParent) { + private static UsesNodeBuilder copyUses(final UsesNodeBuilder old, final Builder newParent) { UsesNodeBuilder copy = new UsesNodeBuilderImpl(newParent.getModuleName(), newParent.getLine(), - old.getGroupingPathAsString(), true); + old.getGroupingPathAsString()); copy.setParent(newParent); copy.setGroupingDefinition(old.getGroupingDefinition()); copy.setGrouping(old.getGroupingBuilder()); @@ -426,88 +398,57 @@ public final class CopyUtils { copy.getRefineNodes().addAll(old.getRefineNodes()); copy.getRefines().addAll(old.getRefines()); copy.setAugmenting(old.isAugmenting()); - copy.setParentAugment(old.getParentAugment()); - - // target child nodes - Set newTargetChildren = new HashSet<>(); - for(DataSchemaNodeBuilder dnb : old.getTargetChildren()) { - newTargetChildren.add(copy(dnb, newParent, true)); - } - copy.getTargetChildren().addAll(newTargetChildren); - - // target typedefs - Set newTargetTypedefs = new HashSet<>(); - for(TypeDefinitionBuilder tdb : old.getTargetTypedefs()) { - newTargetTypedefs.add(copy(tdb, newParent, true)); - } - copy.getTargetTypedefs().addAll(newTargetTypedefs); - - // target groupings - Set newTargetGroupings = new HashSet<>(); - for(GroupingBuilder gb : old.getTargetGroupings()) { - newTargetGroupings.add(copy(gb, newParent, true)); - } - copy.getTargetGroupings().addAll(newTargetGroupings); - - // target unknown nodes - Set newTargetUnknownNodes = new HashSet<>(); - for(UnknownSchemaNodeBuilder unb : old.getTargetUnknownNodes()) { - newTargetUnknownNodes.add(copy(unb, newParent, true)); - } - copy.getTargetUnknownNodes().addAll(newTargetUnknownNodes); - - // add new uses to collection of uses in module - ModuleBuilder module = ParserUtils.getParentModule(newParent); - module.getAllUsesNodes().add(copy); - return copy; } - private static AugmentationSchemaBuilder copyAugment(AugmentationSchemaBuilder old, Builder newParent) { + private static AugmentationSchemaBuilder copyAugment(final AugmentationSchemaBuilder old, final Builder newParent) { AugmentationSchemaBuilderImpl copy = new AugmentationSchemaBuilderImpl(newParent.getModuleName(), - newParent.getLine(), old.getTargetPathAsString()); + newParent.getLine(), old.getTargetPathAsString(), old.getOrder()); copy.setParent(newParent); - + copy.setCopyOf(old); copy.setDescription(old.getDescription()); copy.setReference(old.getReference()); copy.setStatus(old.getStatus()); copy.addWhenCondition(old.getWhenCondition()); - copy.setChildNodes(old.getChildNodes()); + copy.setTargetNodeSchemaPath(old.getTargetNodeSchemaPath()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { copy.addChildNode(copy(childNode, copy, false)); } - for (UsesNodeBuilder oldUses : old.getUsesNodes()) { + for (UsesNodeBuilder oldUses : old.getUsesNodeBuilders()) { copy.addUsesNode(copyUses(oldUses, copy)); } - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { copy.addUnknownNodeBuilder((copy(un, copy, false))); } return copy; } - static UnknownSchemaNodeBuilder copy(UnknownSchemaNodeBuilder old, Builder newParent, boolean updateQName) { + public static UnknownSchemaNodeBuilder copy(final UnknownSchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; UnknownSchemaNodeBuilder c = new UnknownSchemaNodeBuilder(newParent.getModuleName(), newParent.getLine(), - newQName); + newQName, newSchemaPath); + c.setNodeType(old.getNodeType()); + c.setNodeParameter(old.getNodeParameter()); c.setParent(newParent); - c.setPath(newSchemaPath); c.setDescription(old.getDescription()); c.setReference(old.getReference()); c.setStatus(old.getStatus()); c.setAddedByUses(old.isAddedByUses()); - for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { + for (UnknownSchemaNodeBuilder un : old.getUnknownNodes()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } + c.setExtensionBuilder(old.getExtensionBuilder()); + c.setExtensionDefinition(old.getExtensionDefinition()); return c; } - private static DataBean getdata(SchemaNodeBuilder old, Builder newParent, boolean updateQName) { + private static DataBean getdata(final SchemaNodeBuilder old, final Builder newParent, final boolean updateQName) { List newPath = null; QName newQName = null; if (newParent instanceof ModuleBuilder) { @@ -521,16 +462,16 @@ public final class CopyUtils { newPath = Collections.singletonList(newQName); } } else if (newParent instanceof AugmentationSchemaBuilder) { - AugmentationSchemaBuilder augment = (AugmentationSchemaBuilder)newParent; + AugmentationSchemaBuilder augment = (AugmentationSchemaBuilder) newParent; ModuleBuilder parent = ParserUtils.getParentModule(newParent); if (updateQName) { newQName = new QName(parent.getNamespace(), parent.getRevision(), parent.getPrefix(), old.getQName() .getLocalName()); - newPath = new ArrayList<>(augment.getTargetPath().getPath()); + newPath = new ArrayList<>(augment.getTargetNodeSchemaPath().getPath()); newPath.add(newQName); } else { newQName = old.getQName(); - newPath = new ArrayList<>(augment.getTargetPath().getPath()); + newPath = new ArrayList<>(augment.getTargetNodeSchemaPath().getPath()); newPath.add(newQName); } @@ -549,281 +490,18 @@ public final class CopyUtils { } } - SchemaPath newSchemaPath = new SchemaPath(newPath, true); + SchemaPath newSchemaPath = SchemaPath.create(newPath, true); return new DataBean(newQName, newSchemaPath); } private static final class DataBean { - private QName qname; - private SchemaPath schemaPath; + private final QName qname; + private final SchemaPath schemaPath; - private DataBean(QName qname, SchemaPath schemaPath) { + private DataBean(final QName qname, final SchemaPath schemaPath) { this.qname = qname; this.schemaPath = schemaPath; } } - /** - * Create AnyXmlBuilder from given AnyXmlSchemaNode. - * - * @param anyxml - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return anyxml builder based on given anyxml node - */ - public static AnyXmlBuilder createAnyXml(AnyXmlSchemaNode anyxml, QName qname, String moduleName, int line) { - final AnyXmlBuilder builder = new AnyXmlBuilder(moduleName, line, qname, anyxml.getPath()); - convertDataSchemaNode(anyxml, builder); - builder.setConfiguration(anyxml.isConfiguration()); - builder.setUnknownNodes(anyxml.getUnknownSchemaNodes()); - return builder; - } - - /** - * Create GroupingBuilder from given GroupingDefinition. - * - * @param grouping - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return grouping builder based on given grouping node - */ - public static GroupingBuilder createGrouping(GroupingDefinition grouping, QName qname, String moduleName, int line) { - final GroupingBuilderImpl builder = new GroupingBuilderImpl(moduleName, line, qname); - builder.setPath(grouping.getPath()); - builder.setChildNodes(grouping.getChildNodes()); - builder.setGroupings(grouping.getGroupings()); - builder.setTypedefs(grouping.getTypeDefinitions()); - builder.setUsesnodes(grouping.getUses()); - builder.setUnknownNodes(grouping.getUnknownSchemaNodes()); - builder.setDescription(grouping.getDescription()); - builder.setReference(grouping.getReference()); - builder.setStatus(grouping.getStatus()); - return builder; - } - - /** - * Create TypeDefinitionBuilder from given ExtendedType. - * - * @param typedef - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return typedef builder based on given typedef node - */ - public static TypeDefinitionBuilder createTypedef(ExtendedType typedef, QName qname, String moduleName, int line) { - final TypeDefinitionBuilderImpl builder = new TypeDefinitionBuilderImpl(moduleName, line, qname); - builder.setPath(typedef.getPath()); - builder.setDefaultValue(typedef.getDefaultValue()); - builder.setUnits(typedef.getUnits()); - builder.setDescription(typedef.getDescription()); - builder.setReference(typedef.getReference()); - builder.setStatus(typedef.getStatus()); - builder.setRanges(typedef.getRangeConstraints()); - builder.setLengths(typedef.getLengthConstraints()); - builder.setPatterns(typedef.getPatternConstraints()); - builder.setFractionDigits(typedef.getFractionDigits()); - final TypeDefinition type = typedef.getBaseType(); - builder.setType(type); - builder.setUnits(typedef.getUnits()); - builder.setUnknownNodes(typedef.getUnknownSchemaNodes()); - return builder; - } - - /** - * Create UnknownSchemaNodeBuilder from given UnknownSchemaNode. - * - * @param unknownNode - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return unknown node builder based on given unknown node - */ - public static UnknownSchemaNodeBuilder createUnknownSchemaNode(UnknownSchemaNode unknownNode, QName qname, - String moduleName, int line) { - final UnknownSchemaNodeBuilder builder = new UnknownSchemaNodeBuilder(moduleName, line, qname); - builder.setPath(unknownNode.getPath()); - builder.setUnknownNodes(unknownNode.getUnknownSchemaNodes()); - builder.setDescription(unknownNode.getDescription()); - builder.setReference(unknownNode.getReference()); - builder.setStatus(unknownNode.getStatus()); - builder.setAddedByUses(unknownNode.isAddedByUses()); - builder.setNodeType(unknownNode.getNodeType()); - builder.setNodeParameter(unknownNode.getNodeParameter()); - return builder; - } - - /** - * Create LeafSchemaNodeBuilder from given LeafSchemaNode. - * - * @param leaf - * leaf from which to create builder - * @param qname - * @param moduleName - * current module name - * @param line - * line in module - * @return leaf builder based on given leaf node - */ - public static LeafSchemaNodeBuilder createLeafBuilder(LeafSchemaNode leaf, QName qname, String moduleName, int line) { - final LeafSchemaNodeBuilder builder = new LeafSchemaNodeBuilder(moduleName, line, qname, leaf.getPath()); - convertDataSchemaNode(leaf, builder); - builder.setConfiguration(leaf.isConfiguration()); - final TypeDefinition type = leaf.getType(); - builder.setType(type); - builder.setPath(leaf.getPath()); - builder.setUnknownNodes(leaf.getUnknownSchemaNodes()); - builder.setDefaultStr(leaf.getDefault()); - builder.setUnits(leaf.getUnits()); - return builder; - } - - /** - * Create ContainerSchemaNodeBuilder from given ContainerSchemaNode. - * - * @param container - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return container builder based on given container node - */ - public static ContainerSchemaNodeBuilder createContainer(ContainerSchemaNode container, QName qname, - String moduleName, int line) { - final ContainerSchemaNodeBuilder builder = new ContainerSchemaNodeBuilder(moduleName, line, qname, - container.getPath()); - convertDataSchemaNode(container, builder); - builder.setConfiguration(container.isConfiguration()); - builder.setUnknownNodes(container.getUnknownSchemaNodes()); - builder.setChildNodes(container.getChildNodes()); - builder.setGroupings(container.getGroupings()); - builder.setTypedefs(container.getTypeDefinitions()); - builder.setAugmentations(container.getAvailableAugmentations()); - builder.setUsesnodes(container.getUses()); - builder.setPresence(container.isPresenceContainer()); - return builder; - } - - /** - * Create ListSchemaNodeBuilder from given ListSchemaNode. - * - * @param list - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return list builder based on given list node - */ - public static ListSchemaNodeBuilder createList(ListSchemaNode list, QName qname, String moduleName, int line) { - ListSchemaNodeBuilder builder = new ListSchemaNodeBuilder(moduleName, line, qname, list.getPath()); - convertDataSchemaNode(list, builder); - builder.setConfiguration(list.isConfiguration()); - builder.setUnknownNodes(list.getUnknownSchemaNodes()); - builder.setTypedefs(list.getTypeDefinitions()); - builder.setChildNodes(list.getChildNodes()); - builder.setGroupings(list.getGroupings()); - builder.setAugmentations(list.getAvailableAugmentations()); - builder.setUsesnodes(list.getUses()); - builder.setUserOrdered(builder.isUserOrdered()); - return builder; - } - - /** - * Create LeafListSchemaNodeBuilder from given LeafListSchemaNode. - * - * @param leafList - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return leaf-list builder based on given leaf-list node - */ - public static LeafListSchemaNodeBuilder createLeafList(LeafListSchemaNode leafList, QName qname, String moduleName, - int line) { - final LeafListSchemaNodeBuilder builder = new LeafListSchemaNodeBuilder(moduleName, line, qname, - leafList.getPath()); - convertDataSchemaNode(leafList, builder); - builder.setConfiguration(leafList.isConfiguration()); - builder.setType(leafList.getType()); - builder.setUnknownNodes(leafList.getUnknownSchemaNodes()); - builder.setUserOrdered(leafList.isUserOrdered()); - return builder; - } - - /** - * Create ChoiceBuilder from given ChoiceNode. - * - * @param choice - * @param qname - * @param moduleName - * current module name - * @param line - * current line in module - * @return choice builder based on given choice node - */ - public static ChoiceBuilder createChoice(ChoiceNode choice, QName qname, String moduleName, int line) { - final ChoiceBuilder builder = new ChoiceBuilder(moduleName, line, qname); - convertDataSchemaNode(choice, builder); - builder.setConfiguration(choice.isConfiguration()); - builder.setCases(choice.getCases()); - builder.setUnknownNodes(choice.getUnknownSchemaNodes()); - builder.setDefaultCase(choice.getDefaultCase()); - return builder; - } - - /** - * Set DataSchemaNode arguments to builder object - * - * @param node - * node from which arguments should be read - * @param builder - * builder to which arguments should be set - */ - private static void convertDataSchemaNode(DataSchemaNode node, DataSchemaNodeBuilder builder) { - builder.setPath(node.getPath()); - builder.setDescription(node.getDescription()); - builder.setReference(node.getReference()); - builder.setStatus(node.getStatus()); - builder.setAugmenting(node.isAugmenting()); - copyConstraintsFromDefinition(node.getConstraints(), builder.getConstraints()); - } - - /** - * Copy constraints from constraints definition to constraints builder. - * - * @param nodeConstraints - * definition from which constraints will be copied - * @param constraints - * builder to which constraints will be added - */ - private static void copyConstraintsFromDefinition(final ConstraintDefinition nodeConstraints, - final ConstraintsBuilder constraints) { - final RevisionAwareXPath when = nodeConstraints.getWhenCondition(); - final Set must = nodeConstraints.getMustConstraints(); - - if (when != null) { - constraints.addWhenCondition(when.toString()); - } - if (must != null) { - for (MustDefinition md : must) { - constraints.addMustDefinition(md); - } - } - constraints.setMandatory(nodeConstraints.isMandatory()); - constraints.setMinElements(nodeConstraints.getMinElements()); - constraints.setMaxElements(nodeConstraints.getMaxElements()); - } - }