X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FRootScatterGather.java;h=4848a498b4b9bab13d856d009258cd96de5d37a3;hp=c0d4de44d34dadf90f4f72132d59c1a4db899d9f;hb=HEAD;hpb=f40e99a51cd3fc2c9be3ac8aa0772bdb6b6ce479 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/RootScatterGather.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/RootScatterGather.java index c0d4de44d3..d755adc585 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/RootScatterGather.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/RootScatterGather.java @@ -24,47 +24,23 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; 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.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException; /** * Utility methods for dealing with datastore root {@link ContainerNode} with respect to module shards. */ public final class RootScatterGather { - // FIXME: Record when we have JDK17+ @NonNullByDefault - public static final class ShardContainer { - private final ContainerNode container; - private final T shard; - - ShardContainer(final T shard, final ContainerNode container) { - this.shard = requireNonNull(shard); - this.container = requireNonNull(container); - } - - public T shard() { - return shard; - } - - public ContainerNode container() { - return container; - } - - @Override - public int hashCode() { - return shard.hashCode(); - } - - @Override - public boolean equals(final @Nullable Object obj) { - return obj == this || obj instanceof ShardContainer && shard.equals(((ShardContainer) obj).shard); + public record ShardContainer(T shard, ContainerNode container) { + public ShardContainer { + requireNonNull(shard); + requireNonNull(container); } @Override @@ -114,7 +90,7 @@ public final class RootScatterGather { public static @NonNull Stream> scatterAll(final ContainerNode rootNode, final Function childToShard, final Stream allShards) { final var builders = allShards - .collect(Collectors.toUnmodifiableMap(Function.identity(), unused -> Builders.containerBuilder())); + .collect(Collectors.toUnmodifiableMap(Function.identity(), unused -> ImmutableNodes.newContainerBuilder())); for (var child : rootNode.body()) { final var shard = childToShard.apply(child.name()); verifyNotNull(builders.get(shard), "Failed to find builder for %s", shard).addChild(child); @@ -132,16 +108,16 @@ public final class RootScatterGather { */ public static @NonNull Stream> scatterTouched(final ContainerNode rootNode, final Function childToShard) { - final var builders = new HashMap>(); + final var builders = new HashMap(); for (var child : rootNode.body()) { - builders.computeIfAbsent(childToShard.apply(child.name()), unused -> Builders.containerBuilder()) + builders.computeIfAbsent(childToShard.apply(child.name()), unused -> ImmutableNodes.newContainerBuilder()) .addChild(child); } return streamContainers(rootNode.name(), builders); } private static @NonNull Stream> streamContainers(final NodeIdentifier rootId, - final Map> builders) { + final Map builders) { return builders.entrySet().stream() .map(entry -> new ShardContainer<>(entry.getKey(), entry.getValue().withNodeIdentifier(rootId).build())); }