From 4b44410cd93cc764303175c733ebe08d1deefd6a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 14 Dec 2018 21:09:26 +0100 Subject: [PATCH] Mass-migrate fields to Immutable collections This follows errorprone/Google recommendation of keeping fields Immutable{List,Map,Set}. It has the tiny advantage of resulting in invokevirtual vs. invokeinterface. Change-Id: I53d55c1909d93021370d6f411284a89cab62b4f8 Signed-off-by: Robert Varga --- .../BindingDOMNotificationListenerAdapter.java | 4 ++-- .../adapter/BindingDOMRpcProviderServiceAdapter.java | 2 +- .../adapter/invoke/NotificationListenerInvoker.java | 8 ++++---- .../AbstractBindingNormalizedNodeCacheHolder.java | 11 ++++++----- .../mdsal/binding/dom/codec/impl/BitsCodec.java | 12 +++++++----- .../dom/codec/impl/CachingNormalizedNodeCodec.java | 9 +++++---- .../dom/codec/impl/DataContainerCodecContext.java | 2 +- .../binding/generator/api/BindingRuntimeTypes.java | 8 ++++---- .../api/generator/AbstractJavaGeneratedType.java | 4 ++-- .../java/api/generator/AbstractRangeGenerator.java | 3 +-- 10 files changed, 33 insertions(+), 30 deletions(-) diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMNotificationListenerAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMNotificationListenerAdapter.java index b04c1990df..15f89f4c6d 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMNotificationListenerAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMNotificationListenerAdapter.java @@ -28,7 +28,7 @@ class BindingDOMNotificationListenerAdapter implements DOMNotificationListener { private final BindingNormalizedNodeSerializer codec; private final NotificationListener delegate; - private final Map invokers; + private final ImmutableMap invokers; BindingDOMNotificationListenerAdapter(final BindingNormalizedNodeSerializer codec, final NotificationListener delegate) { @@ -59,7 +59,7 @@ class BindingDOMNotificationListenerAdapter implements DOMNotificationListener { return invokers.keySet(); } - public static Map createInvokerMapFor( + private static ImmutableMap createInvokerMapFor( final Class implClz) { final Map builder = new HashMap<>(); for (final TypeToken ifaceToken : TypeToken.of(implClz).getTypes().interfaces()) { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java index 2cea7a06ad..52639f6bb8 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java @@ -26,7 +26,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class BindingDOMRpcProviderServiceAdapter extends AbstractBindingAdapter implements RpcProviderService { - private static final Set GLOBAL = ImmutableSet.of(YangInstanceIdentifier.builder().build()); + private static final ImmutableSet GLOBAL = ImmutableSet.of(YangInstanceIdentifier.EMPTY); public BindingDOMRpcProviderServiceAdapter(final DOMRpcProviderService domRpcRegistry, final BindingToNormalizedNodeCodec codec) { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvoker.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvoker.java index 7d7db49392..0052990d1c 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvoker.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/invoke/NotificationListenerInvoker.java @@ -21,7 +21,6 @@ import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles.Lookup; import java.lang.invoke.MethodType; import java.lang.reflect.Method; -import java.util.Map; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; @@ -48,7 +47,8 @@ public final class NotificationListenerInvoker { return new NotificationListenerInvoker(createInvokerMap(key)); } - private Map createInvokerMap(final Class key) { + private ImmutableMap createInvokerMap( + final Class key) { final Builder ret = ImmutableMap.builder(); for (final Method method : key.getMethods()) { if (BindingReflections.isNotificationCallback(method)) { @@ -70,9 +70,9 @@ public final class NotificationListenerInvoker { } }); - private final Map methodInvokers; + private final ImmutableMap methodInvokers; - NotificationListenerInvoker(final Map map) { + NotificationListenerInvoker(final ImmutableMap map) { this.methodInvokers = map; } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java index fa5dc674aa..db7cbc693e 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractBindingNormalizedNodeCacheHolder.java @@ -7,11 +7,12 @@ */ package org.opendaylight.mdsal.binding.dom.codec.impl; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import java.util.Set; +import com.google.common.collect.ImmutableSet; import org.opendaylight.yangtools.yang.binding.DataObject; /** @@ -20,7 +21,7 @@ import org.opendaylight.yangtools.yang.binding.DataObject; */ abstract class AbstractBindingNormalizedNodeCacheHolder { - private final Set> cachedValues; + private final ImmutableSet> cachedValues; private final LoadingCache, BindingNormalizedNodeCache> caches = CacheBuilder .newBuilder().build(new CacheLoader, BindingNormalizedNodeCache>() { @Override @@ -29,8 +30,8 @@ abstract class AbstractBindingNormalizedNodeCacheHolder { } }); - protected AbstractBindingNormalizedNodeCacheHolder(final Set> cacheSpec) { - cachedValues = Preconditions.checkNotNull(cacheSpec); + AbstractBindingNormalizedNodeCacheHolder(final ImmutableSet> cacheSpec) { + cachedValues = requireNonNull(cacheSpec); } BindingNormalizedNodeCache getCachingSerializer(final DataContainerCodecContext childCtx) { diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BitsCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BitsCodec.java index 95ab2b331a..893f2523a4 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BitsCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BitsCodec.java @@ -7,7 +7,9 @@ */ package org.opendaylight.mdsal.binding.dom.codec.impl; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import java.lang.invoke.MethodHandle; @@ -33,15 +35,15 @@ final class BitsCodec extends ReflectionBasedCodec implements SchemaUnawareCodec private static final MethodType CONSTRUCTOR_INVOKE_TYPE = MethodType.methodType(Object.class, Boolean[].class); // Ordered by position - private final Map getters; + private final ImmutableMap getters; // Ordered by lexical name - private final Set ctorArgs; + private final ImmutableSet ctorArgs; private final MethodHandle ctor; private BitsCodec(final Class typeClass, final MethodHandle ctor, final Set ctorArgs, final Map getters) { super(typeClass); - this.ctor = Preconditions.checkNotNull(ctor); + this.ctor = requireNonNull(ctor); this.ctorArgs = ImmutableSet.copyOf(ctorArgs); this.getters = ImmutableMap.copyOf(getters); } @@ -73,7 +75,7 @@ final class BitsCodec extends ReflectionBasedCodec implements SchemaUnawareCodec @Override @SuppressWarnings("checkstyle:illegalCatch") public Object deserialize(final Object input) { - Preconditions.checkArgument(input instanceof Set); + checkArgument(input instanceof Set); @SuppressWarnings("unchecked") final Set casted = (Set) input; diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CachingNormalizedNodeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CachingNormalizedNodeCodec.java index 6da3a6c8b2..c8504d778f 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CachingNormalizedNodeCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CachingNormalizedNodeCodec.java @@ -7,8 +7,9 @@ */ package org.opendaylight.mdsal.binding.dom.codec.impl; -import com.google.common.base.Preconditions; -import java.util.Set; +import static java.util.Objects.requireNonNull; + +import com.google.common.collect.ImmutableSet; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -19,9 +20,9 @@ class CachingNormalizedNodeCodec extends AbstractBindingNo private final DataContainerCodecContext context; CachingNormalizedNodeCodec(final DataContainerCodecContext subtreeRoot, - final Set> cacheSpec) { + final ImmutableSet> cacheSpec) { super(cacheSpec); - this.context = Preconditions.checkNotNull(subtreeRoot); + this.context = requireNonNull(subtreeRoot); } @Override diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java index db04b51f7c..92cc5b51a4 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java @@ -130,7 +130,7 @@ abstract class DataContainerCodecContext(this); } - return new CachingNormalizedNodeCodec<>(this,ImmutableSet.copyOf(cacheSpecifier)); + return new CachingNormalizedNodeCodec<>(this, ImmutableSet.copyOf(cacheSpecifier)); } BindingStreamEventWriter createWriter(final NormalizedNodeStreamWriter domWriter) { diff --git a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/api/BindingRuntimeTypes.java b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/api/BindingRuntimeTypes.java index 94594c2f7b..e5ed043394 100644 --- a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/api/BindingRuntimeTypes.java +++ b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/api/BindingRuntimeTypes.java @@ -31,10 +31,10 @@ import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; @ThreadSafe public final class BindingRuntimeTypes implements Immutable { - private final Map typeToAugmentation; - private final BiMap typeToSchema; - private final Multimap choiceToCases; - private final Map identities; + private final ImmutableMap typeToAugmentation; + private final ImmutableBiMap typeToSchema; + private final ImmutableMultimap choiceToCases; + private final ImmutableMap identities; public BindingRuntimeTypes(final Map typeToAugmentation, final BiMap typeToDefiningSchema, final Multimap choiceToCases, diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java index 75461fa843..95741f79a5 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractJavaGeneratedType.java @@ -38,8 +38,8 @@ import org.opendaylight.mdsal.binding.model.api.WildcardType; @NotThreadSafe abstract class AbstractJavaGeneratedType { private final Map nameCache = new HashMap<>(); - private final Map enclosedTypes; - private final Set conflictingNames; + private final ImmutableMap enclosedTypes; + private final ImmutableSet conflictingNames; private final JavaTypeName name; diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java index 8befec7b80..fee91319c4 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java @@ -11,7 +11,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -import java.util.Map; import java.util.function.Function; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.model.api.ConcreteType; @@ -22,7 +21,7 @@ import org.slf4j.LoggerFactory; abstract class AbstractRangeGenerator> { private static final Logger LOG = LoggerFactory.getLogger(AbstractRangeGenerator.class); - private static final Map> GENERATORS; + private static final ImmutableMap> GENERATORS; private static void addGenerator(final Builder> builder, final AbstractRangeGenerator generator) { -- 2.36.6