From 21d31541ff40f9be4d453b903a533d0c49ce17bc Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 15 May 2015 17:26:43 +0200 Subject: [PATCH] Use an ImmutableMap in DeserializationFactory The contents are not changed once initialized. Take advatage of ImmutableMap's speed. Change-Id: I60d76f85149cf5f757eb224d0a993e7b8d9c3504 Signed-off-by: Robert Varga (cherry picked from commit 32b44f6755e35fbe1ccb429ffc3a03345aff4a1b) --- .../deserialization/DeserializationFactory.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java index 09f4fd1d..51e1ff6f 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java @@ -8,11 +8,10 @@ package org.opendaylight.openflowjava.protocol.impl.deserialization; +import com.google.common.collect.ImmutableMap; import io.netty.buffer.ByteBuf; - import java.util.HashMap; import java.util.Map; - import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry; import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer; import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey; @@ -26,15 +25,16 @@ import org.opendaylight.yangtools.yang.binding.DataObject; */ public class DeserializationFactory { + private final Map> messageClassMap; private DeserializerRegistry registry; - private Map> messageClassMap; /** * Constructor */ public DeserializationFactory() { - messageClassMap = new HashMap<>(); - TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap); + final Map> temp = new HashMap<>(); + TypeToClassMapInitializer.initializeTypeToClassMap(temp); + messageClassMap = ImmutableMap.copyOf(temp); } /** @@ -43,7 +43,7 @@ public class DeserializationFactory { * @param version version decoded from OpenFlow protocol message * @return correct POJO as DataObject */ - public DataObject deserialize(ByteBuf rawMessage, short version) { + public DataObject deserialize(final ByteBuf rawMessage, final short version) { DataObject dataObject = null; int type = rawMessage.readUnsignedByte(); Class clazz = messageClassMap.get(new TypeToClassKey(version, type)); @@ -57,7 +57,7 @@ public class DeserializationFactory { /** * @param registry */ - public void setRegistry(DeserializerRegistry registry) { + public void setRegistry(final DeserializerRegistry registry) { this.registry = registry; } -- 2.36.6