import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Create copy of DataSchemaNodeBuilder with new parent. If updateQName is
* true, qname of node will be corrected based on new parent.
- *
+ *
* @param old
* @param newParent
* @param updateQName
} else {
type = new TypeDefinitionBuilderImpl(old.getModuleName(), newParent.getLine(), newQName);
type.setParent(newParent);
- type.setPath(newSchemaPath);
+ // TODO
+ //type.setPath(newSchemaPath);
+ type.setPath(old.getPath());
if (old.getType() == null) {
type.setTypedef(copy(old.getTypedef(), type, updateQName));
copy.getAugmentations().addAll(old.getAugmentations());
copy.getRefineNodes().addAll(old.getRefineNodes());
copy.getRefines().addAll(old.getRefines());
+ copy.setAugmenting(old.isAugmenting());
+ copy.setParentAugment(old.getParentAugment());
+
+ // target child nodes
+ Set<DataSchemaNodeBuilder> newTargetChildren = new HashSet<>();
+ for(DataSchemaNodeBuilder dnb : old.getTargetChildren()) {
+ newTargetChildren.add(copy(dnb, newParent, true));
+ }
+ copy.getTargetChildren().addAll(newTargetChildren);
- copy.setTargetChildren(old.getTargetChildren());
- copy.setTargetTypedefs(old.getTargetTypedefs());
- copy.setTargetGroupings(old.getTargetGroupings());
- copy.setTargetUnknownNodes(old.getTargetUnknownNodes());
+ // target typedefs
+ Set<TypeDefinitionBuilder> newTargetTypedefs = new HashSet<>();
+ for(TypeDefinitionBuilder tdb : old.getTargetTypedefs()) {
+ newTargetTypedefs.add(copy(tdb, newParent, true));
+ }
+ copy.getTargetTypedefs().addAll(newTargetTypedefs);
+
+ // target groupings
+ Set<GroupingBuilder> newTargetGroupings = new HashSet<>();
+ for(GroupingBuilder gb : old.getTargetGroupings()) {
+ newTargetGroupings.add(copy(gb, newParent, true));
+ }
+ copy.getTargetGroupings().addAll(newTargetGroupings);
+
+ // target unknown nodes
+ Set<UnknownSchemaNodeBuilder> 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);
newPath = Collections.singletonList(newQName);
}
} else if (newParent instanceof AugmentationSchemaBuilder) {
+ AugmentationSchemaBuilder augment = (AugmentationSchemaBuilder)newParent;
ModuleBuilder parent = ParserUtils.getParentModule(newParent);
if (updateQName) {
newQName = new QName(parent.getNamespace(), parent.getRevision(), parent.getPrefix(), old.getQName()
.getLocalName());
- newPath = Collections.singletonList(newQName);
+ newPath = new ArrayList<>(augment.getTargetPath().getPath());
+ newPath.add(newQName);
} else {
newQName = old.getQName();
- newPath = Collections.singletonList(newQName);
+ newPath = new ArrayList<>(augment.getTargetPath().getPath());
+ newPath.add(newQName);
}
} else if (newParent instanceof SchemaNodeBuilder) {
/**
* Create AnyXmlBuilder from given AnyXmlSchemaNode.
- *
+ *
* @param anyxml
* @param qname
* @param moduleName
/**
* Create GroupingBuilder from given GroupingDefinition.
- *
+ *
* @param grouping
* @param qname
* @param moduleName
/**
* Create TypeDefinitionBuilder from given ExtendedType.
- *
+ *
* @param typedef
* @param qname
* @param moduleName
/**
* Create UnknownSchemaNodeBuilder from given UnknownSchemaNode.
- *
+ *
* @param unknownNode
* @param qname
* @param moduleName
/**
* Create LeafSchemaNodeBuilder from given LeafSchemaNode.
- *
+ *
* @param leaf
* leaf from which to create builder
* @param qname
/**
* Create ContainerSchemaNodeBuilder from given ContainerSchemaNode.
- *
+ *
* @param container
* @param qname
* @param moduleName
/**
* Create ListSchemaNodeBuilder from given ListSchemaNode.
- *
+ *
* @param list
* @param qname
* @param moduleName
/**
* Create LeafListSchemaNodeBuilder from given LeafListSchemaNode.
- *
+ *
* @param leafList
* @param qname
* @param moduleName
/**
* Create ChoiceBuilder from given ChoiceNode.
- *
+ *
* @param choice
* @param qname
* @param moduleName
/**
* Set DataSchemaNode arguments to builder object
- *
+ *
* @param node
* node from which arguments should be read
* @param builder
/**
* Copy constraints from constraints definition to constraints builder.
- *
+ *
* @param nodeConstraints
* definition from which constraints will be copied
* @param constraints