Use an ImmutableMap in DeserializationFactory 30/20530/1
authorRobert Varga <rovarga@cisco.com>
Fri, 15 May 2015 15:26:43 +0000 (17:26 +0200)
committerRobert Varga <rovarga@cisco.com>
Fri, 15 May 2015 15:36:08 +0000 (17:36 +0200)
The contents are not changed once initialized. Take advatage of
ImmutableMap's speed.

Change-Id: I60d76f85149cf5f757eb224d0a993e7b8d9c3504
Signed-off-by: Robert Varga <rovarga@cisco.com>
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java

index 09f4fd1db7d402f0954cda8c47fbb1f0afca0362..51e1ff6ffe64fa98b95ec884e12521ad0cd7d3c5 100644 (file)
@@ -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<TypeToClassKey, Class<?>> messageClassMap;
     private DeserializerRegistry registry;
-    private Map<TypeToClassKey, Class<?>> messageClassMap;
 
     /**
      * Constructor
      */
     public DeserializationFactory() {
-        messageClassMap = new HashMap<>();
-        TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap);
+        final Map<TypeToClassKey, Class<?>> 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;
     }