From 5fdd7a708740b9eea3a888bf86b979a75829c1a7 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 2 Mar 2022 12:30:57 +0100 Subject: [PATCH] Remove EffectiveAugmentationSchema.create() This is a simple class, there is no need to have a static method, just a constructor suffices. Change-Id: I0eeff5c1f5dbcefe6f0b356323762cb2a3152b9f Signed-off-by: Robert Varga --- .../schema/InstanceIdToCompositeNodes.java | 2 +- .../AugmentationModificationStrategy.java | 2 +- .../data/util/AugmentationContextNode.java | 2 +- .../util/NormalizedNodeStreamWriterStack.java | 2 +- .../util/EffectiveAugmentationSchema.java | 50 +++++-------------- .../yangtools/yang/model/util/YT1404Test.java | 2 +- 6 files changed, 18 insertions(+), 42 deletions(-) diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToCompositeNodes.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToCompositeNodes.java index 43899ce18a..f5f447dd55 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToCompositeNodes.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToCompositeNodes.java @@ -281,7 +281,7 @@ abstract class InstanceIdToCompositeNodes extends Instan extends DataContainerNormalizationOperation { AugmentationNormalization(final AugmentationSchemaNode augmentation, final DataNodeContainer schema) { super(DataSchemaContextNode.augmentationIdentifierFrom(augmentation), - EffectiveAugmentationSchema.create(augmentation, schema)); + new EffectiveAugmentationSchema(augmentation, schema)); } @Override diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java index 53f8d9f3e6..42b0ea339e 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java @@ -30,7 +30,7 @@ final class AugmentationModificationStrategy AugmentationModificationStrategy(final AugmentationSchemaNode schema, final DataNodeContainer resolved, final DataTreeConfiguration treeConfig) { - super(SUPPORT, EffectiveAugmentationSchema.create(schema, resolved), treeConfig); + super(SUPPORT, new EffectiveAugmentationSchema(schema, resolved), treeConfig); emptyNode = Builders.augmentationBuilder() .withNodeIdentifier(DataSchemaContextNode.augmentationIdentifierFrom(schema)) .build(); diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java index 15fb6a2d5f..e4c81ece17 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java @@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema; final class AugmentationContextNode extends DataContainerContextNode { AugmentationContextNode(final AugmentationSchemaNode augmentation, final DataNodeContainer schema) { - super(augmentationIdentifierFrom(augmentation), EffectiveAugmentationSchema.create(augmentation, schema), null); + super(augmentationIdentifierFrom(augmentation), new EffectiveAugmentationSchema(augmentation, schema), null); } @Override diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java index 6eb0e7750b..686e0d8739 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java @@ -298,7 +298,7 @@ public final class NormalizedNodeStreamWriterStack implements LeafrefResolver { checkArgument(parent instanceof DataNodeContainer, "Augmentation allowed only in DataNodeContainer", parent); final AugmentationSchemaNode schema = findSchemaForAugment((AugmentationTarget) parent, identifier.getPossibleChildNames()); - final AugmentationSchemaNode resolvedSchema = EffectiveAugmentationSchema.create(schema, + final AugmentationSchemaNode resolvedSchema = new EffectiveAugmentationSchema(schema, (DataNodeContainer) parent); schemaStack.push(resolvedSchema); return resolvedSchema; diff --git a/model/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java b/model/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java index 5c4a8598a1..30f54f7c07 100644 --- a/model/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java +++ b/model/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java @@ -10,13 +10,8 @@ package org.opendaylight.yangtools.yang.model.util; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; import java.util.Optional; -import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ActionDefinition; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; @@ -56,43 +51,24 @@ import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBo */ // FIXME: YANGTOOLS-1403: this functionality should be integrated into EffectiveAugmentStatement/AugmentationSchemaNode public final class EffectiveAugmentationSchema implements AugmentationSchemaNode { + private final ImmutableMap children; private final AugmentationSchemaNode delegate; - private final ImmutableSet realChildSchemas; - private final ImmutableMap mappedChildSchemas; - public EffectiveAugmentationSchema(final AugmentationSchemaNode augmentSchema, - final Collection realChildSchemas) { - delegate = requireNonNull(augmentSchema); - this.realChildSchemas = ImmutableSet.copyOf(realChildSchemas); + public EffectiveAugmentationSchema(final AugmentationSchemaNode augment, final DataNodeContainer target) { + delegate = requireNonNull(augment); - final Map m = new HashMap<>(realChildSchemas.size()); - for (DataSchemaNode realChildSchema : realChildSchemas) { - m.put(realChildSchema.getQName(), realChildSchema); - } - - mappedChildSchemas = ImmutableMap.copyOf(m); - } - - /** - * Returns an AugmentationSchemaNode as effective in a parent node. - * - * @param schema Augmentation schema - * @param parent Parent schema - * @return Adjusted Augmentation schema - * @throws NullPointerException if any of the arguments is null - */ - // FIXME: 8.0.0: integrate this method into the constructor - public static AugmentationSchemaNode create(final AugmentationSchemaNode schema, final DataNodeContainer parent) { - final Set children = new HashSet<>(); - for (DataSchemaNode augNode : schema.getChildNodes()) { + final var augmentChildren = augment.getChildNodes(); + final var builder = ImmutableMap.builderWithExpectedSize(augmentChildren.size()); + for (var augChild : augmentChildren) { // parent may have the corresponding child removed via 'deviate unsupported', i.e. the child is effectively // not present at the target site - final DataSchemaNode child = parent.dataChildByName(augNode.getQName()); - if (child != null) { - children.add(child); + final var qname = augChild.getQName(); + final var targetChild = target.dataChildByName(qname); + if (targetChild != null) { + builder.put(qname, targetChild); } } - return new EffectiveAugmentationSchema(schema, children); + children = builder.build(); } @Override @@ -127,7 +103,7 @@ public final class EffectiveAugmentationSchema implements AugmentationSchemaNode @Override public Collection getChildNodes() { - return realChildSchemas; + return children.values(); } @Override @@ -137,7 +113,7 @@ public final class EffectiveAugmentationSchema implements AugmentationSchemaNode @Override public DataSchemaNode dataChildByName(final QName name) { - return mappedChildSchemas.get(requireNonNull(name)); + return children.get(requireNonNull(name)); } @Override diff --git a/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/YT1404Test.java b/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/YT1404Test.java index 63e597fd3e..a90a4562db 100644 --- a/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/YT1404Test.java +++ b/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/YT1404Test.java @@ -42,7 +42,7 @@ public class YT1404Test { final var fooAugment = Iterables.getOnlyElement(fooCont.getAvailableAugmentations()); assertSame(augment, fooAugment); - final var effectiveAug = EffectiveAugmentationSchema.create(augment, fooCont); + final var effectiveAug = new EffectiveAugmentationSchema(augment, fooCont); assertEquals(1, effectiveAug.getChildNodes().size()); assertSame(fooBar, effectiveAug.getDataChildByName(BAR)); } -- 2.36.6