From b156c09ebeff7d2b4509bddac6dfaa92bf05f33a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 20 Apr 2021 03:17:12 +0200 Subject: [PATCH] Remove schema-aware builders Schema-aware builders are woefully incomplete and actually have weird operations. Remove them to reduce confusion, as we will be replacing them with a better alternative (at some point in future). JIRA: YANGTOOLS-1249 Change-Id: I706a73c02d2493e486aeec0ce28cee118806fe49 Signed-off-by: Robert Varga --- .../yang/data/impl/schema/Builders.java | 88 --- ...ImmutableAnyXmlNodeSchemaAwareBuilder.java | 36 -- ...bleAugmentationNodeSchemaAwareBuilder.java | 43 -- ...ImmutableChoiceNodeSchemaAwareBuilder.java | 60 -- ...utableContainerNodeSchemaAwareBuilder.java | 61 -- .../ImmutableLeafNodeSchemaAwareBuilder.java | 37 -- ...bleLeafSetEntryNodeSchemaAwareBuilder.java | 42 -- ...mmutableLeafSetNodeSchemaAwareBuilder.java | 70 --- ...mutableMapEntryNodeSchemaAwareBuilder.java | 103 --- .../ImmutableMapNodeSchemaAwareBuilder.java | 59 -- .../impl/ImmutableUserLeafSetNodeBuilder.java | 6 +- ...ableUserLeafSetNodeSchemaAwareBuilder.java | 71 --- .../impl/ImmutableUserMapNodeBuilder.java | 8 +- ...mmutableUserMapNodeSchemaAwareBuilder.java | 61 -- .../DataTreeCandidateValidatorTest.java | 588 +++++------------- .../DataTreeCandidateValidatorTest2.java | 217 ++----- .../DataTreeCandidateValidatorTest3.java | 289 +++------ .../yang/data/impl/schema/BuilderTest.java | 99 +-- .../schema/NormalizedDataBuilderTest.java | 132 ---- .../yangtools/yang/data/impl/schema/test.yang | 249 -------- 20 files changed, 334 insertions(+), 1985 deletions(-) delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAnyXmlNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableChoiceNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableContainerNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetEntryNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserMapNodeSchemaAwareBuilder.java delete mode 100644 yang/yang-data-impl/src/test/resources/org/opendaylight/yangtools/yang/data/impl/schema/test.yang diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java index 1c958332da..639adf2b29 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java @@ -31,37 +31,19 @@ import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNode import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnyXmlNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnyXmlNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnydataNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserLeafSetNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserLeafSetNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserMapNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserMapNodeSchemaAwareBuilder; -import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ContainerLike; -import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; -import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; public final class Builders { private Builders() { @@ -72,31 +54,15 @@ public final class Builders { return ImmutableLeafNodeBuilder.create(); } - public static NormalizedNodeBuilder> leafBuilder( - final LeafSchemaNode schema) { - return ImmutableLeafNodeSchemaAwareBuilder.create(schema); - } - // FIXME: 7.0.0: add generic arguments public static NormalizedNodeBuilder> leafSetEntryBuilder() { return ImmutableLeafSetEntryNodeBuilder.create(); } - // FIXME: 7.0.0: add generic arguments - public static NormalizedNodeBuilder> leafSetEntryBuilder( - final LeafListSchemaNode schema) { - return ImmutableLeafSetEntryNodeSchemaAwareBuilder.create(schema); - } - public static NormalizedNodeBuilder anyXmlBuilder() { return ImmutableAnyXmlNodeBuilder.create(); } - public static NormalizedNodeBuilder anyXmlBuilder( - final AnyxmlSchemaNode schema) { - return ImmutableAnyXmlNodeSchemaAwareBuilder.create(schema); - } - public static NormalizedNodeBuilder> anydataBuilder( final Class objectModel) { return ImmutableAnydataNodeBuilder.create(objectModel); @@ -106,15 +72,6 @@ public final class Builders { return ImmutableUserLeafSetNodeBuilder.create(); } - public static ListNodeBuilder> orderedLeafSetBuilder(final LeafListSchemaNode schema) { - return ImmutableUserLeafSetNodeSchemaAwareBuilder.create(schema); - } - - public static ListNodeBuilder> orderedLeafSetBuilder(final LeafListSchemaNode schema, - final UserLeafSetNode node) { - return ImmutableUserLeafSetNodeSchemaAwareBuilder.create(schema, node); - } - public static ListNodeBuilder> leafSetBuilder() { return ImmutableLeafSetNodeBuilder.create(); } @@ -123,15 +80,6 @@ public final class Builders { return ImmutableLeafSetNodeBuilder.create(node); } - public static ListNodeBuilder> leafSetBuilder(final LeafListSchemaNode schema) { - return ImmutableLeafSetNodeSchemaAwareBuilder.create(schema); - } - - public static ListNodeBuilder> leafSetBuilder(final LeafListSchemaNode schema, - final SystemLeafSetNode node) { - return ImmutableLeafSetNodeSchemaAwareBuilder.create(schema, node); - } - public static DataContainerNodeBuilder containerBuilder() { return ImmutableContainerNodeBuilder.create(); } @@ -141,15 +89,6 @@ public final class Builders { return ImmutableContainerNodeBuilder.create(node); } - public static DataContainerNodeBuilder containerBuilder(final ContainerLike schema) { - return ImmutableContainerNodeSchemaAwareBuilder.create(schema); - } - - public static DataContainerNodeBuilder containerBuilder(final ContainerLike schema, - final ContainerNode node) { - return ImmutableContainerNodeSchemaAwareBuilder.create(schema, node); - } - public static DataContainerNodeBuilder mapEntryBuilder() { return ImmutableMapEntryNodeBuilder.create(); } @@ -159,19 +98,10 @@ public final class Builders { return ImmutableMapEntryNodeBuilder.create(mapEntryNode); } - public static DataContainerNodeBuilder mapEntryBuilder( - final ListSchemaNode schema) { - return ImmutableMapEntryNodeSchemaAwareBuilder.create(schema); - } - public static CollectionNodeBuilder orderedMapBuilder() { return ImmutableUserMapNodeBuilder.create(); } - public static CollectionNodeBuilder orderedMapBuilder(final ListSchemaNode schema) { - return ImmutableUserMapNodeSchemaAwareBuilder.create(schema); - } - public static CollectionNodeBuilder unkeyedListBuilder() { return ImmutableUnkeyedListNodeBuilder.create(); } @@ -184,32 +114,14 @@ public final class Builders { return ImmutableMapNodeBuilder.create(node); } - public static CollectionNodeBuilder mapBuilder(final ListSchemaNode schema) { - return ImmutableMapNodeSchemaAwareBuilder.create(schema); - } - - public static CollectionNodeBuilder mapBuilder(final ListSchemaNode schema, - final SystemMapNode node) { - return ImmutableMapNodeSchemaAwareBuilder.create(schema, node); - } - public static DataContainerNodeBuilder augmentationBuilder() { return ImmutableAugmentationNodeBuilder.create(); } - public static DataContainerNodeBuilder augmentationBuilder( - final AugmentationSchemaNode schema) { - return ImmutableAugmentationNodeSchemaAwareBuilder.create(schema); - } - public static DataContainerNodeBuilder choiceBuilder() { return ImmutableChoiceNodeBuilder.create(); } - public static DataContainerNodeBuilder choiceBuilder(final ChoiceSchemaNode schema) { - return ImmutableChoiceNodeSchemaAwareBuilder.create(schema); - } - public static DataContainerNodeBuilder unkeyedListEntryBuilder() { return ImmutableUnkeyedListEntryNodeBuilder.create(); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAnyXmlNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAnyXmlNodeSchemaAwareBuilder.java deleted file mode 100644 index 4da576405c..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAnyXmlNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import javax.xml.transform.dom.DOMSource; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; - -public final class ImmutableAnyXmlNodeSchemaAwareBuilder extends ImmutableAnyXmlNodeBuilder { - private ImmutableAnyXmlNodeSchemaAwareBuilder(final AnyxmlSchemaNode schema) { - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - public static @NonNull NormalizedNodeBuilder create( - final AnyxmlSchemaNode schema) { - return new ImmutableAnyXmlNodeSchemaAwareBuilder(schema); - } - - @Override - public ImmutableAnyXmlNodeBuilder withValue(final DOMSource withValue) { - return super.withValue(withValue); - } - - @Override - public ImmutableAnyXmlNodeBuilder withNodeIdentifier(final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeSchemaAwareBuilder.java deleted file mode 100644 index 5379a249dd..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataNodeContainerValidator; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; - -public class ImmutableAugmentationNodeSchemaAwareBuilder extends ImmutableAugmentationNodeBuilder { - private final DataNodeContainerValidator validator; - - protected ImmutableAugmentationNodeSchemaAwareBuilder(final AugmentationSchemaNode schema) { - this.validator = new DataNodeContainerValidator(schema); - super.withNodeIdentifier(DataSchemaContextNode.augmentationIdentifierFrom(schema)); - } - - @Override - public DataContainerNodeBuilder withNodeIdentifier( - final AugmentationIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } - - @Override - public DataContainerNodeBuilder withChild( - final DataContainerChild child) { - return super.withChild(validator.validateChild(child)); - } - - public static @NonNull DataContainerNodeBuilder create( - final AugmentationSchemaNode schema) { - return new ImmutableAugmentationNodeSchemaAwareBuilder(schema); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableChoiceNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableChoiceNodeSchemaAwareBuilder.java deleted file mode 100644 index 951b2fe5b8..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableChoiceNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import static java.util.Objects.requireNonNull; - -import java.util.Optional; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataNodeContainerValidator; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; -import org.opendaylight.yangtools.yang.data.util.NormalizedNodeSchemaUtils; -import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; - -public class ImmutableChoiceNodeSchemaAwareBuilder extends ImmutableChoiceNodeBuilder { - private final ChoiceSchemaNode schema; - - private @Nullable DataNodeContainerValidator validator = null; - - protected ImmutableChoiceNodeSchemaAwareBuilder(final ChoiceSchemaNode schema) { - this.schema = requireNonNull(schema, "Schema was null"); - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - @Override - public DataContainerNodeBuilder withNodeIdentifier( - final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } - - @Override - public DataContainerNodeBuilder withChild(final DataContainerChild child) { - if (validator == null) { - Optional detectedCaseOpt = NormalizedNodeSchemaUtils.detectCase(schema, child); - DataValidationException.checkLegalChild(detectedCaseOpt.isPresent(), child.getIdentifier(), schema); - validator = new DataNodeContainerValidator(detectedCaseOpt.get()); - } - - return super.withChild(validator.validateChild(child)); - } - - @Override - public ChoiceNode build() { - // TODO validate when statement - return super.build(); - } - - public static DataContainerNodeBuilder create(final ChoiceSchemaNode schema) { - return new ImmutableChoiceNodeSchemaAwareBuilder(schema); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableContainerNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableContainerNodeSchemaAwareBuilder.java deleted file mode 100644 index f51a74d7a2..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableContainerNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataNodeContainerValidator; -import org.opendaylight.yangtools.yang.model.api.ContainerLike; - -public final class ImmutableContainerNodeSchemaAwareBuilder extends ImmutableContainerNodeBuilder { - private final DataNodeContainerValidator validator; - - private ImmutableContainerNodeSchemaAwareBuilder(final ContainerLike schema) { - this.validator = new DataNodeContainerValidator(schema); - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - private ImmutableContainerNodeSchemaAwareBuilder(final ContainerLike schema, final ImmutableContainerNode node) { - super(node); - this.validator = new DataNodeContainerValidator(schema); - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - public static @NonNull DataContainerNodeBuilder create(final ContainerLike schema) { - return new ImmutableContainerNodeSchemaAwareBuilder(schema); - } - - public static @NonNull DataContainerNodeBuilder create(final ContainerLike schema, - final ContainerNode node) { - if (!(node instanceof ImmutableContainerNode)) { - throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); - } - return new ImmutableContainerNodeSchemaAwareBuilder(schema, (ImmutableContainerNode)node); - } - - @Override - public DataContainerNodeBuilder withNodeIdentifier( - final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } - - @Override - public DataContainerNodeBuilder withChild(final DataContainerChild child) { - validator.validateChild(child.getIdentifier()); - return super.withChild(child); - } - - @Override - public ContainerNode build() { - // TODO check when statements... somewhere - return super.build(); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeSchemaAwareBuilder.java deleted file mode 100644 index e3e6af8cde..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; - -public final class ImmutableLeafNodeSchemaAwareBuilder extends ImmutableLeafNodeBuilder { - private ImmutableLeafNodeSchemaAwareBuilder(final LeafSchemaNode schema) { - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - public static @NonNull NormalizedNodeBuilder> create( - final LeafSchemaNode schema) { - return new ImmutableLeafNodeSchemaAwareBuilder<>(schema); - } - - @Override - public NormalizedNodeBuilder> withValue(final T withValue) { - // TODO: check value type - return super.withValue(withValue); - } - - @Override - public NormalizedNodeBuilder> withNodeIdentifier( - final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetEntryNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetEntryNodeSchemaAwareBuilder.java deleted file mode 100644 index 24cba3f720..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetEntryNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import static java.util.Objects.requireNonNull; - -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; - -public final class ImmutableLeafSetEntryNodeSchemaAwareBuilder extends ImmutableLeafSetEntryNodeBuilder { - private final LeafListSchemaNode schema; - - private ImmutableLeafSetEntryNodeSchemaAwareBuilder(final LeafListSchemaNode schema) { - this.schema = requireNonNull(schema); - } - - public static @NonNull NormalizedNodeBuilder> create( - final LeafListSchemaNode schema) { - return new ImmutableLeafSetEntryNodeSchemaAwareBuilder<>(schema); - } - - @Override - public ImmutableLeafSetEntryNodeBuilder withValue(final T withValue) { - super.withNodeIdentifier(new NodeWithValue<>(schema.getQName(), withValue)); - // TODO check value type using TypeProvider ? - super.withValue(withValue); - return this; - } - - @Override - public ImmutableLeafSetEntryNodeBuilder withNodeIdentifier(final NodeWithValue withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeSchemaAwareBuilder.java deleted file mode 100644 index 4c1d641967..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import static com.google.common.base.Preconditions.checkArgument; -import static java.util.Objects.requireNonNull; - -import java.util.Collections; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; -import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; - -public final class ImmutableLeafSetNodeSchemaAwareBuilder extends ImmutableLeafSetNodeBuilder { - private final LeafListSchemaNode schema; - - private ImmutableLeafSetNodeSchemaAwareBuilder(final LeafListSchemaNode schema) { - this.schema = requireNonNull(schema); - super.withNodeIdentifier(new NodeIdentifier(schema.getQName())); - } - - public ImmutableLeafSetNodeSchemaAwareBuilder(final LeafListSchemaNode schema, final ImmutableLeafSetNode node) { - super(node); - this.schema = requireNonNull(schema); - // FIXME: Preconditions.checkArgument(schema.getQName().equals(node.getIdentifier())); - super.withNodeIdentifier(new NodeIdentifier(schema.getQName())); - } - - public static @NonNull ListNodeBuilder> create(final LeafListSchemaNode schema) { - return new ImmutableLeafSetNodeSchemaAwareBuilder<>(schema); - } - - public static @NonNull ListNodeBuilder> create(final LeafListSchemaNode schema, - final SystemLeafSetNode node) { - if (!(node instanceof ImmutableLeafSetNode)) { - throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); - } - - return new ImmutableLeafSetNodeSchemaAwareBuilder<>(schema, (ImmutableLeafSetNode) node); - } - - @Override - public ImmutableLeafSetNodeBuilder withChildValue(final T childValue) { - // TODO check value type - return super.withChildValue(childValue); - } - - @Override - public ImmutableLeafSetNodeBuilder withChild(final LeafSetEntryNode child) { - checkArgument(schema.getQName().equals(child.getNodeType()), - "Incompatible node type, should be: %s, is: %s", schema.getQName(), child.getNodeType()); - // TODO check value type using TypeProvider ? - DataValidationException.checkLegalChild(schema.getQName().equals(child.getNodeType()), child.getIdentifier(), - schema, Collections.singleton(schema.getQName())); - return super.withChild(child); - } - - @Override - public ImmutableLeafSetNodeBuilder withNodeIdentifier(final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeSchemaAwareBuilder.java deleted file mode 100644 index 606da373e2..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import static java.util.Objects.requireNonNull; - -import com.google.common.collect.ImmutableMap; -import java.util.Collection; -import java.util.Map; -import java.util.Map.Entry; -import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.util.ImmutableMapTemplate; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataNodeContainerValidator; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException.IllegalListKeyException; -import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; - -public final class ImmutableMapEntryNodeSchemaAwareBuilder extends ImmutableMapEntryNodeBuilder { - - private final ListSchemaNode schema; - private final DataNodeContainerValidator validator; - - ImmutableMapEntryNodeSchemaAwareBuilder(final ListSchemaNode schema) { - this.schema = requireNonNull(schema); - this.validator = new DataNodeContainerValidator(schema); - } - - @Override - public ImmutableMapEntryNodeBuilder withNodeIdentifier(final NodeIdentifierWithPredicates withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } - - @Override - public DataContainerNodeBuilder withChild( - final DataContainerChild child) { - validator.validateChild(child.getIdentifier()); - return super.withChild(child); - } - - @Override - public MapEntryNode build() { - super.withNodeIdentifier(constructNodeIdentifier()); - return super.build(); - } - - public static @NonNull DataContainerNodeBuilder create( - final ListSchemaNode schema) { - return new ImmutableMapEntryNodeSchemaAwareBuilder(schema); - } - - /** - * Build map entry node identifier from schema and provided children. - */ - private NodeIdentifierWithPredicates constructNodeIdentifier() { - final Map predicates; - final Collection keys = schema.getKeyDefinition(); - if (!keys.isEmpty()) { - predicates = keyDefToPredicates(keys); - } else if (!childrenQNamesToPaths.isEmpty()) { - predicates = childrenToPredicates(); - } else { - predicates = ImmutableMap.of(); - } - return NodeIdentifierWithPredicates.of(schema.getQName(), predicates); - } - - private Map childrenToPredicates() { - final Object[] values = new Object[childrenQNamesToPaths.size()]; - int offset = 0; - for (Entry entry : childrenQNamesToPaths.entrySet()) { - values[offset++] = nonnullKeyValue(entry.getKey(), getChild(entry.getValue())).body(); - } - return ImmutableMapTemplate.ordered(childrenQNamesToPaths.keySet()).instantiateWithValues(values); - } - - private Map keyDefToPredicates(final Collection keys) { - final Object[] values = new Object[keys.size()]; - int offset = 0; - for (QName key : keys) { - values[offset++] = nonnullKeyValue(key, getChild(childrenQNamesToPaths.get(key))).body(); - } - return ImmutableMapTemplate.ordered(keys).instantiateWithValues(values); - } - - private DataContainerChild nonnullKeyValue(final QName key, final @Nullable DataContainerChild value) { - if (value != null) { - return value; - } - throw new IllegalListKeyException("Key value not present for key: %s, in: %s values %s", key, schema.getQName(), - buildValue()); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java deleted file mode 100644 index 7fa111df5c..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import static java.util.Objects.requireNonNull; - -import java.util.Collections; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; -import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; - -public class ImmutableMapNodeSchemaAwareBuilder extends ImmutableMapNodeBuilder { - private final ListSchemaNode schema; - - protected ImmutableMapNodeSchemaAwareBuilder(final ListSchemaNode schema) { - this.schema = requireNonNull(schema); - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - protected ImmutableMapNodeSchemaAwareBuilder(final ListSchemaNode schema, final ImmutableMapNode node) { - super(node); - this.schema = requireNonNull(schema); - super.withNodeIdentifier(NodeIdentifier.create(schema.getQName())); - } - - public static @NonNull CollectionNodeBuilder create(final ListSchemaNode schema) { - return new ImmutableMapNodeSchemaAwareBuilder(schema); - } - - public static @NonNull CollectionNodeBuilder create(final ListSchemaNode schema, - final SystemMapNode node) { - if (!(node instanceof ImmutableMapNode)) { - throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); - } - - return new ImmutableMapNodeSchemaAwareBuilder(schema, (ImmutableMapNode) node); - } - - @Override - public ImmutableMapNodeBuilder withChild(final MapEntryNode child) { - DataValidationException.checkLegalChild(schema.getQName().equals(child.getNodeType()), child.getIdentifier(), - schema, Collections.singleton(schema.getQName())); - return super.withChild(child); - } - - @Override - public ImmutableMapNodeBuilder withNodeIdentifier(final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeBuilder.java index f45f9da541..dbed22fc10 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeBuilder.java @@ -23,17 +23,17 @@ import org.opendaylight.yangtools.yang.data.api.schema.UserLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; import org.opendaylight.yangtools.yang.data.spi.node.AbstractNormalizedNode; -public class ImmutableUserLeafSetNodeBuilder implements ListNodeBuilder> { +public final class ImmutableUserLeafSetNodeBuilder implements ListNodeBuilder> { private Map> value; private NodeIdentifier nodeIdentifier; private boolean dirty; - protected ImmutableUserLeafSetNodeBuilder() { + private ImmutableUserLeafSetNodeBuilder() { value = new LinkedHashMap<>(); dirty = false; } - protected ImmutableUserLeafSetNodeBuilder(final ImmutableUserLeafSetNode node) { + private ImmutableUserLeafSetNodeBuilder(final ImmutableUserLeafSetNode node) { nodeIdentifier = node.getIdentifier(); value = node.getChildren(); dirty = true; diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeSchemaAwareBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeSchemaAwareBuilder.java deleted file mode 100644 index 84945ee970..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeSchemaAwareBuilder.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; - -import static com.google.common.base.Preconditions.checkArgument; -import static java.util.Objects.requireNonNull; - -import java.util.Collections; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.UserLeafSetNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; -import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; - -public final class ImmutableUserLeafSetNodeSchemaAwareBuilder extends ImmutableUserLeafSetNodeBuilder { - private final LeafListSchemaNode schema; - - private ImmutableUserLeafSetNodeSchemaAwareBuilder(final LeafListSchemaNode schema) { - this.schema = requireNonNull(schema); - super.withNodeIdentifier(new NodeIdentifier(schema.getQName())); - } - - public ImmutableUserLeafSetNodeSchemaAwareBuilder(final LeafListSchemaNode schema, - final ImmutableUserLeafSetNode node) { - super(node); - this.schema = requireNonNull(schema); - // FIXME: Preconditions.checkArgument(schema.getQName().equals(node.getIdentifier())); - super.withNodeIdentifier(new NodeIdentifier(schema.getQName())); - } - - public static @NonNull ListNodeBuilder> create(final LeafListSchemaNode schema) { - return new ImmutableUserLeafSetNodeSchemaAwareBuilder<>(schema); - } - - public static @NonNull ListNodeBuilder> create(final LeafListSchemaNode schema, - final UserLeafSetNode node) { - if (!(node instanceof ImmutableUserLeafSetNode)) { - throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); - } - - return new ImmutableUserLeafSetNodeSchemaAwareBuilder<>(schema, (ImmutableUserLeafSetNode) node); - } - - @Override - public ImmutableUserLeafSetNodeBuilder withChildValue(final T childValue) { - // TODO check value type - return super.withChildValue(childValue); - } - - @Override - public ImmutableUserLeafSetNodeBuilder withChild(final LeafSetEntryNode child) { - checkArgument(schema.getQName().equals(child.getNodeType()), "Incompatible node type, should be: %s, is: %s", - schema.getQName(), child.getNodeType()); - // TODO check value type using TypeProvider ? - DataValidationException.checkLegalChild(schema.getQName().equals(child.getNodeType()), child.getIdentifier(), - schema, Collections.singleton(schema.getQName())); - return super.withChild(child); - } - - @Override - public ImmutableUserLeafSetNodeBuilder withNodeIdentifier(final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserMapNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserMapNodeBuilder.java index 4e887379f6..5a6f577fb4 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserMapNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserMapNodeBuilder.java @@ -23,19 +23,19 @@ import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBui import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder; import org.opendaylight.yangtools.yang.data.spi.node.AbstractNormalizedNode; -public class ImmutableUserMapNodeBuilder implements CollectionNodeBuilder { +public final class ImmutableUserMapNodeBuilder implements CollectionNodeBuilder { private static final int DEFAULT_CAPACITY = 4; private Map value; private NodeIdentifier nodeIdentifier; private boolean dirty; - protected ImmutableUserMapNodeBuilder() { + private ImmutableUserMapNodeBuilder() { this.value = new LinkedHashMap<>(DEFAULT_CAPACITY); this.dirty = false; } - protected ImmutableUserMapNodeBuilder(final int sizeHint) { + private ImmutableUserMapNodeBuilder(final int sizeHint) { if (sizeHint >= 0) { this.value = new LinkedHashMap<>(sizeHint + sizeHint / 3); } else { @@ -44,7 +44,7 @@ public class ImmutableUserMapNodeBuilder implements CollectionNodeBuilder create(final ListSchemaNode schema) { - return new ImmutableUserMapNodeSchemaAwareBuilder(schema); - } - - public static @NonNull CollectionNodeBuilder create(final ListSchemaNode schema, - final UserMapNode node) { - if (!(node instanceof ImmutableUserMapNode)) { - throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass())); - } - - return new ImmutableUserMapNodeSchemaAwareBuilder(schema, (ImmutableUserMapNode) node); - } - - @Override - public CollectionNodeBuilder withChild(final MapEntryNode child) { - DataValidationException.checkLegalChild(schema.getQName().equals(child.getNodeType()), child.getIdentifier(), - schema, Collections.singleton(schema.getQName())); - return super.withChild(child); - } - - @Override - public CollectionNodeBuilder withNodeIdentifier( - final NodeIdentifier withNodeIdentifier) { - throw new UnsupportedOperationException("Node identifier created from schema"); - } -} diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java index b25ce0047f..747e59e0f3 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest.java @@ -8,7 +8,7 @@ package org.opendaylight.yangtools.yang.data.impl.leafref.context; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertThrows; import java.util.HashMap; import java.util.Map; @@ -28,12 +28,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; -import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; @@ -145,13 +140,9 @@ public class DataTreeCandidateValidatorTest { inMemoryDataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL, context); - final DataTreeModification initialDataTreeModification = inMemoryDataTree - .takeSnapshot().newModification(); + final DataTreeModification initialDataTreeModification = inMemoryDataTree.takeSnapshot().newModification(); - final ContainerSchemaNode odlProjContSchemaNode = (ContainerSchemaNode) valModule.findDataChildByName(odl) - .get(); - - final ContainerNode odlProjectContainer = createOdlContainer(odlProjContSchemaNode); + final ContainerNode odlProjectContainer = createOdlContainer(); final YangInstanceIdentifier path = YangInstanceIdentifier.of(odl); initialDataTreeModification.write(path, odlProjectContainer); @@ -187,15 +178,10 @@ public class DataTreeCandidateValidatorTest { private static void writeContributors() throws DataValidationFailedException { - final ContainerSchemaNode contributorContSchemaNode = (ContainerSchemaNode) valModule - .findDataChildByName(odlContributor).get(); - - final ContainerNode contributorContainer = createBasicContributorContainer(contributorContSchemaNode); + final ContainerNode contributorContainer = createBasicContributorContainer(); - final YangInstanceIdentifier contributorPath = YangInstanceIdentifier - .of(odlContributor); - final DataTreeModification writeModification = inMemoryDataTree - .takeSnapshot().newModification(); + final YangInstanceIdentifier contributorPath = YangInstanceIdentifier.of(odlContributor); + final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); writeModification.write(contributorPath, contributorContainer); writeModification.ready(); @@ -207,15 +193,9 @@ public class DataTreeCandidateValidatorTest { LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - boolean exception = false; - try { - LeafRefValidation.validate(writeContributorsCandidate, - rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(3, e.getValidationsErrorsCount()); - exception = true; - } + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeContributorsCandidate, rootLeafRefContext)); + assertEquals(3, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeContributorsCandidate); @@ -223,45 +203,32 @@ public class DataTreeCandidateValidatorTest { LOG.debug("After write of contributors: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - - assertTrue(exception); - } private static void writeIntoMapEntry() throws DataValidationFailedException { - final Map keys = new HashMap<>(); keys.put(name, "New Project"); final NodeIdentifierWithPredicates mapEntryPath = NodeIdentifierWithPredicates.of(project, keys); - final YangInstanceIdentifier leaderPath = YangInstanceIdentifier - .of(odl).node(project).node(mapEntryPath).node(lead); + final YangInstanceIdentifier leaderPath = YangInstanceIdentifier.of(odl).node(project).node(mapEntryPath) + .node(lead); - final LeafNode leader = ImmutableNodes.leafNode(lead, - "Updated leader"); + final LeafNode leader = ImmutableNodes.leafNode(lead, "Updated leader"); - final DataTreeModification writeModification = inMemoryDataTree - .takeSnapshot().newModification(); + final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); writeModification.write(leaderPath, leader); writeModification.ready(); - final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree - .prepare(writeModification); + final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree.prepare(writeModification); LOG.debug("*************************"); LOG.debug("Before write into map entry (update of leader name): "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - boolean exception = false; - try { - LeafRefValidation.validate(writeContributorsCandidate, - rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(1, e.getValidationsErrorsCount()); - exception = true; - } + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeContributorsCandidate, rootLeafRefContext)); + assertEquals(1, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeContributorsCandidate); @@ -269,51 +236,29 @@ public class DataTreeCandidateValidatorTest { LOG.debug("After write into map entry (update of leader name): "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - - assertTrue(exception); - } private static void writeMapEntry() throws DataValidationFailedException { + final NodeIdentifierWithPredicates mapEntryPath = NodeIdentifierWithPredicates.of(project, name, "New Project"); - final Map keys = new HashMap<>(); - keys.put(name, "New Project"); - final NodeIdentifierWithPredicates mapEntryPath = NodeIdentifierWithPredicates.of(project, keys); - - final YangInstanceIdentifier newOdlProjectMapEntryPath = YangInstanceIdentifier - .of(odl).node(project).node(mapEntryPath); - - final ContainerSchemaNode odlProjContSchemaNode = (ContainerSchemaNode) valModule.findDataChildByName(odl) - .get(); - final ListSchemaNode projListSchemaNode = (ListSchemaNode) odlProjContSchemaNode.findDataChildByName(project) - .get(); final MapEntryNode newProjectMapEntry = createProjectListEntry( "New Project", "New Project description ...", - "Leader of New Project", "Owner of New Project", - projListSchemaNode); + "Leader of New Project", "Owner of New Project"); - final DataTreeModification writeModification = inMemoryDataTree - .takeSnapshot().newModification(); - writeModification.write(newOdlProjectMapEntryPath, newProjectMapEntry); + final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); + writeModification.write(YangInstanceIdentifier.of(odl).node(project).node(mapEntryPath), newProjectMapEntry); writeModification.ready(); - final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree - .prepare(writeModification); + final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree.prepare(writeModification); LOG.debug("*************************"); LOG.debug("Before map entry write: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - boolean exception = false; - try { - LeafRefValidation.validate(writeContributorsCandidate, - rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(2, e.getValidationsErrorsCount()); - exception = true; - } + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeContributorsCandidate, rootLeafRefContext)); + assertEquals(2, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeContributorsCandidate); @@ -321,48 +266,32 @@ public class DataTreeCandidateValidatorTest { LOG.debug("After map entry write: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - - assertTrue(exception); - } private static void write() throws DataValidationFailedException { + final ContainerNode contributorContainer = createContributorContainer( + (ContainerSchemaNode) valModule.getDataChildByName(odlContributor)); - final ContainerSchemaNode contributorContSchemaNode = (ContainerSchemaNode) valModule - .findDataChildByName(odlContributor).get(); - - final ContainerNode contributorContainer = createContributorContainer(contributorContSchemaNode); - - final YangInstanceIdentifier contributorPath = YangInstanceIdentifier - .of(odlContributor); - final DataTreeModification writeModification = inMemoryDataTree - .takeSnapshot().newModification(); + final YangInstanceIdentifier contributorPath = YangInstanceIdentifier.of(odlContributor); + final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); writeModification.write(contributorPath, contributorContainer); writeModification.write(YangInstanceIdentifier.of(l1), - ImmutableNodes.leafNode(l1, "Leafref l1 under the root")); - writeModification - .write(YangInstanceIdentifier.of(l2), ImmutableNodes.leafNode( - l2, "Leafref target l2 under the root")); + ImmutableNodes.leafNode(l1, "Leafref l1 under the root")); + writeModification.write(YangInstanceIdentifier.of(l2), + ImmutableNodes.leafNode(l2, "Leafref target l2 under the root")); writeModification.ready(); - final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree - .prepare(writeModification); + final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree.prepare(writeModification); LOG.debug("*************************"); LOG.debug("Before write: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - boolean exception = false; - try { - LeafRefValidation.validate(writeContributorsCandidate, - rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(12, e.getValidationsErrorsCount()); - exception = true; - } + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeContributorsCandidate, rootLeafRefContext)); + assertEquals(12, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeContributorsCandidate); @@ -370,61 +299,29 @@ public class DataTreeCandidateValidatorTest { LOG.debug("After write: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - - assertTrue(exception); } private static void write2() throws DataValidationFailedException { - - final ContainerSchemaNode odlCon = (ContainerSchemaNode) valModule.findDataChildByName(odl).get(); - final ContainerSchemaNode con1Con = (ContainerSchemaNode) odlCon.findDataChildByName(con1).get(); - final LeafNode l1Leaf = ImmutableNodes.leafNode(l1, "l1 value"); - final DataContainerNodeBuilder containerBuilder = Builders - .containerBuilder(con1Con); - containerBuilder.addChild(l1Leaf); - final ContainerNode con1Node = containerBuilder.build(); - - final YangInstanceIdentifier con1Path = YangInstanceIdentifier.of(odl) - .node(con1); - final DataTreeModification writeModification = inMemoryDataTree - .takeSnapshot().newModification(); - writeModification.write(con1Path, con1Node); - - final ChoiceNode choiceNode = createChoiceNode(); - final YangInstanceIdentifier choicePath = YangInstanceIdentifier - .of(odl).node(ch1); - writeModification.write(choicePath, choiceNode); - - final ContainerNode con3Node = createCon3Node(); - final YangInstanceIdentifier con3Path = YangInstanceIdentifier.of(odl) - .node(con3); - writeModification.write(con3Path, con3Node); - - final LeafSetNode leafListNode = createLeafRefLeafListNode(); - final YangInstanceIdentifier leafListPath = YangInstanceIdentifier.of( - odl).node(leafrefLeafList); - writeModification.write(leafListPath, leafListNode); + final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); + writeModification.write(YangInstanceIdentifier.of(odl).node(con1), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(con1)) + .addChild(ImmutableNodes.leafNode(l1, "l1 value")) + .build()); + writeModification.write(YangInstanceIdentifier.of(odl).node(ch1), createChoiceNode()); + writeModification.write(YangInstanceIdentifier.of(odl).node(con3), createCon3Node()); + writeModification.write(YangInstanceIdentifier.of(odl).node(leafrefLeafList), createLeafRefLeafListNode()); writeModification.ready(); - final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree - .prepare(writeModification); + final DataTreeCandidate writeContributorsCandidate = inMemoryDataTree.prepare(writeModification); LOG.debug("*************************"); LOG.debug("Before write2: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - boolean exception = false; - try { - LeafRefValidation.validate(writeContributorsCandidate, - rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(6, e.getValidationsErrorsCount()); - exception = true; - } - - assertTrue(exception); + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeContributorsCandidate, rootLeafRefContext)); + assertEquals(6, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeContributorsCandidate); @@ -432,7 +329,6 @@ public class DataTreeCandidateValidatorTest { LOG.debug("After write2: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - } private static @NonNull LeafSetNode createLeafRefLeafListNode() { @@ -445,104 +341,68 @@ public class DataTreeCandidateValidatorTest { } private static ContainerNode createCon3Node() { - - final CollectionNodeBuilder mapBuilder = Builders.mapBuilder(); - mapBuilder.withNodeIdentifier(new NodeIdentifier(list3InChoice)); - - mapBuilder.addChild(createList3Entry("k1", "val1", "valA", "valX")); - mapBuilder.addChild(createList3Entry("k2", "val2", "valB", "valY")); - - final DataContainerNodeBuilder choiceBuilder = Builders - .choiceBuilder(); - choiceBuilder.withNodeIdentifier(new NodeIdentifier(choiceInCon3)); - - choiceBuilder.addChild(mapBuilder.build()); - - final DataContainerNodeBuilder containerBuilder = Builders - .containerBuilder(); - containerBuilder.withNodeIdentifier(new NodeIdentifier(con3)); - - containerBuilder.addChild(choiceBuilder.build()); - - return containerBuilder.build(); + return Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(con3)) + .addChild(Builders.choiceBuilder() + .withNodeIdentifier(new NodeIdentifier(choiceInCon3)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(list3InChoice)) + .addChild(createList3Entry("k1", "val1", "valA", "valX")) + .addChild(createList3Entry("k2", "val2", "valB", "valY")) + .build()) + .build()) + .build(); } - private static MapEntryNode createList3Entry(final String keyVal, - final String l3Val1, final String l3Val2, final String l3Val3) { - final DataContainerNodeBuilder mapEntryBuilder = Builders - .mapEntryBuilder(); - mapEntryBuilder.withNodeIdentifier(NodeIdentifierWithPredicates.of(list3InChoice, k, keyVal)); - - final ListNodeBuilder> leafSetBuilder = Builders.leafSetBuilder(); - leafSetBuilder.withNodeIdentifier(new NodeIdentifier(l3)); - - leafSetBuilder.addChild(createLeafSetEntry(l3, l3Val1)); - leafSetBuilder.addChild(createLeafSetEntry(l3, l3Val2)); - leafSetBuilder.addChild(createLeafSetEntry(l3, l3Val3)); - - mapEntryBuilder.addChild(ImmutableNodes.leafNode(k, keyVal)); - mapEntryBuilder.addChild(leafSetBuilder.build()); - - return mapEntryBuilder.build(); + private static MapEntryNode createList3Entry(final String keyVal,final String l3Val1, final String l3Val2, + final String l3Val3) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(list3InChoice, k, keyVal)) + .addChild(ImmutableNodes.leafNode(k, keyVal)) + .addChild(Builders.leafSetBuilder() + .withNodeIdentifier(new NodeIdentifier(l3)) + .addChild(createLeafSetEntry(l3, l3Val1)) + .addChild(createLeafSetEntry(l3, l3Val2)) + .addChild(createLeafSetEntry(l3, l3Val3)) + .build()) + .build(); } - private static LeafSetEntryNode createLeafSetEntry( - final QName qname, final String val) { - final NormalizedNodeBuilder> leafSetEntryBuilder = Builders - .leafSetEntryBuilder(); - leafSetEntryBuilder.withNodeIdentifier(new NodeWithValue<>(qname, val)); - leafSetEntryBuilder.withValue(val); - return leafSetEntryBuilder.build(); + private static LeafSetEntryNode createLeafSetEntry(final QName qname, final String val) { + return Builders.leafSetEntryBuilder() + .withNodeIdentifier(new NodeWithValue<>(qname, val)) + .withValue(val) + .build(); } private static ChoiceNode createChoiceNode() { - - final CollectionNodeBuilder listInChoiceBuilder = Builders.mapBuilder(); - listInChoiceBuilder.withNodeIdentifier(new NodeIdentifier(listInChoice)); - - listInChoiceBuilder.addChild(createListInChoiceEntry("key1", "leafref-in-choice value", "val1")); - listInChoiceBuilder.addChild(createListInChoiceEntry("key2", "l1 value", "val2")); - listInChoiceBuilder.addChild(createListInChoiceEntry("key3", "l1 value", "val3")); - - final DataContainerNodeBuilder choice2Builder = Builders.choiceBuilder(); - choice2Builder.withNodeIdentifier(new NodeIdentifier(ch2)); - - choice2Builder.addChild(listInChoiceBuilder.build()); - - final DataContainerNodeBuilder choiceBuilder = Builders.choiceBuilder(); - choiceBuilder.withNodeIdentifier(new NodeIdentifier(ch1)); - choiceBuilder.addChild(choice2Builder.build()); - - return choiceBuilder.build(); + return Builders.choiceBuilder() + .withNodeIdentifier(new NodeIdentifier(ch1)) + .addChild(Builders.choiceBuilder() + .withNodeIdentifier(new NodeIdentifier(ch2)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(listInChoice)) + .addChild(createListInChoiceEntry("key1", "leafref-in-choice value", "val1")) + .addChild(createListInChoiceEntry("key2", "l1 value", "val2")) + .addChild(createListInChoiceEntry("key3", "l1 value", "val3")) + .build()) + .build()) + .build(); } - private static MapEntryNode createListInChoiceEntry(final String keyVal, - final String leafrefInChoiceVal, + private static MapEntryNode createListInChoiceEntry(final String keyVal, final String leafrefInChoiceVal, final String leafrefInChoiceToChoiceVal) { - - final DataContainerNodeBuilder mapEntryBuilder = Builders - .mapEntryBuilder(); - - mapEntryBuilder.withNodeIdentifier(NodeIdentifierWithPredicates.of( - listInChoice, listInChoiceKey, keyVal)); - - mapEntryBuilder.addChild(ImmutableNodes.leafNode(listInChoiceKey, - keyVal)); - mapEntryBuilder.addChild(ImmutableNodes.leafNode(leafrefInChoice, - leafrefInChoiceVal)); - mapEntryBuilder.addChild(ImmutableNodes.leafNode( - leafrefInChoiceToChoice, leafrefInChoiceToChoiceVal)); - - return mapEntryBuilder.build(); + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(listInChoice, listInChoiceKey, keyVal)) + .addChild(ImmutableNodes.leafNode(listInChoiceKey, keyVal)) + .addChild(ImmutableNodes.leafNode(leafrefInChoice, leafrefInChoiceVal)) + .addChild(ImmutableNodes.leafNode(leafrefInChoiceToChoice, leafrefInChoiceToChoiceVal)) + .build(); } private static void delete() throws DataValidationFailedException { - - final YangInstanceIdentifier contributorPath = YangInstanceIdentifier - .of(odlContributor); - final DataTreeModification delete = inMemoryDataTree.takeSnapshot() - .newModification(); - delete.delete(contributorPath); + final DataTreeModification delete = inMemoryDataTree.takeSnapshot().newModification(); + delete.delete(YangInstanceIdentifier.of(odlContributor)); delete.ready(); final DataTreeCandidate deleteContributorsCanditate = inMemoryDataTree.prepare(delete); @@ -552,17 +412,10 @@ public class DataTreeCandidateValidatorTest { LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - boolean exception = false; - try { - LeafRefValidation.validate(deleteContributorsCanditate, - rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(6, e.getValidationsErrorsCount()); - exception = true; - } - assertTrue(exception); + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(deleteContributorsCanditate, rootLeafRefContext)); + assertEquals(6, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(deleteContributorsCanditate); @@ -570,197 +423,88 @@ public class DataTreeCandidateValidatorTest { LOG.debug("After delete: "); LOG.debug("*************************"); LOG.debug(inMemoryDataTree.toString()); - } - private static ContainerNode createContributorContainer( - final ContainerSchemaNode contributorContSchemaNode) { - - final ListSchemaNode contributorListSchemaNode = - (ListSchemaNode) contributorContSchemaNode.findDataChildByName(contributor).get(); - - final DataContainerNodeBuilder contributorContainerBldr = - Builders.containerBuilder(contributorContSchemaNode); - - final SystemMapNode contributorMap = createContributorList(contributorListSchemaNode); - contributorContainerBldr.addChild(contributorMap); - - final ContainerNode contributorContainer = contributorContainerBldr.build(); - - return contributorContainer; + private static ContainerNode createContributorContainer(final ContainerSchemaNode contributorCont) { + return Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(odlContributor)) + .addChild(createContributorList((ListSchemaNode) contributorCont.findDataChildByName(contributor).get())) + .build(); } - private static SystemMapNode createContributorList( - final ListSchemaNode contributorListSchemaNode) { - - final CollectionNodeBuilder contributorMapBldr = - Builders.mapBuilder(contributorListSchemaNode); - - final MapEntryNode contributorMapEntry1 = createContributorListEntry( - "Leader of Yangtools", "Yangtools Leader name", "Yangtools", - "Yangtools description ...", contributorListSchemaNode); - final MapEntryNode contributorMapEntry2 = createContributorListEntry( - "Leader of MD-SAL", "MD-SAL Leader name", "MD-SAL", - "MD-SAL description ...", contributorListSchemaNode); - final MapEntryNode contributorMapEntry3 = createContributorListEntry( - "Leader of Controller", "Controller Leader name", "Controller", - "Controller description ...", contributorListSchemaNode); - - final MapEntryNode contributorMapEntry4 = createContributorListEntry( - "jdoe", "John Doe", "MD-SAL", "Yangtools description ...", - contributorListSchemaNode); - - final MapEntryNode contributorMapEntry5 = createContributorListEntry( - "foo", "foo name", "Controller", "MD-SAL description ...", - contributorListSchemaNode); - - final MapEntryNode contributorMapEntry6 = createContributorListEntry( - "bar", "bar name", "Yangtools", "Controller description ...", - contributorListSchemaNode); - - final MapEntryNode contributorMapEntry7 = createContributorListEntry( - "baz", "baz name", "Unknown Project", - "Unknown Project description ...", contributorListSchemaNode); - - final MapEntryNode contributorMapEntry8 = createContributorListEntry( - "pk", "pk name", "Unknown Project 2", - "Controller description ...", contributorListSchemaNode); - - contributorMapBldr.addChild(contributorMapEntry1); - contributorMapBldr.addChild(contributorMapEntry2); - contributorMapBldr.addChild(contributorMapEntry3); - contributorMapBldr.addChild(contributorMapEntry4); - contributorMapBldr.addChild(contributorMapEntry5); - contributorMapBldr.addChild(contributorMapEntry6); - contributorMapBldr.addChild(contributorMapEntry7); - contributorMapBldr.addChild(contributorMapEntry8); - - return contributorMapBldr.build(); + private static SystemMapNode createContributorList(final ListSchemaNode contributorListSchemaNode) { + return Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(contributor)) + .addChild(createContributorListEntry("Leader of Yangtools", "Yangtools Leader name", "Yangtools", + "Yangtools description ...")) + .addChild(createContributorListEntry("Leader of MD-SAL", "MD-SAL Leader name", "MD-SAL", + "MD-SAL description ...")) + .addChild(createContributorListEntry("Leader of Controller", "Controller Leader name", "Controller", + "Controller description ...")) + .addChild(createContributorListEntry("jdoe", "John Doe", "MD-SAL", "Yangtools description ...")) + .addChild(createContributorListEntry("foo", "foo name", "Controller", "MD-SAL description ...")) + .addChild(createContributorListEntry("bar", "bar name", "Yangtools", "Controller description ...")) + .addChild(createContributorListEntry("baz", "baz name", "Unknown Project", + "Unknown Project description ...")) + .addChild(createContributorListEntry("pk", "pk name", "Unknown Project 2", "Controller description ...")) + .build(); } - private static MapEntryNode createContributorListEntry( - final String loginVal, final String contributorNameVal, - final String odlProjectNameVal, final String odlProjectDescVal, - final ListSchemaNode contributorListSchemaNode) { - - final LeafNode loginLeaf = ImmutableNodes.leafNode(login, loginVal); - final LeafNode contributorNameLeaf = ImmutableNodes.leafNode(contributorName, contributorNameVal); - final LeafNode odlProjectNameLeafRef = ImmutableNodes.leafNode(odlProjectName, odlProjectNameVal); - final LeafNode odlProjectDescLeafRef = ImmutableNodes.leafNode(odlProjectDesc, odlProjectDescVal); - - return Builders.mapEntryBuilder(contributorListSchemaNode) - .addChild(loginLeaf) - .addChild(contributorNameLeaf) - .addChild(odlProjectNameLeafRef) - .addChild(odlProjectDescLeafRef) - .build(); + private static MapEntryNode createContributorListEntry(final String loginVal, final String contributorNameVal, + final String odlProjectNameVal, final String odlProjectDescVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(contributor, login, loginVal)) + .addChild(ImmutableNodes.leafNode(login, loginVal)) + .addChild(ImmutableNodes.leafNode(contributorName, contributorNameVal)) + .addChild(ImmutableNodes.leafNode(odlProjectName, odlProjectNameVal)) + .addChild(ImmutableNodes.leafNode(odlProjectDesc, odlProjectDescVal)) + .build(); } - private static ContainerNode createOdlContainer( - final ContainerSchemaNode container) { - - final ListSchemaNode projListSchemaNode = (ListSchemaNode) container.findDataChildByName(project).get(); - - final DataContainerNodeBuilder odlProjectContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode projectMap = createProjectList(projListSchemaNode); - odlProjectContainerBldr.addChild(projectMap); - - final ContainerNode odlProjectContainer = odlProjectContainerBldr - .build(); - - return odlProjectContainer; + private static ContainerNode createOdlContainer() { + return Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(odl)) + .addChild(createProjectList()) + .build(); } - private static SystemMapNode createProjectList( - final ListSchemaNode projListSchemaNode) { - - final CollectionNodeBuilder projectMapBldr = Builders - .mapBuilder(projListSchemaNode); - - final MapEntryNode projMapEntry1 = createProjectListEntry("Yangtools", - "Yangtools description ...", "Leader of Yangtools", - "Owner of Yangtools", projListSchemaNode); - final MapEntryNode projMapEntry2 = createProjectListEntry("MD-SAL", - "MD-SAL description ...", "Leader of MD-SAL", - "Owner of MD-SAL", projListSchemaNode); - final MapEntryNode projMapEntry3 = createProjectListEntry("Controller", - "Controller description ...", "Leader of Controller", - "Owner of Controller", projListSchemaNode); - - projectMapBldr.addChild(projMapEntry1); - projectMapBldr.addChild(projMapEntry2); - projectMapBldr.addChild(projMapEntry3); - - return projectMapBldr.build(); + private static SystemMapNode createProjectList() { + return Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(project)) + .addChild(createProjectListEntry("Yangtools", "Yangtools description ...", "Leader of Yangtools", + "Owner of Yangtools")) + .addChild(createProjectListEntry("MD-SAL", "MD-SAL description ...", "Leader of MD-SAL", "Owner of MD-SAL")) + .addChild(createProjectListEntry("Controller", "Controller description ...", "Leader of Controller", + "Owner of Controller")).build(); } - private static MapEntryNode createProjectListEntry(final String nameVal, - final String descVal, final String leadVal, final String ownerVal, - final ListSchemaNode projListSchemaNode) { - - final LeafNode nameLeaf = ImmutableNodes - .leafNode(name, nameVal); - final LeafNode descLeaf = ImmutableNodes - .leafNode(desc, descVal); - final LeafNode leadLeafRef = ImmutableNodes.leafNode(lead, - leadVal); - final LeafNode ownerLeafRef = ImmutableNodes.leafNode(owner, - ownerVal); - - final DataContainerNodeBuilder projMapEntryBldr = Builders - .mapEntryBuilder(projListSchemaNode); - - projMapEntryBldr.addChild(nameLeaf); - projMapEntryBldr.addChild(descLeaf); - projMapEntryBldr.addChild(leadLeafRef); - projMapEntryBldr.addChild(ownerLeafRef); - final MapEntryNode projMapEntry = projMapEntryBldr.build(); - - return projMapEntry; + private static MapEntryNode createProjectListEntry(final String nameVal, final String descVal, final String leadVal, + final String ownerVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(project, name, nameVal)) + .addChild(ImmutableNodes.leafNode(name, nameVal)) + .addChild(ImmutableNodes.leafNode(desc, descVal)) + .addChild(ImmutableNodes.leafNode(lead, leadVal)) + .addChild(ImmutableNodes.leafNode(owner, ownerVal)) + .build(); } - private static ContainerNode createBasicContributorContainer( - final ContainerSchemaNode contributorContSchemaNode) { - - final ListSchemaNode contributorListSchemaNode = (ListSchemaNode) contributorContSchemaNode - .findDataChildByName(contributor).get(); - - final DataContainerNodeBuilder contributorContainerBldr = Builders - .containerBuilder(contributorContSchemaNode); - - final SystemMapNode contributorMap = createBasicContributorList(contributorListSchemaNode); - contributorContainerBldr.addChild(contributorMap); - - final ContainerNode contributorContainer = contributorContainerBldr - .build(); - - return contributorContainer; - + private static ContainerNode createBasicContributorContainer() { + return Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(odlContributor)) + .addChild(createBasicContributorList()) + .build(); } - private static SystemMapNode createBasicContributorList( - final ListSchemaNode contributorListSchemaNode) { - - final CollectionNodeBuilder contributorMapBldr = - Builders.mapBuilder(contributorListSchemaNode); - - final MapEntryNode contributorMapEntry1 = createContributorListEntry( - "Leader of Yangtools", "Yangtools Leader name", "Yangtools", - "Yangtools description ...", contributorListSchemaNode); - final MapEntryNode contributorMapEntry2 = createContributorListEntry( - "Leader of MD-SAL", "MD-SAL Leader name", "MD-SAL", - "MD-SAL description ...", contributorListSchemaNode); - final MapEntryNode contributorMapEntry3 = createContributorListEntry( - "Leader of Controller", "Controller Leader name", "Controller", - "Controller description ...", contributorListSchemaNode); - - contributorMapBldr.addChild(contributorMapEntry1); - contributorMapBldr.addChild(contributorMapEntry2); - contributorMapBldr.addChild(contributorMapEntry3); - - return contributorMapBldr.build(); + private static SystemMapNode createBasicContributorList() { + return Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(contributor)) + .addChild(createContributorListEntry("Leader of Yangtools", "Yangtools Leader name", "Yangtools", + "Yangtools description ...")) + .addChild(createContributorListEntry("Leader of MD-SAL", "MD-SAL Leader name", "MD-SAL", + "MD-SAL description ...")) + .addChild(createContributorListEntry("Leader of Controller", "Controller Leader name", "Controller", + "Controller description ...")).build(); } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java index 4d2246be9f..f8a6af710e 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest2.java @@ -8,8 +8,9 @@ package org.opendaylight.yangtools.yang.data.impl.leafref.context; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertThrows; +import java.util.Map; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -18,12 +19,7 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; @@ -35,9 +31,7 @@ import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefValidation; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; @@ -58,7 +52,6 @@ public class DataTreeCandidateValidatorTest2 { private static QName devices; private static QName device; - private static QName typeChoice; private static QName typeText; private static QName devDesc; private static QName sn; @@ -70,7 +63,6 @@ public class DataTreeCandidateValidatorTest2 { private static QName desc; private static final Logger LOG = LoggerFactory.getLogger(DataTreeCandidateValidatorTest2.class); - private static final String NEW_LINE = System.getProperty("line.separator"); @BeforeClass public static void init() throws DataValidationFailedException { @@ -104,17 +96,24 @@ public class DataTreeCandidateValidatorTest2 { inMemoryDataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL, context); final DataTreeModification initialDataTreeModification = inMemoryDataTree.takeSnapshot().newModification(); - final ContainerSchemaNode chipsListContSchemaNode = (ContainerSchemaNode) mainModule.findDataChildByName(chips) - .get(); - final ContainerNode chipsContainer = createChipsContainer(chipsListContSchemaNode); - final YangInstanceIdentifier path1 = YangInstanceIdentifier.of(chips); - initialDataTreeModification.write(path1, chipsContainer); - - final ContainerSchemaNode devTypesListContSchemaNode = (ContainerSchemaNode) mainModule - .findDataChildByName(deviceTypeStr).get(); - final ContainerNode deviceTypesContainer = createDevTypeStrContainer(devTypesListContSchemaNode); - final YangInstanceIdentifier path2 = YangInstanceIdentifier.of(deviceTypeStr); - initialDataTreeModification.write(path2, deviceTypesContainer); + initialDataTreeModification.write(YangInstanceIdentifier.of(chips), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(chips)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(chip)) + .addChild(createChipsListEntry("dev_type_1", "desc1")) + .addChild(createChipsListEntry("dev_type_2", "desc2")) + .build()) + .build()); + + initialDataTreeModification.write(YangInstanceIdentifier.of(deviceTypeStr), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(deviceTypeStr)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(deviceType)) + .addChild(createDevTypeListEntry("dev_type_1", "typedesc1")) + .addChild(createDevTypeListEntry("dev_type_2", "typedesc2")) + .addChild(createDevTypeListEntry("dev_type_3", "typedesc3")) + .build()) + .build()); initialDataTreeModification.ready(); final DataTreeCandidate writeChipsCandidate = inMemoryDataTree.prepare(initialDataTreeModification); @@ -137,15 +136,18 @@ public class DataTreeCandidateValidatorTest2 { } private static void writeDevices() throws DataValidationFailedException { - - final ContainerSchemaNode devicesContSchemaNode = (ContainerSchemaNode) mainModule.findDataChildByName(devices) - .get(); - - final ContainerNode devicesContainer = createDevicesContainer(devicesContSchemaNode); - - final YangInstanceIdentifier devicesPath = YangInstanceIdentifier.of(devices); final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); - writeModification.write(devicesPath, devicesContainer); + writeModification.write(YangInstanceIdentifier.of(devices), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(devices)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(device)) + .addChild(createDeviceListEntry("dev_type_1", "typedesc1", 123456, "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type_2", "typedesc2", 123457, "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type_2", "typedesc3", 123457, "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type_1", "typedesc2", 123458, "192.168.0.1")) + .addChild(createDeviceListEntry("unknown", "unknown", 123457, "192.168.0.1")) + .build()) + .build()); writeModification.ready(); final DataTreeCandidate writeDevicesCandidate = inMemoryDataTree.prepare(writeModification); @@ -155,17 +157,9 @@ public class DataTreeCandidateValidatorTest2 { LOG.debug("*************************"); LOG.debug("{}", inMemoryDataTree); - boolean exception = false; - try { - LeafRefValidation.validate(writeDevicesCandidate, rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - - assertEquals(4, e.getValidationsErrorsCount()); - exception = true; - } - - assertTrue(exception); + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeDevicesCandidate, rootLeafRefContext)); + assertEquals(4, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeDevicesCandidate); @@ -175,133 +169,30 @@ public class DataTreeCandidateValidatorTest2 { LOG.debug("{}", inMemoryDataTree); } - private static ContainerNode createDevTypeStrContainer(final ContainerSchemaNode container) { - - final ListSchemaNode devTypeListSchemaNode = (ListSchemaNode) container.findDataChildByName(deviceType).get(); - - final DataContainerNodeBuilder devTypeContainerBldr = - Builders.containerBuilder(container); - - final SystemMapNode devTypeMap = createDevTypeList(devTypeListSchemaNode); - devTypeContainerBldr.addChild(devTypeMap); - - return devTypeContainerBldr.build(); - } - - private static SystemMapNode createDevTypeList(final ListSchemaNode devTypeListSchemaNode) { - - final CollectionNodeBuilder devTypeMapBldr = - Builders.mapBuilder(devTypeListSchemaNode); - - devTypeMapBldr.addChild(createDevTypeListEntry("dev_type_1", "typedesc1", devTypeListSchemaNode)); - devTypeMapBldr.addChild(createDevTypeListEntry("dev_type_2", "typedesc2", devTypeListSchemaNode)); - devTypeMapBldr.addChild(createDevTypeListEntry("dev_type_3", "typedesc3", devTypeListSchemaNode)); - - return devTypeMapBldr.build(); - } - - private static MapEntryNode createDevTypeListEntry(final String typeVal, final String descVal, - final ListSchemaNode devTypeListSchemaNode) { - - final LeafNode typeLeaf = ImmutableNodes.leafNode(type, typeVal); - final LeafNode descLeaf = ImmutableNodes.leafNode(desc, descVal); - - final DataContainerNodeBuilder devTypeMapEntryBldr = - Builders.mapEntryBuilder(devTypeListSchemaNode); - - devTypeMapEntryBldr.addChild(typeLeaf); - devTypeMapEntryBldr.addChild(descLeaf); - - return devTypeMapEntryBldr.build(); - } - - private static ContainerNode createChipsContainer(final ContainerSchemaNode container) { - - final ListSchemaNode chipsListSchemaNode = (ListSchemaNode) container.findDataChildByName(chip).get(); - - final DataContainerNodeBuilder chipsContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode chipsMap = createChipsList(chipsListSchemaNode); - chipsContainerBldr.addChild(chipsMap); - - return chipsContainerBldr.build(); - } - - private static SystemMapNode createChipsList(final ListSchemaNode chipsListSchemaNode) { - - final CollectionNodeBuilder chipsMapBldr = - Builders.mapBuilder(chipsListSchemaNode); - - chipsMapBldr.addChild(createChipsListEntry("dev_type_1", "desc1", chipsListSchemaNode)); - chipsMapBldr.addChild(createChipsListEntry("dev_type_2", "desc2", chipsListSchemaNode)); - - return chipsMapBldr.build(); - } - - private static MapEntryNode createChipsListEntry(final String devTypeVal, final String chipDescVal, - final ListSchemaNode chipsListSchemaNode) { - - final LeafNode devTypeLeaf = ImmutableNodes.leafNode(devType, devTypeVal); - final LeafNode chipDescLeaf = ImmutableNodes.leafNode(chipDesc, chipDescVal); - - final DataContainerNodeBuilder chipsMapEntryBldr = Builders - .mapEntryBuilder(chipsListSchemaNode); - - chipsMapEntryBldr.addChild(devTypeLeaf); - chipsMapEntryBldr.addChild(chipDescLeaf); - - return chipsMapEntryBldr.build(); - } - - private static ContainerNode createDevicesContainer(final ContainerSchemaNode container) { - - final ListSchemaNode devicesListSchemaNode = (ListSchemaNode) container.findDataChildByName(device).get(); - - final DataContainerNodeBuilder devicesContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode devicesMap = createDeviceList(devicesListSchemaNode); - devicesContainerBldr.addChild(devicesMap); - - return devicesContainerBldr.build(); + private static MapEntryNode createDevTypeListEntry(final String typeVal, final String descVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(deviceType, type, typeVal)) + .addChild(ImmutableNodes.leafNode(type, typeVal)) + .addChild(ImmutableNodes.leafNode(desc, descVal)) + .build(); } - private static SystemMapNode createDeviceList(final ListSchemaNode deviceListSchemaNode) { - - final CollectionNodeBuilder devicesMapBldr = - Builders.mapBuilder(deviceListSchemaNode); - - devicesMapBldr.addChild(createDeviceListEntry("dev_type_1", "typedesc1", 123456, "192.168.0.1", - deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type_2", "typedesc2", 123457, "192.168.0.1", - deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type_2", "typedesc3", 123457, "192.168.0.1", - deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type_1", "typedesc2", 123458, "192.168.0.1", - deviceListSchemaNode)); - devicesMapBldr - .addChild(createDeviceListEntry("unknown", "unknown", 123457, "192.168.0.1", deviceListSchemaNode)); - - return devicesMapBldr.build(); + private static MapEntryNode createChipsListEntry(final String devTypeVal, final String chipDescVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(chip, devType, devTypeVal)) + .addChild(ImmutableNodes.leafNode(devType, devTypeVal)) + .addChild(ImmutableNodes.leafNode(chipDesc, chipDescVal)) + .build(); } private static MapEntryNode createDeviceListEntry(final String typeTextVal, final String descVal, final int snVal, - final String defaultIpVal, final ListSchemaNode devicesListSchemaNode) { - - final LeafNode typeTextLeaf = ImmutableNodes.leafNode(typeText, typeTextVal); - final LeafNode descLeaf = ImmutableNodes.leafNode(devDesc, descVal); - final LeafNode snValLeaf = ImmutableNodes.leafNode(sn, snVal); - final LeafNode defaultIpLeaf = ImmutableNodes.leafNode(defaultIp, defaultIpVal); - - final DataContainerNodeBuilder devicesMapEntryBldr = Builders - .mapEntryBuilder(devicesListSchemaNode); - - devicesMapEntryBldr.addChild(typeTextLeaf); - devicesMapEntryBldr.addChild(descLeaf); - devicesMapEntryBldr.addChild(snValLeaf); - devicesMapEntryBldr.addChild(defaultIpLeaf); - - return devicesMapEntryBldr.build(); + final String defaultIpVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(device, Map.of(typeText, typeTextVal, sn, snVal))) + .addChild(ImmutableNodes.leafNode(typeText, typeTextVal)) + .addChild(ImmutableNodes.leafNode(devDesc, descVal)) + .addChild(ImmutableNodes.leafNode(sn, snVal)) + .addChild(ImmutableNodes.leafNode(defaultIp, defaultIpVal)) + .build(); } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java index 960f81b046..957e78b817 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/leafref/context/DataTreeCandidateValidatorTest3.java @@ -8,8 +8,9 @@ package org.opendaylight.yangtools.yang.data.impl.leafref.context; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertThrows; +import java.util.Map; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -19,11 +20,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; @@ -35,9 +32,7 @@ import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefValidation; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; @@ -114,17 +109,24 @@ public class DataTreeCandidateValidatorTest3 { final DataTreeModification initialDataTreeModification = inMemoryDataTree.takeSnapshot().newModification(); - final ContainerSchemaNode chipsListContSchemaNode = (ContainerSchemaNode) mainModule.findDataChildByName(chips) - .get(); - final ContainerNode chipsContainer = createChipsContainer(chipsListContSchemaNode); - final YangInstanceIdentifier path1 = YangInstanceIdentifier.of(chips); - initialDataTreeModification.write(path1, chipsContainer); - - final ContainerSchemaNode devTypesListContSchemaNode = (ContainerSchemaNode) mainModule - .findDataChildByName(deviceTypeStr).get(); - final ContainerNode deviceTypesContainer = createDevTypeStrContainer(devTypesListContSchemaNode); - final YangInstanceIdentifier path2 = YangInstanceIdentifier.of(deviceTypeStr); - initialDataTreeModification.write(path2, deviceTypesContainer); + initialDataTreeModification.write(YangInstanceIdentifier.of(chips), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(chips)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(chip)) + .addChild(createChipsListEntry("dev_type_1", "desc1")) + .addChild(createChipsListEntry("dev_type_2", "desc2")) + .build()) + .build()); + + initialDataTreeModification.write(YangInstanceIdentifier.of(deviceTypeStr), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(deviceTypeStr)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(deviceType)) + .addChild(createDevTypeListEntry("dev_type1_1", "dev_type2_1", "dev_type3_1", "typedesc1")) + .addChild(createDevTypeListEntry("dev_type1_2", "dev_type2_2", "dev_type3_2", "typedesc2")) + .addChild(createDevTypeListEntry("dev_type1_3", "dev_type2_3", "dev_type3_3", "typedesc3")) + .build()) + .build()); initialDataTreeModification.ready(); final DataTreeCandidate writeChipsCandidate = inMemoryDataTree.prepare(initialDataTreeModification); @@ -149,12 +151,20 @@ public class DataTreeCandidateValidatorTest3 { } private static void writeDevices() throws DataValidationFailedException { - final ContainerSchemaNode devicesContSchemaNode = (ContainerSchemaNode) mainModule.findDataChildByName(devices) - .get(); - final ContainerNode devicesContainer = createDevicesContainer(devicesContSchemaNode); - final YangInstanceIdentifier devicesPath = YangInstanceIdentifier.of(devices); final DataTreeModification writeModification = inMemoryDataTree.takeSnapshot().newModification(); - writeModification.write(devicesPath, devicesContainer); + writeModification.write(YangInstanceIdentifier.of(devices), Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(devices)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(device)) + .addChild(createDeviceListEntry("dev_type1_1", "dev_type2_1", "dev_type3_1", "typedesc1", 123456, + "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type1_2", "dev_type2_2", "dev_type3_2", "typedesc1", 123457, + "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type1_1", "dev_type2_2", "dev_type3_3", "typedesc2", 123458, + "192.168.0.1")) + .addChild(createDeviceListEntry("unk11", "unk22", "unk33", "unk_desc2", 123457, "192.168.0.1")) + .build()) + .build()); writeModification.ready(); final DataTreeCandidate writeDevicesCandidate = inMemoryDataTree.prepare(writeModification); @@ -164,16 +174,9 @@ public class DataTreeCandidateValidatorTest3 { LOG.debug("*************************"); LOG.debug("{}", inMemoryDataTree); - boolean exception = false; - try { - LeafRefValidation.validate(writeDevicesCandidate, rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - assertEquals(6, e.getValidationsErrorsCount()); - exception = true; - } - - assertTrue(exception); + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(writeDevicesCandidate, rootLeafRefContext)); + assertEquals(6, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(writeDevicesCandidate); @@ -184,11 +187,19 @@ public class DataTreeCandidateValidatorTest3 { } private static void mergeDevices() throws DataValidationFailedException { - - final ContainerSchemaNode devicesContSchemaNode = (ContainerSchemaNode) mainModule.findDataChildByName(devices) - .get(); - - final ContainerNode devicesContainer = createDevices2Container(devicesContSchemaNode); + final ContainerNode devicesContainer = Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(devices)) + .addChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(device)) + .addChild(createDeviceListEntry("dev_type1_3", "dev_type2_3", "dev_type3_3", "typedesc3", 123459, + "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type1_3", "dev_type2_3", "dev_type3_3", "typedesc2", 123460, + "192.168.0.1")) + .addChild(createDeviceListEntry("dev_type1_3", "dev_type2_2", "dev_type3_1", "typedesc1", 123461, + "192.168.0.1")) + .addChild(createDeviceListEntry("unk1", "unk2", "unk3", "unk_desc", 123462, "192.168.0.1")) + .build()) + .build(); final YangInstanceIdentifier devicesPath = YangInstanceIdentifier.of(devices); final DataTreeModification mergeModification = inMemoryDataTree.takeSnapshot().newModification(); @@ -203,15 +214,10 @@ public class DataTreeCandidateValidatorTest3 { LOG.debug("*************************"); LOG.debug("{}", inMemoryDataTree); - boolean exception = false; - try { - LeafRefValidation.validate(mergeDevicesCandidate, rootLeafRefContext); - } catch (final LeafRefDataValidationFailedException e) { - LOG.debug("All validation errors:{}{}", NEW_LINE, e.getMessage()); - // :TODO verify errors count gz - assertEquals(6, e.getValidationsErrorsCount()); - exception = true; - } + final LeafRefDataValidationFailedException ex = assertThrows(LeafRefDataValidationFailedException.class, + () -> LeafRefValidation.validate(mergeDevicesCandidate, rootLeafRefContext)); + // :TODO verify errors count gz + assertEquals(6, ex.getValidationsErrorsCount()); inMemoryDataTree.commit(mergeDevicesCandidate); @@ -219,177 +225,38 @@ public class DataTreeCandidateValidatorTest3 { LOG.debug("After mergeDevices: "); LOG.debug("*************************"); LOG.debug("{}", inMemoryDataTree); - - assertTrue(exception); - } - - private static ContainerNode createDevTypeStrContainer(final ContainerSchemaNode container) { - - final ListSchemaNode devTypeListSchemaNode = (ListSchemaNode) container.findDataChildByName(deviceType).get(); - - final DataContainerNodeBuilder devTypeContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode devTypeMap = createDevTypeList(devTypeListSchemaNode); - devTypeContainerBldr.addChild(devTypeMap); - - return devTypeContainerBldr.build(); - } - - private static SystemMapNode createDevTypeList(final ListSchemaNode devTypeListSchemaNode) { - - final CollectionNodeBuilder devTypeMapBldr = - Builders.mapBuilder(devTypeListSchemaNode); - - devTypeMapBldr.addChild(createDevTypeListEntry("dev_type1_1", "dev_type2_1", "dev_type3_1", "typedesc1", - devTypeListSchemaNode)); - devTypeMapBldr.addChild(createDevTypeListEntry("dev_type1_2", "dev_type2_2", "dev_type3_2", "typedesc2", - devTypeListSchemaNode)); - devTypeMapBldr.addChild(createDevTypeListEntry("dev_type1_3", "dev_type2_3", "dev_type3_3", "typedesc3", - devTypeListSchemaNode)); - - return devTypeMapBldr.build(); } private static MapEntryNode createDevTypeListEntry(final String type1Val, final String type2Val, - final String type3Val, final String descVal, final ListSchemaNode devTypeListSchemaNode) { - - final LeafNode type1Leaf = ImmutableNodes.leafNode(type1, type1Val); - final LeafNode type2Leaf = ImmutableNodes.leafNode(type2, type2Val); - final LeafNode type3Leaf = ImmutableNodes.leafNode(type3, type3Val); - final LeafNode descLeaf = ImmutableNodes.leafNode(desc, descVal); - - final DataContainerNodeBuilder devTypeMapEntryBldr = Builders - .mapEntryBuilder(devTypeListSchemaNode); - - devTypeMapEntryBldr.addChild(type1Leaf); - devTypeMapEntryBldr.addChild(type2Leaf); - devTypeMapEntryBldr.addChild(type3Leaf); - devTypeMapEntryBldr.addChild(descLeaf); - - return devTypeMapEntryBldr.build(); - } - - private static ContainerNode createChipsContainer(final ContainerSchemaNode container) { - - final ListSchemaNode chipsListSchemaNode = (ListSchemaNode) container.findDataChildByName(chip).get(); - - final DataContainerNodeBuilder chipsContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode chipsMap = createChipsList(chipsListSchemaNode); - chipsContainerBldr.addChild(chipsMap); - - return chipsContainerBldr.build(); - } - - private static SystemMapNode createChipsList(final ListSchemaNode chipsListSchemaNode) { - - final CollectionNodeBuilder chipsMapBldr = - Builders.mapBuilder(chipsListSchemaNode); - - chipsMapBldr.addChild(createChipsListEntry("dev_type_1", "desc1", chipsListSchemaNode)); - chipsMapBldr.addChild(createChipsListEntry("dev_type_2", "desc2", chipsListSchemaNode)); - - return chipsMapBldr.build(); - } - - private static MapEntryNode createChipsListEntry(final String devTypeVal, final String chipDescVal, - final ListSchemaNode chipsListSchemaNode) { - - final LeafNode devTypeLeaf = ImmutableNodes.leafNode(devType, devTypeVal); - final LeafNode chipDescLeaf = ImmutableNodes.leafNode(chipDesc, chipDescVal); - - final DataContainerNodeBuilder chipsMapEntryBldr = Builders - .mapEntryBuilder(chipsListSchemaNode); - - chipsMapEntryBldr.addChild(devTypeLeaf); - chipsMapEntryBldr.addChild(chipDescLeaf); - - return chipsMapEntryBldr.build(); - } - - private static ContainerNode createDevicesContainer(final ContainerSchemaNode container) { - - final ListSchemaNode devicesListSchemaNode = (ListSchemaNode) container.findDataChildByName(device).get(); - - final DataContainerNodeBuilder devicesContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode devicesMap = createDeviceList(devicesListSchemaNode); - devicesContainerBldr.addChild(devicesMap); - - return devicesContainerBldr.build(); - } - - private static SystemMapNode createDeviceList(final ListSchemaNode deviceListSchemaNode) { - - final CollectionNodeBuilder devicesMapBldr = - Builders.mapBuilder(deviceListSchemaNode); - - devicesMapBldr.addChild(createDeviceListEntry("dev_type1_1", "dev_type2_1", "dev_type3_1", "typedesc1", 123456, - "192.168.0.1", deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type1_2", "dev_type2_2", "dev_type3_2", "typedesc1", 123457, - "192.168.0.1", deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type1_1", "dev_type2_2", "dev_type3_3", "typedesc2", 123458, - "192.168.0.1", deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("unk11", "unk22", "unk33", "unk_desc2", 123457, "192.168.0.1", - deviceListSchemaNode)); - - return devicesMapBldr.build(); + final String type3Val, final String descVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(deviceType, + Map.of(type1, type1Val, type2, type2Val, type3, type3Val))) + .addChild(ImmutableNodes.leafNode(type1, type1Val)) + .addChild(ImmutableNodes.leafNode(type2, type2Val)) + .addChild(ImmutableNodes.leafNode(type3, type3Val)) + .addChild(ImmutableNodes.leafNode(desc, descVal)) + .build(); } - private static ContainerNode createDevices2Container(final ContainerSchemaNode container) { - - final ListSchemaNode devicesListSchemaNode = (ListSchemaNode) container.findDataChildByName(device).get(); - - final DataContainerNodeBuilder devicesContainerBldr = Builders - .containerBuilder(container); - - final SystemMapNode devicesMap = createDevice2List(devicesListSchemaNode); - devicesContainerBldr.addChild(devicesMap); - - return devicesContainerBldr.build(); - } - - private static SystemMapNode createDevice2List(final ListSchemaNode deviceListSchemaNode) { - - final CollectionNodeBuilder devicesMapBldr = - Builders.mapBuilder(deviceListSchemaNode); - - devicesMapBldr.addChild(createDeviceListEntry("dev_type1_3", "dev_type2_3", "dev_type3_3", "typedesc3", 123459, - "192.168.0.1", deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type1_3", "dev_type2_3", "dev_type3_3", "typedesc2", 123460, - "192.168.0.1", deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("dev_type1_3", "dev_type2_2", "dev_type3_1", "typedesc1", 123461, - "192.168.0.1", deviceListSchemaNode)); - devicesMapBldr.addChild(createDeviceListEntry("unk1", "unk2", "unk3", "unk_desc", 123462, "192.168.0.1", - deviceListSchemaNode)); - - return devicesMapBldr.build(); + private static MapEntryNode createChipsListEntry(final String devTypeVal, final String chipDescVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(chip, devType, devTypeVal)) + .addChild(ImmutableNodes.leafNode(devType, devTypeVal)) + .addChild(ImmutableNodes.leafNode(chipDesc, chipDescVal)) + .build(); } private static MapEntryNode createDeviceListEntry(final String type1TextVal, final String type2TextVal, - final String type3TextVal, final String descVal, final int snVal, final String defaultIpVal, - final ListSchemaNode devicesListSchemaNode) { - - final LeafNode typeText1Leaf = ImmutableNodes.leafNode(typeText1, type1TextVal); - final LeafNode typeText2Leaf = ImmutableNodes.leafNode(typeText2, type2TextVal); - final LeafNode typeText3Leaf = ImmutableNodes.leafNode(typeText3, type3TextVal); - final LeafNode descLeaf = ImmutableNodes.leafNode(devDesc, descVal); - final LeafNode snValLeaf = ImmutableNodes.leafNode(sn, snVal); - final LeafNode defaultIpLeaf = ImmutableNodes.leafNode(defaultIp, defaultIpVal); - - final DataContainerNodeBuilder devicesMapEntryBldr = Builders - .mapEntryBuilder(devicesListSchemaNode); - - devicesMapEntryBldr.addChild(typeText1Leaf); - devicesMapEntryBldr.addChild(typeText2Leaf); - devicesMapEntryBldr.addChild(typeText3Leaf); - devicesMapEntryBldr.addChild(descLeaf); - devicesMapEntryBldr.addChild(snValLeaf); - devicesMapEntryBldr.addChild(defaultIpLeaf); - - return devicesMapEntryBldr.build(); + final String type3TextVal, final String descVal, final int snVal, final String defaultIpVal) { + return Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(device, Map.of(typeText1, type1TextVal, sn, snVal))) + .addChild(ImmutableNodes.leafNode(typeText1, type1TextVal)) + .addChild(ImmutableNodes.leafNode(typeText2, type2TextVal)) + .addChild(ImmutableNodes.leafNode(typeText3, type3TextVal)) + .addChild(ImmutableNodes.leafNode(devDesc, descVal)) + .addChild(ImmutableNodes.leafNode(sn, snVal)) + .addChild(ImmutableNodes.leafNode(defaultIp, defaultIpVal)) + .build(); } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java index 699d0b6617..383b1b6db4 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java @@ -12,7 +12,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThrows; -import static org.mockito.Mockito.mock; import java.io.File; import java.net.URISyntaxException; @@ -39,24 +38,17 @@ import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; import org.opendaylight.yangtools.yang.data.api.schema.UserLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.UserMapNode; import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserLeafSetNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserLeafSetNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserMapNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUserMapNodeSchemaAwareBuilder; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; @@ -120,14 +112,14 @@ public class BuilderTest { final UserMapNode orderedMapNodeCreateNode = ImmutableUserMapNodeBuilder.create(orderedMapNodeCreateNull) .removeChild(mapEntryPath) .build(); - final UserMapNode orderedMapNodeSchemaAware = ImmutableUserMapNodeSchemaAwareBuilder.create(list) + final UserMapNode orderedMapNodeSchemaAware = ImmutableUserMapNodeBuilder.create() + .withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST) .withChild(LIST_MAIN_CHILD_1) .build(); - final UserMapNode orderedMapNodeSchemaAwareMapNodeConst = ImmutableUserMapNodeSchemaAwareBuilder.create( - list, getImmutableUserMapNode()) + final UserMapNode orderedMapNodeSchemaAwareMapNodeConst = + ImmutableUserMapNodeBuilder.create(getImmutableUserMapNode()) .build(); - assertNotNull(Builders.orderedMapBuilder(list)); assertEquals(SIZE, orderedMapNodeCreateNull.size()); assertEquals(orderedMapNodeCreateNode.size(), orderedMapNodeCreateNull.size() - 1); assertEquals(NODE_IDENTIFIER_LIST, orderedMapNodeCreateSize.getIdentifier()); @@ -147,16 +139,14 @@ public class BuilderTest { final LinkedList> mapEntryNodeColl = new LinkedList<>(); mapEntryNodeColl.add(orderedLeafSet); final UnmodifiableCollection leafSetCollection = (UnmodifiableCollection)orderedLeafSet.body(); - final NormalizedNode orderedMapNodeSchemaAware = ImmutableUserLeafSetNodeSchemaAwareBuilder.create( - leafList).withChildValue("baz").build(); + final NormalizedNode orderedMapNodeSchemaAware = ImmutableUserLeafSetNodeBuilder.create() + .withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST) + .withChildValue("baz") + .build(); final UnmodifiableCollection SchemaAwareleafSetCollection = (UnmodifiableCollection) orderedMapNodeSchemaAware.body(); - final NormalizedNode orderedLeafSetShemaAware = ImmutableUserLeafSetNodeSchemaAwareBuilder.create( - leafList, (UserLeafSetNode) orderedLeafSet).build(); - assertNotNull(Builders.orderedLeafSetBuilder(leafList)); assertNotNull(Builders.anyXmlBuilder()); - assertNotNull(orderedLeafSetShemaAware); assertEquals(1, ((UserLeafSetNode)orderedLeafSet).size()); assertEquals("baz", orderedLeafSet.childAt(0).body()); assertNull(orderedLeafSet.childByArg(BAR_PATH)); @@ -174,9 +164,6 @@ public class BuilderTest { collectionNodeBuilder.withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST); collectionNodeBuilder.withValue(mapEntryNodeColl); final SystemMapNode mapNode = collectionNodeBuilder.build(); - final SystemMapNode mapNodeSchemaAware = ImmutableMapNodeSchemaAwareBuilder.create(list, - getImmutableMapNode()).build(); - assertNotNull(mapNodeSchemaAware); assertNotNull(Builders.mapBuilder(mapNode)); } @@ -230,79 +217,51 @@ public class BuilderTest { } - @Test(expected = NullPointerException.class) + @Test public void immutableAugmentationNodeBuilderExceptionTest() { - ImmutableAugmentationNodeBuilder.create(1).build(); + final var builder = ImmutableAugmentationNodeBuilder.create(1); + assertThrows(NullPointerException.class, builder::build); } - @Test(expected = NullPointerException.class) + @Test public void immutableContainerNodeBuilderExceptionTest() { final ContainerNode immutableContainerNode = ImmutableContainerNodeBuilder.create(1) .withNodeIdentifier(NODE_IDENTIFIER_LIST) .build(); assertNotNull(immutableContainerNode); - final ContainerSchemaNode containerSchemaNode = mock(ContainerSchemaNode.class); - ImmutableContainerNodeSchemaAwareBuilder.create(containerSchemaNode, immutableContainerNode) - .withNodeIdentifier(NODE_IDENTIFIER_LIST) - .build(); } - @Test(expected = NullPointerException.class) + @Test public void immutableLeafSetNodeBuilderExceptionTest() { final SystemLeafSetNode leafSetNode = ImmutableLeafSetNodeBuilder.create(1) - .withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST).build(); + .withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST) + .build(); assertNotNull(leafSetNode); - ImmutableLeafSetNodeSchemaAwareBuilder.create(mock(LeafListSchemaNode.class), leafSetNode).build(); } - @Test(expected = UnsupportedOperationException.class) - public void immutableLeafSetEntryNodeSchemaAwareBuilderExceptionTest() { - final LeafListSchemaNode leafListSchemaNode = mock(LeafListSchemaNode.class); - ImmutableLeafSetEntryNodeSchemaAwareBuilder.create(leafListSchemaNode).withNodeIdentifier(BAR_PATH).build(); - } - - @Test(expected = NullPointerException.class) + @Test public void immutableMapEntryNodeBuilderExceptionTest() { - ImmutableMapEntryNodeBuilder.create(1).build(); + final var builder = ImmutableMapEntryNodeBuilder.create(1); + assertThrows(NullPointerException.class, builder::build); } - @Test(expected = UnsupportedOperationException.class) + @Test public void immutableUnkeyedListNodeBuilderExceptionTest() { - ImmutableUnkeyedListNodeBuilder.create().withNodeIdentifier(NODE_IDENTIFIER_LEAF) - .removeChild(NODE_IDENTIFIER_LIST).build(); - } - - @Test(expected = UnsupportedOperationException.class) - public void immutableMapNodeSchemaAwareExceptionTest() { - ImmutableMapNodeSchemaAwareBuilder.create(list, getImmutableMapNode()).withNodeIdentifier(NODE_IDENTIFIER_LIST) - .build(); - } - - @Test(expected = UnsupportedOperationException.class) - public void immutableOrderedMapSchemaAwareExceptionTest1() { - ImmutableUserMapNodeSchemaAwareBuilder.create(list).withNodeIdentifier(NODE_IDENTIFIER_LIST).build(); - } - - @Test(expected = UnsupportedOperationException.class) - public void immutableUserLeafSetNodeSchemaAwareExceptionTest1() { - ImmutableUserLeafSetNodeSchemaAwareBuilder.create(leafList).withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST) - .build(); - } - - private static SystemLeafSetNode getImmutableLeafSetNode() { - final ListNodeBuilder> leafSetBuilder = Builders.leafSetBuilder(); - leafSetBuilder.withNodeIdentifier(NODE_IDENTIFIER_LEAF_LIST); - leafSetBuilder.addChild(LEAF_SET_ENTRY_NODE); - return leafSetBuilder.build(); + final var builder = ImmutableUnkeyedListNodeBuilder.create().withNodeIdentifier(NODE_IDENTIFIER_LEAF); + assertThrows(UnsupportedOperationException.class, () -> builder.removeChild(NODE_IDENTIFIER_LIST)); } private static SystemMapNode getImmutableMapNode() { - return ImmutableMapNodeBuilder.create().withNodeIdentifier(NODE_IDENTIFIER_LIST).withChild(LIST_MAIN_CHILD_1) - .build(); + return ImmutableMapNodeBuilder.create() + .withNodeIdentifier(NODE_IDENTIFIER_LIST) + .withChild(LIST_MAIN_CHILD_1) + .build(); } private static UserMapNode getImmutableUserMapNode() { - return ImmutableUserMapNodeBuilder.create().withNodeIdentifier(NODE_IDENTIFIER_LIST) - .withChild(LIST_MAIN_CHILD_1).build(); + return ImmutableUserMapNodeBuilder.create() + .withNodeIdentifier(NODE_IDENTIFIER_LIST) + .withChild(LIST_MAIN_CHILD_1) + .build(); } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java index 51f8655d3a..4601117fbb 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java @@ -7,13 +7,8 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema; -import static com.google.common.base.Preconditions.checkState; - import com.google.common.collect.ImmutableSet; -import java.io.File; -import java.net.URISyntaxException; import java.util.Collections; -import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.XMLNamespace; @@ -22,39 +17,14 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; -import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeSchemaAwareBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeSchemaAwareBuilder; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -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.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class NormalizedDataBuilderTest { - - private ContainerSchemaNode containerNode; - private SchemaContext schema; - - @Before - public void setUp() throws URISyntaxException { - schema = YangParserTestUtils.parseYangFiles(new File(getClass().getResource("test.yang").toURI())); - containerNode = (ContainerSchemaNode) getSchemaNode(schema, "test", "container"); - } - @Test public void testSchemaUnaware() { // Container @@ -106,74 +76,6 @@ public class NormalizedDataBuilderTest { .withValue(11).build()); } - @Test - public void testSchemaAware() { - DataContainerNodeBuilder builder = Builders.containerBuilder(containerNode); - - LeafSchemaNode schemaNode = (LeafSchemaNode) getSchemaNode(schema, "test", "uint32"); - LeafNode leafChild = Builders.leafBuilder(schemaNode).withValue("String").build(); - builder.withChild(leafChild); - - LeafListSchemaNode leafListSchemaNode = (LeafListSchemaNode) getSchemaNode(schema, "test", "leafList"); - LeafSetNode leafList = Builders.leafSetBuilder(leafListSchemaNode) - .withChildValue(1) - .withChild(Builders.leafSetEntryBuilder(leafListSchemaNode).withValue(3).build()) - .build(); - builder.withChild(leafList); - - ListSchemaNode listSchema = (ListSchemaNode) getSchemaNode(schema, "test", "list"); - LeafSchemaNode uint32InListSchemaNode = (LeafSchemaNode) getSchemaNode(schema, "test", "uint32InList"); - ContainerSchemaNode containerInListSchemaNode = (ContainerSchemaNode) getSchemaNode(schema, "test", - "containerInList"); - - MapEntryNode listChild1 = Builders.mapEntryBuilder(listSchema) - .withChild(Builders.leafBuilder(uint32InListSchemaNode).withValue(1).build()) - .withChild(Builders.containerBuilder(containerInListSchemaNode).build()).build(); - - MapNode list = ImmutableMapNodeSchemaAwareBuilder.create(listSchema).withChild(listChild1).build(); - builder.withChild(list); - - LeafSchemaNode augmentUint32SchemaNode = (LeafSchemaNode) getSchemaNode(schema, "test", "augmentUint32"); - AugmentationSchemaNode augmentationSchema = getAugmentationSchemaForChild(containerNode, - augmentUint32SchemaNode.getQName()); - - AugmentationNode augmentation = Builders.augmentationBuilder(augmentationSchema) - .withChild(Builders.leafBuilder(augmentUint32SchemaNode).withValue(11).build()).build(); - - builder.withChild(augmentation); - - // This should fail with schema, since the leaf comes from augmentation - // builder.withChild(ImmutableLeafNodeSchemaAwareBuilder.get(augmentUint32SchemaNode).withValue(11) - // .build()); - - LeafSchemaNode augumentString1SchemaNode = (LeafSchemaNode) getSchemaNode(schema, "test", "augmentString1"); - LeafSchemaNode augumentString2SchemaNode = (LeafSchemaNode) getSchemaNode(schema, "test", "augmentString2"); - - ChoiceSchemaNode choice1SchemaNode = (ChoiceSchemaNode) getSchemaNode(schema, "test", "choice"); - ChoiceNode choice = ImmutableChoiceNodeSchemaAwareBuilder.create(choice1SchemaNode) - .withChild(Builders.leafBuilder(augumentString1SchemaNode).withValue("case1").build()) - // This should fail, since child node belongs to different case - // .withChild(Builders.leafBuilder(augumentString2SchemaNode).withValue("case2") - // .build()) - .build(); - - builder.withChild(choice); - - // This should fail, child from case - // builder.withChild(Builders.leafBuilder(augumentString1SchemaNode).withValue("case1") - // .build()); - } - - private static AugmentationSchemaNode getAugmentationSchemaForChild(final ContainerSchemaNode containerNode, - final QName qname) { - for (AugmentationSchemaNode augmentationSchema : containerNode.getAvailableAugmentations()) { - if (augmentationSchema.findDataChildByName(qname).isPresent()) { - return augmentationSchema; - } - } - throw new IllegalStateException("Unable to find child augmentation in " + containerNode); - } - private static NodeWithValue getNodeWithValueIdentifier(final String localName, final T value) { return new NodeWithValue<>(getQName(localName), value); } @@ -185,38 +87,4 @@ public class NormalizedDataBuilderTest { private static NodeIdentifier getNodeIdentifier(final String localName) { return new NodeIdentifier(getQName(localName)); } - - public static DataSchemaNode getSchemaNode(final SchemaContext context, final String moduleName, - final String childNodeName) { - for (Module module : context.getModules()) { - if (module.getName().equals(moduleName)) { - DataSchemaNode found = findChildNode(module, childNodeName); - checkState(found != null, "Unable to find %s", childNodeName); - return found; - } - } - throw new IllegalStateException("Unable to find child node " + childNodeName); - } - - private static DataSchemaNode findChildNode(final DataNodeContainer container, final String name) { - for (DataSchemaNode dataSchemaNode : container.getChildNodes()) { - if (dataSchemaNode.getQName().getLocalName().equals(name)) { - return dataSchemaNode; - } - if (dataSchemaNode instanceof DataNodeContainer) { - DataSchemaNode retVal = findChildNode((DataNodeContainer) dataSchemaNode, name); - if (retVal != null) { - return retVal; - } - } else if (dataSchemaNode instanceof ChoiceSchemaNode) { - for (CaseSchemaNode caseNode : ((ChoiceSchemaNode) dataSchemaNode).getCases()) { - DataSchemaNode retVal = findChildNode(caseNode, name); - if (retVal != null) { - return retVal; - } - } - } - } - return null; - } } diff --git a/yang/yang-data-impl/src/test/resources/org/opendaylight/yangtools/yang/data/impl/schema/test.yang b/yang/yang-data-impl/src/test/resources/org/opendaylight/yangtools/yang/data/impl/schema/test.yang deleted file mode 100644 index b39298eebd..0000000000 --- a/yang/yang-data-impl/src/test/resources/org/opendaylight/yangtools/yang/data/impl/schema/test.yang +++ /dev/null @@ -1,249 +0,0 @@ -// vi: set smarttab et sw=4 tabstop=4: -module test { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:controller:test"; - prefix "test"; - - organization "Cisco Systems, Inc."; - - revision "2014-03-13" { - description - "Initial revision"; - } - - identity a {} - - identity b { - base "test:a"; - } - - grouping listGroup { - list list { - key "uint32InList"; - - leaf uint32InList { - type uint32; - } - - container containerInList{ - leaf uint32 { - type uint32; - } - leaf uint16 { - type uint16; - } - - leaf identityr { - type identityref { - base "test:a"; - } - } - - leaf uint16-ref { - type leafref { - path "../uint16"; - } - } - - leaf instance-id { - type instance-identifier; - } - - anyxml anyX; - } - } - } - - grouping innerContainerGrouping { - container innerContainer { - leaf uint16 { - type uint16; - } - - container innerInnerContainer { - - leaf uint16 { - type uint16; - } - - leaf uint32 { - type uint32; - } - } - } - } - - container container { - leaf uint32 { - type uint32; - } - - leaf decimal64 { - type decimal64 { - fraction-digits 2; - } - } - - leaf boolean { - type boolean; - } - - leaf binary { - type binary; - } - - leaf string { - type string; - } - - uses listGroup { - augment "list/" { - leaf stringAugmentedToList{ - type string; - } - - choice choiceInList { - case caseInList1 { - leaf stringAugmentedToListInCase1 { - type string; - } - } - case caseInList2 { - leaf stringAugmentedToListInCase2 { - type string; - } - } - } - } - } - - list directList { - leaf stringInDirectList { - type string; - } - } - - uses innerContainerGrouping; - - choice choice{} - choice choice2{} - - leaf-list leafList { - type string; - } - - leaf identityRef { - type identityref { - base test-identity; - } - } - - /* TODO test modification with empty type - leaf empty { - type empty; - } - */ - } - - augment "/container/" { - leaf augmentUint32 { - type uint32; - } - } - - augment "/container/directList/" { - leaf augmentedString { - type uint32; - } - } - - augment "/container/choice/" { - case test-identity-augment { - when "/container/identityRef = 'test-identity'"; - leaf augmentString1 { - type string; - } - - leaf augmentInt1 { - type uint32; - } - } - case test-identity-augment2 { - when "/container/identityRef = 'test-identity2'"; - leaf augmentString2 { - type string; - } - - leaf augmentInt2 { - type uint32; - } - } - } - - augment "/container/choice/test-identity-augment/" { - - choice augmentedChoiceInCase { - - case augmentedCaseInAugmentedChoice { - leaf stringInAugmentedCaseInAugmentedChoice { - type string; - } - } - - case augmentedCaseInAugmentedChoice2 { - leaf stringInAugmentedCaseInAugmentedChoice2 { - type string; - } - } - } - } - - augment "/container/choice/test-identity-augment/augmentedChoiceInCase/" { - case augmentedCaseInAugmentedChoiceFromAugment { - leaf stringInAugmentedCaseInAugmentedChoiceFromAugment { - type string; - } - } - } - - augment "/container/choice2/" { - case test-identity-augment { - when "/container/identityRef = 'test-identity'"; - container augmentContainer { - leaf augmentStringInaugmentContainer { - type string; - } - } - } - case test-identity-augment2 { - when "/container/identityRef = 'test-identity2'"; - list augmentedList { - leaf augmentStringInaugmentList { - type string; - } - } - } - } - - - augment "/container/choice2/test-identity-augment2/augmentedList/" { - - container augmentedContainerInAugmentedListInAugmentedCase { - leaf-list leafInAugmentedContainerInAugmentedListInAugmentedCase { - type uint32; - } - } - - list augmentedListInAugmentedListInAugmentedCase { - leaf-list leafInAugmentedListInAugmentedListInAugmentedCase { - type uint32; - } - } - } - - identity test-identity {} - identity test-identity2 { - base test-identity; - } - -} -- 2.36.6