From: Robert Varga Date: Fri, 30 Aug 2019 09:08:37 +0000 (+0200) Subject: Rework PathArgumentTypes lookup X-Git-Tag: release/magnesium~82 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=e17e8a357ae1d9da2534ced9f54bffdb54c0f6a7;ds=sidebyside Rework PathArgumentTypes lookup This lookup relying on final methods, which is not a correct assumption, with NodeIdentifierWithPredicates having at least two properly-hidden implementations. Rework the lookup in terms of instanceof checks, which saves a table lookup and unboxing operation. Change-Id: Ia6b272715d19e432e7e0839b6294035e12b1d293 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/LithiumPathArgument.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/LithiumPathArgument.java index 764d44d49f..660e0a7e97 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/LithiumPathArgument.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/LithiumPathArgument.java @@ -7,10 +7,6 @@ */ package org.opendaylight.controller.cluster.datastore.node.utils.stream; -import static com.google.common.base.Preconditions.checkArgument; - -import com.google.common.collect.ImmutableMap; -import java.util.Map; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; @@ -27,15 +23,17 @@ final class LithiumPathArgument { throw new UnsupportedOperationException("Utility class"); } - private static final Map, Byte> CLASS_TO_ENUM_MAP = ImmutableMap., Byte>builder() - .put(AugmentationIdentifier.class, AUGMENTATION_IDENTIFIER) - .put(NodeIdentifier.class, NODE_IDENTIFIER) - .put(NodeIdentifierWithPredicates.class, NODE_IDENTIFIER_WITH_PREDICATES) - .put(NodeWithValue.class, NODE_IDENTIFIER_WITH_VALUE).build(); - static byte getSerializablePathArgumentType(final PathArgument pathArgument) { - final Byte type = CLASS_TO_ENUM_MAP.get(pathArgument.getClass()); - checkArgument(type != null, "Unknown type of PathArgument = %s", pathArgument); - return type; + if (pathArgument instanceof NodeIdentifier) { + return NODE_IDENTIFIER; + } else if (pathArgument instanceof NodeIdentifierWithPredicates) { + return NODE_IDENTIFIER_WITH_PREDICATES; + } else if (pathArgument instanceof AugmentationIdentifier) { + return AUGMENTATION_IDENTIFIER; + } else if (pathArgument instanceof NodeWithValue) { + return NODE_IDENTIFIER_WITH_VALUE; + } else { + throw new IllegalArgumentException("Unknown type of PathArgument = " + pathArgument); + } } }