From 5a501e508821b18d5858132048df542096271f01 Mon Sep 17 00:00:00 2001 From: Martin Vitez Date: Tue, 13 Aug 2013 14:57:02 +0200 Subject: [PATCH] Fixed bug in equals method generation. Refactored CopyUtils class, expanded UsesAugmentTest. Signed-off-by: Martin Vitez --- .../java/api/generator/ClassTemplate.xtend | 4 +- .../yangtools/yang/parser/util/CopyUtils.java | 82 +++++------- .../yang/parser/impl/UsesAugmentTest.java | 119 +++++++++++++++++- 3 files changed, 144 insertions(+), 61 deletions(-) diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend index fb5bff3cc0..5bd4756164 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend @@ -29,7 +29,7 @@ class ClassTemplate { this.consts = genTO.constantDefinitions } - def generate() { + def String generate() { val body = generateBody(false) val pkgAndImports = generatePkgAndImports return pkgAndImports.toString + body.toString @@ -227,7 +227,7 @@ class ClassTemplate { def private generateEquals() ''' «IF !genTO.equalsIdentifiers.empty» @Override - public boolean equals(Object obj) { + public boolean equals(java.lang.Object obj) { if (this == obj) { return true; } 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 efd3736c63..13ad34793c 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 @@ -41,6 +41,15 @@ import org.opendaylight.yangtools.yang.parser.builder.impl.UsesNodeBuilderImpl; public class CopyUtils { + /** + * 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 + * @return + */ public static DataSchemaNodeBuilder copy(DataSchemaNodeBuilder old, Builder newParent, boolean updateQName) { if (old instanceof AnyXmlBuilder) { return copy((AnyXmlBuilder) old, newParent, updateQName); @@ -57,7 +66,8 @@ public class CopyUtils { } else if (old instanceof ChoiceCaseBuilder) { return copy((ChoiceCaseBuilder) old, newParent, updateQName); } else { - throw new YangParseException(old.getModuleName(), old.getLine(), "Failed to copy node " + old); + throw new YangParseException(old.getModuleName(), old.getLine(), + "Failed to copy node: Unknown type of DataSchemaNode: " + old); } } @@ -76,7 +86,6 @@ public class CopyUtils { c.setAugmenting(old.isAugmenting()); c.setAddedByUses(old.isAddedByUses()); c.setConfiguration(old.isConfiguration()); - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -99,15 +108,12 @@ public class CopyUtils { c.setAugmenting(old.isAugmenting()); c.setAddedByUses(old.isAddedByUses()); c.setConfiguration(old.isConfiguration()); - // TODO: built child nodes? for (ChoiceCaseBuilder childNode : old.getCases()) { c.addCase(copy(childNode, c, updateQName)); } - // TODO: built augments? for (AugmentationSchemaBuilder augment : old.getAugmentations()) { c.addAugmentation(copyAugment(augment, c)); } - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -128,22 +134,20 @@ public class CopyUtils { c.setReference(old.getReference()); c.setStatus(old.getStatus()); c.setAugmenting(old.isAugmenting()); - // TODO: built child nodes? + c.getChildNodes().addAll(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { c.addChildNode(copy(childNode, c, updateQName)); } - // TODO: built groupings? - // TODO: copy groupings? c.getGroupings().addAll(old.getGroupings()); - // TODO: build typedefs? + for (GroupingBuilder grouping : old.getGroupingBuilders()) { + c.addGrouping(copy(grouping, c, updateQName)); + } for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { c.addTypedef(copy(tdb, c, updateQName)); } - // TODO: built uses? for (UsesNodeBuilder oldUses : old.getUsesNodes()) { c.addUsesNode(copyUses(oldUses, c)); } - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -169,28 +173,23 @@ public class CopyUtils { c.setAugmenting(old.isAugmenting()); c.setAddedByUses(old.isAddedByUses()); c.setConfiguration(old.isConfiguration()); - // TODO: built child nodes? + c.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { c.addChildNode(copy(childNode, c, updateQName)); } - // TODO: built groupings? + c.getGroupings().addAll(old.getGroupings()); for (GroupingBuilder grouping : old.getGroupingBuilders()) { c.addGrouping(copy(grouping, c, updateQName)); } - - // TODO: build typedefs? for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { c.addTypedef(copy(tdb, c, updateQName)); } - // TODO: built uses? for (UsesNodeBuilder oldUses : old.getUsesNodes()) { c.addUsesNode(copyUses(oldUses, c)); } - // TODO: built augments? for (AugmentationSchemaBuilder augment : old.getAugmentations()) { c.addAugmentation(copyAugment(augment, c)); } - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -214,7 +213,6 @@ public class CopyUtils { c.setAugmenting(old.isAugmenting()); c.setAddedByUses(old.isAddedByUses()); c.setConfiguration(old.isConfiguration()); - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -247,7 +245,6 @@ public class CopyUtils { c.setAugmenting(old.isAugmenting()); c.setAddedByUses(old.isAddedByUses()); c.setConfiguration(old.isConfiguration()); - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -279,28 +276,23 @@ public class CopyUtils { c.setAugmenting(old.isAugmenting()); c.setAddedByUses(old.isAddedByUses()); c.setConfiguration(old.isConfiguration()); - // TODO: built child nodes? + c.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { c.addChildNode(copy(childNode, c, updateQName)); } - // TODO: built groupings? + c.getGroupings().addAll(old.getGroupings()); for (GroupingBuilder grouping : old.getGroupingBuilders()) { c.addGrouping(copy(grouping, c, updateQName)); } - - // TODO: build typedefs? for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { c.addTypedef(copy(tdb, c, updateQName)); } - // TODO: built uses? for (UsesNodeBuilder oldUses : old.getUsesNodes()) { c.addUsesNode(copyUses(oldUses, c)); } - // TODO: built augments? for (AugmentationSchemaBuilder augment : old.getAugmentations()) { c.addAugmentation(copyAugment(augment, c)); } - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -311,36 +303,32 @@ public class CopyUtils { return c; } - public static GroupingBuilder copy(GroupingBuilder old, Builder newParent, boolean updateQName) { + static GroupingBuilder copy(GroupingBuilder old, Builder newParent, boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; - GroupingBuilder c = new GroupingBuilderImpl(newParent.getModuleName(), newParent.getLine(), newQName); + GroupingBuilderImpl c = new GroupingBuilderImpl(newParent.getModuleName(), newParent.getLine(), newQName); c.setParent(newParent); c.setPath(newSchemaPath); c.setDescription(old.getDescription()); c.setReference(old.getReference()); c.setStatus(old.getStatus()); c.setAddedByUses(old.isAddedByUses()); - // TODO: built child nodes? + c.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { c.addChildNode(copy(childNode, c, updateQName)); } - // TODO: built groupings? + c.getGroupings().addAll(old.getGroupings()); for (GroupingBuilder grouping : old.getGroupingBuilders()) { c.addGrouping(copy(grouping, c, updateQName)); } - - // TODO: build typedefs? for (TypeDefinitionBuilder tdb : old.getTypeDefinitionBuilders()) { c.addTypedef(copy(tdb, c, updateQName)); } - // TODO: built uses? for (UsesNodeBuilder oldUses : old.getUsesNodes()) { c.addUsesNode(copyUses(oldUses, c)); } - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -348,7 +336,7 @@ public class CopyUtils { return c; } - public static TypeDefinitionBuilder copy(TypeDefinitionBuilder old, Builder newParent, boolean updateQName) { + static TypeDefinitionBuilder copy(TypeDefinitionBuilder old, Builder newParent, boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -398,7 +386,7 @@ public class CopyUtils { return newConstraints; } - public static UsesNodeBuilder copyUses(UsesNodeBuilder old, Builder newParent) { + static UsesNodeBuilder copyUses(UsesNodeBuilder old, Builder newParent) { UsesNodeBuilder u = new UsesNodeBuilderImpl(newParent.getModuleName(), newParent.getLine(), old.getGroupingName()); u.setParent(newParent); @@ -449,7 +437,6 @@ public class CopyUtils { } u.setTargetUnknownNodes(newUN); - // u.getTargetGroupingUses().addAll(old.getTargetGroupingUses()); for (UsesNodeBuilder uses : old.getTargetGroupingUses()) { u.getTargetGroupingUses().add(copyUses(uses, uses.getParent())); } @@ -462,23 +449,21 @@ public class CopyUtils { } private static AugmentationSchemaBuilder copyAugment(AugmentationSchemaBuilder old, Builder newParent) { - AugmentationSchemaBuilder a = new AugmentationSchemaBuilderImpl(newParent.getModuleName(), newParent.getLine(), - old.getTargetPathAsString()); + AugmentationSchemaBuilderImpl a = new AugmentationSchemaBuilderImpl(newParent.getModuleName(), + newParent.getLine(), old.getTargetPathAsString()); a.setParent(newParent); a.setDescription(old.getDescription()); a.setReference(old.getReference()); a.setStatus(old.getStatus()); a.addWhenCondition(old.getWhenCondition()); - // TODO: built child nodes? + a.setChildNodes(old.getChildNodes()); for (DataSchemaNodeBuilder childNode : old.getChildNodeBuilders()) { a.addChildNode(copy(childNode, a, false)); } - // TODO: built uses? for (UsesNodeBuilder oldUses : old.getUsesNodes()) { a.addUsesNode(copyUses(oldUses, a)); } - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { a.addUnknownNodeBuilder((copy(un, a, false))); } @@ -486,7 +471,7 @@ public class CopyUtils { return a; } - public static UnknownSchemaNodeBuilder copy(UnknownSchemaNodeBuilder old, Builder newParent, boolean updateQName) { + static UnknownSchemaNodeBuilder copy(UnknownSchemaNodeBuilder old, Builder newParent, boolean updateQName) { DataBean data = getdata(old, newParent, updateQName); QName newQName = data.qname; SchemaPath newSchemaPath = data.schemaPath; @@ -500,8 +485,6 @@ public class CopyUtils { c.setReference(old.getReference()); c.setStatus(old.getStatus()); c.setAddedByUses(old.isAddedByUses()); - - // TODO: built un? for (UnknownSchemaNodeBuilder un : old.getUnknownNodeBuilders()) { c.addUnknownNodeBuilder((copy(un, c, updateQName))); } @@ -523,7 +506,6 @@ public class CopyUtils { newPath = Collections.singletonList(newQName); } } else if (newParent instanceof AugmentationSchemaBuilder) { - // TODO: new parent is augment? ModuleBuilder parent = ParserUtils.getParentModule(newParent); if (updateQName) { newQName = new QName(parent.getNamespace(), parent.getRevision(), parent.getPrefix(), old.getQName() @@ -538,12 +520,6 @@ public class CopyUtils { SchemaNodeBuilder parent = (SchemaNodeBuilder) newParent; QName parentQName = parent.getQName(); if (updateQName) { - if (parentQName == null) { - System.out.println("NULL"); - } - if (old == null) { - System.out.println("2NULL"); - } newQName = new QName(parentQName.getNamespace(), parentQName.getRevision(), parentQName.getPrefix(), old.getQName().getLocalName()); newPath = new ArrayList<>(parent.getPath().getPath()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/UsesAugmentTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/UsesAugmentTest.java index 991910e499..921b7070b7 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/UsesAugmentTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/UsesAugmentTest.java @@ -9,9 +9,17 @@ package org.opendaylight.yangtools.yang.parser.impl; import static org.junit.Assert.*; +import java.io.FileNotFoundException; +import java.net.URI; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; import java.util.Set; +import org.junit.Before; import org.junit.Test; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ChoiceNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -19,10 +27,21 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class UsesAugmentTest { + private final URI ns = URI.create("urn:opendaylight:params:xml:ns:yang:uses-grouping"); + private Date rev; + private final String prefix = "ug"; + private Set modules; + @Before + public void init() throws FileNotFoundException, ParseException { + rev = TestUtils.simpleDateFormat.parse("2013-07-30"); + } + + /** * Structure of testing model: * @@ -86,144 +105,232 @@ public class UsesAugmentTest { assertEquals(1, notifications.size()); NotificationDefinition pcreq = notifications.iterator().next(); assertNotNull(pcreq); + assertEquals(createPath("pcreq"), pcreq.getPath()); Set childNodes = pcreq.getChildNodes(); assertEquals(3, childNodes.size()); // * |-- leaf version (U) LeafSchemaNode version = (LeafSchemaNode)pcreq.getDataChildByName("version"); assertNotNull(version); + assertEquals(createPath("pcreq", "version"), version.getPath()); assertTrue(version.isAddedByUses()); // * |-- list requests ListSchemaNode requests = (ListSchemaNode)pcreq.getDataChildByName("requests"); assertNotNull(requests); + assertEquals(createPath("pcreq", "requests"), requests.getPath()); assertFalse(requests.isAddedByUses()); childNodes = requests.getChildNodes(); assertEquals(3, childNodes.size()); // * |-- |-- container rp ContainerSchemaNode rp = (ContainerSchemaNode)requests.getDataChildByName("rp"); assertNotNull(rp); + assertEquals(createPath("pcreq", "requests", "rp"), rp.getPath()); assertFalse(rp.isAddedByUses()); childNodes = rp.getChildNodes(); assertEquals(4, childNodes.size()); // * |-- |-- |-- leaf priority (U) LeafSchemaNode priority = (LeafSchemaNode)rp.getDataChildByName("priority"); assertNotNull(priority); + assertEquals(createPath("pcreq", "requests", "rp", "priority"), priority.getPath()); assertTrue(priority.isAddedByUses()); // * |-- |-- |-- container box (U) ContainerSchemaNode box = (ContainerSchemaNode)rp.getDataChildByName("box"); assertNotNull(box); + assertEquals(createPath("pcreq", "requests", "rp", "box"), box.getPath()); assertTrue(box.isAddedByUses()); // * |-- |-- |-- |-- container order (A) ContainerSchemaNode order = (ContainerSchemaNode)box.getDataChildByName("order"); assertNotNull(order); - //assertFalse(order.isAddedByUses()); + assertEquals(createPath("pcreq", "requests", "rp", "box", "order"), order.getPath()); + assertFalse(order.isAddedByUses()); assertTrue(order.isAugmenting()); assertEquals(2, order.getChildNodes().size()); // * |-- |-- |-- |-- |-- leaf processing-rule (U) LeafSchemaNode delete = (LeafSchemaNode)order.getDataChildByName("delete"); assertNotNull(delete); + assertEquals(createPath("pcreq", "requests", "rp", "box", "order", "delete"), delete.getPath()); assertTrue(delete.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore (U) LeafSchemaNode setup = (LeafSchemaNode)order.getDataChildByName("setup"); assertNotNull(setup); + assertEquals(createPath("pcreq", "requests", "rp", "box", "order", "setup"), setup.getPath()); assertTrue(setup.isAddedByUses()); // * |-- |-- |-- leaf processing-rule (U) LeafSchemaNode processingRule = (LeafSchemaNode)rp.getDataChildByName("processing-rule"); assertNotNull(processingRule); + assertEquals(createPath("pcreq", "requests", "rp", "processing-rule"), processingRule.getPath()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- leaf ignore (U) LeafSchemaNode ignore = (LeafSchemaNode)rp.getDataChildByName("ignore"); assertNotNull(ignore); + assertEquals(createPath("pcreq", "requests", "rp", "ignore"), ignore.getPath()); assertTrue(ignore.isAddedByUses()); // * |-- |-- path-key-expansion ContainerSchemaNode pke = (ContainerSchemaNode)requests.getDataChildByName("path-key-expansion"); assertNotNull(pke); + assertEquals(createPath("pcreq", "requests", "path-key-expansion"), pke.getPath()); assertFalse(pke.isAddedByUses()); // * |-- |-- |-- path-key ContainerSchemaNode pathKey = (ContainerSchemaNode)pke.getDataChildByName("path-key"); assertNotNull(pathKey); + assertEquals(createPath("pcreq", "requests", "path-key-expansion", "path-key"), pathKey.getPath()); assertFalse(pathKey.isAddedByUses()); assertEquals(3, pathKey.getChildNodes().size()); // * |-- |-- |-- |-- list path-keys (U) ListSchemaNode pathKeys = (ListSchemaNode)pathKey.getDataChildByName("path-keys"); assertNotNull(pathKeys); + assertEquals(createPath("pcreq", "requests", "path-key-expansion", "path-key", "path-keys"), pathKeys.getPath()); assertTrue(pathKeys.isAddedByUses()); childNodes = pathKeys.getChildNodes(); assertEquals(1, childNodes.size()); // * |-- |-- |-- |-- |-- leaf version (U) version = (LeafSchemaNode)pathKeys.getDataChildByName("version"); assertNotNull(version); + assertEquals(createPath("pcreq", "requests", "path-key-expansion", "path-key", "path-keys", "version"), version.getPath()); assertTrue(version.isAddedByUses()); assertFalse(version.isAugmenting()); // * |-- |-- |-- |-- |-- leaf processing-rule (U) processingRule = (LeafSchemaNode)pathKey.getDataChildByName("processing-rule"); assertNotNull(processingRule); + assertEquals(createPath("pcreq", "requests", "path-key-expansion", "path-key", "processing-rule"), processingRule.getPath()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore (U) ignore = (LeafSchemaNode)pathKey.getDataChildByName("ignore"); assertNotNull(ignore); + assertEquals(createPath("pcreq", "requests", "path-key-expansion", "path-key", "ignore"), ignore.getPath()); assertTrue(ignore.isAddedByUses()); // * |-- |-- container segment-computation ContainerSchemaNode sc = (ContainerSchemaNode)requests.getDataChildByName("segment-computation"); assertNotNull(sc); + assertEquals(createPath("pcreq", "requests", "segment-computation"), sc.getPath()); assertFalse(sc.isAddedByUses()); // * |-- |-- |-- container p2p ContainerSchemaNode p2p = (ContainerSchemaNode)sc.getDataChildByName("p2p"); assertNotNull(p2p); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p"), p2p.getPath()); assertFalse(p2p.isAddedByUses()); // * |-- |-- |-- |-- container endpoints ContainerSchemaNode endpoints = (ContainerSchemaNode)p2p.getDataChildByName("endpoints"); assertNotNull(endpoints); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "endpoints"), endpoints.getPath()); assertFalse(endpoints.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf processing-rule (U) processingRule = (LeafSchemaNode)endpoints.getDataChildByName("processing-rule"); assertNotNull(processingRule); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "endpoints", "processing-rule"), processingRule.getPath()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore (U) ignore = (LeafSchemaNode)endpoints.getDataChildByName("ignore"); assertNotNull(ignore); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "endpoints", "ignore"), ignore.getPath()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- |-- |-- container box box = (ContainerSchemaNode)endpoints.getDataChildByName("box"); assertNotNull(box); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "endpoints", "box"), box.getPath()); assertTrue(box.isAddedByUses()); // * |-- |-- |-- |-- |-- choice address-family (U) ChoiceNode af = (ChoiceNode)endpoints.getDataChildByName("address-family"); assertNotNull(af); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "endpoints", "address-family"), af.getPath()); assertTrue(af.isAddedByUses()); // * |-- |-- |-- |-- container reported-route ContainerSchemaNode reportedRoute = (ContainerSchemaNode)p2p.getDataChildByName("reported-route"); assertNotNull(reportedRoute); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "reported-route"), reportedRoute.getPath()); assertFalse(reportedRoute.isAddedByUses()); // * |-- |-- |-- |-- |-- container bandwidth ContainerSchemaNode bandwidth = (ContainerSchemaNode)reportedRoute.getDataChildByName("bandwidth"); assertNotNull(bandwidth); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "reported-route", "bandwidth"), bandwidth.getPath()); assertFalse(bandwidth.isAddedByUses()); // * |-- |-- |-- |-- |-- list subobjects ListSchemaNode subobjects = (ListSchemaNode)reportedRoute.getDataChildByName("subobjects"); assertNotNull(subobjects); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "reported-route", "subobjects"), subobjects.getPath()); assertTrue(subobjects.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf processing-rule (U) processingRule = (LeafSchemaNode)reportedRoute.getDataChildByName("processing-rule"); assertNotNull(processingRule); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "reported-route", "processing-rule"), processingRule.getPath()); assertTrue(processingRule.isAddedByUses()); // * |-- |-- |-- |-- |-- leaf ignore (U) ignore = (LeafSchemaNode)reportedRoute.getDataChildByName("ignore"); assertNotNull(ignore); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "reported-route", "ignore"), ignore.getPath()); assertTrue(ignore.isAddedByUses()); // * |-- |-- |-- |-- container bandwidth (U) bandwidth = (ContainerSchemaNode)p2p.getDataChildByName("bandwidth"); assertNotNull(bandwidth); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "bandwidth"), bandwidth.getPath()); assertTrue(bandwidth.isAddedByUses()); // * |-- |-- |-- |-- |-- container bandwidth (U) - bandwidth = (ContainerSchemaNode)bandwidth.getDataChildByName("bandwidth"); - assertNotNull(bandwidth); - assertTrue(bandwidth.isAddedByUses()); - - + ContainerSchemaNode bandwidthInner = (ContainerSchemaNode)bandwidth.getDataChildByName("bandwidth"); + assertNotNull(bandwidthInner); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "bandwidth", "bandwidth"), bandwidthInner.getPath()); + assertTrue(bandwidthInner.isAddedByUses()); + // * |-- |-- |-- |-- |-- leaf processing-rule (U) + processingRule = (LeafSchemaNode)bandwidth.getDataChildByName("processing-rule"); + assertNotNull(processingRule); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "bandwidth", "processing-rule"), processingRule.getPath()); + assertTrue(processingRule.isAddedByUses()); + // * |-- |-- |-- |-- |-- leaf ignore (U) + ignore = (LeafSchemaNode)bandwidth.getDataChildByName("ignore"); + assertNotNull(ignore); + assertEquals(createPath("pcreq", "requests", "segment-computation", "p2p", "bandwidth", "ignore"), ignore.getPath()); + assertTrue(ignore.isAddedByUses()); // * |-- list svec ListSchemaNode svec = (ListSchemaNode)pcreq.getDataChildByName("svec"); assertNotNull(svec); + assertEquals(createPath("pcreq", "svec"), svec.getPath()); assertFalse(svec.isAddedByUses()); + // * |-- |-- list metric + ListSchemaNode metric = (ListSchemaNode)svec.getDataChildByName("metric"); + assertNotNull(metric); + assertEquals(createPath("pcreq", "svec", "metric"), metric.getPath()); + assertFalse(metric.isAddedByUses()); + // * |-- |-- |-- leaf metric-type (U) + LeafSchemaNode metricType = (LeafSchemaNode)metric.getDataChildByName("metric-type"); + assertNotNull(metricType); + assertEquals(createPath("pcreq", "svec", "metric", "metric-type"), metricType.getPath()); + assertTrue(metricType.isAddedByUses()); + // * |-- |-- |-- box (U) + box = (ContainerSchemaNode)metric.getDataChildByName("box"); + assertNotNull(box); + assertEquals(createPath("pcreq", "svec", "metric", "box"), box.getPath()); + assertTrue(box.isAddedByUses()); + // * |-- |-- |-- leaf processing-rule (U) + processingRule = (LeafSchemaNode)metric.getDataChildByName("processing-rule"); + assertNotNull(processingRule); + assertEquals(createPath("pcreq", "svec", "metric", "processing-rule"), processingRule.getPath()); + assertTrue(processingRule.isAddedByUses()); + // * |-- |-- |-- leaf ignore (U) + ignore = (LeafSchemaNode)metric.getDataChildByName("ignore"); + assertNotNull(ignore); + assertEquals(createPath("pcreq", "svec", "metric", "ignore"), ignore.getPath()); + assertTrue(ignore.isAddedByUses()); + // * |-- |-- leaf link-diverse (U) + LeafSchemaNode linkDiverse = (LeafSchemaNode)svec.getDataChildByName("link-diverse"); + assertNotNull(linkDiverse); + assertEquals(createPath("pcreq", "svec", "link-diverse"), linkDiverse.getPath()); + assertTrue(linkDiverse.isAddedByUses()); + // * |-- |-- leaf processing-rule (U) + processingRule = (LeafSchemaNode)svec.getDataChildByName("processing-rule"); + assertNotNull(processingRule); + assertEquals(createPath("pcreq", "svec", "processing-rule"), processingRule.getPath()); + assertTrue(processingRule.isAddedByUses()); + // * |-- |-- leaf ignore (U) + ignore = (LeafSchemaNode)svec.getDataChildByName("ignore"); + assertNotNull(ignore); + assertEquals(createPath("pcreq", "svec", "ignore"), ignore.getPath()); + assertTrue(ignore.isAddedByUses()); + } + + private SchemaPath createPath(String... names) { + List path = new ArrayList<>(); + for(String name : names) { + path.add(new QName(ns, rev, prefix, name)); + } + return new SchemaPath(path, true); } } -- 2.36.6