Extensibility support - added possibility to unregister registered (de)serializers 99/8599/2
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Thu, 3 Jul 2014 08:02:51 +0000 (10:02 +0200)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Thu, 3 Jul 2014 15:40:32 +0000 (15:40 +0000)
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistry.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistry.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/connection/SwitchConnectionProviderImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializerRegistryImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java
openflow-protocol-spi/src/main/java/org/opendaylight/openflowjava/protocol/spi/connection/SwitchConnectionProvider.java

index 665fa574c4e2c1d8917dd481fe29602dd83afb61..4266ab544ba958a03930ab104d8875026941226c 100644 (file)
@@ -27,8 +27,18 @@ public interface DeserializerRegistry {
             SERIALIZER_TYPE getDeserializer(MessageCodeKey key);\r
 \r
     /**\r
+     * Registers deserializer under key\r
      * @param key used to registry lookup\r
      * @param deserializer deserializer instance\r
      */\r
     public void registerDeserializer(MessageCodeKey key, OFGeneralDeserializer deserializer);\r
+\r
+    /**\r
+     * Unregisters deserializer under key\r
+     * @param key used to registry lookup\r
+     * @param deserializer deserializer instance\r
+     * @return true if deserializer was removed,\r
+     *  false if no deserializer was found under specified key\r
+     */\r
+    public boolean unregisterDeserializer(MessageCodeKey key);\r
 }\r
index b5eec47f341b9c57530f3adc90d7613d7a3270f2..83b4ae8d129c069bca9612f54ed932ede84ae14a 100644 (file)
@@ -34,4 +34,13 @@ public interface SerializerRegistry {
      */\r
     public <KEY_TYPE> void\r
         registerSerializer(MessageTypeKey<KEY_TYPE> msgTypeKey, OFGeneralSerializer serializer);\r
+\r
+    /**\r
+     * Unregisters serializer under key\r
+     * @param msgTypeKey lookup key\r
+     * @param serializer serializer implementation\r
+     * @return true if serializer was removed,\r
+     *  false if no serializer was found under specified key\r
+     */\r
+    public <KEY_TYPE> boolean unregisterSerializer(MessageTypeKey<KEY_TYPE> msgTypeKey);\r
 }\r
index b202598653caaef3028d79c937b4c659865e9210..0bab56a587f96dad030a1fcb6bad782d089f97e0 100644 (file)
@@ -144,4 +144,14 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider {
     public void close() throws Exception {
         shutdown();
     }
+
+    @Override
+    public <KEY_TYPE> boolean unregisterSerializer(MessageTypeKey<KEY_TYPE> key) {
+        return serializerRegistry.unregisterSerializer(key);
+    }
+
+    @Override
+    public boolean unregisterDeserializer(MessageCodeKey key) {
+        return deserializerRegistry.unregisterDeserializer(key);
+    }
 }
index 34d2534c5729688369a53152451cda2c858617dc..ff618542084b5853720a9b05630894c594114ac2 100644 (file)
@@ -78,4 +78,16 @@ public class DeserializerRegistryImpl implements DeserializerRegistry {
         registry.put(key, deserializer);
     }
 
+    @Override
+    public boolean unregisterDeserializer(MessageCodeKey key) {
+        if (key == null) {
+            throw new NullPointerException("MessageCodeKey is null");
+        }
+        OFGeneralDeserializer deserializer = registry.remove(key);
+        if (deserializer == null) {
+            return false;
+        }
+        return true;
+    }
+
 }
index 4336015b941049912c9a813b3e6846b98a6ad689..4f36b054a14c87fe48f80d6fd20d6e6a6239bb6d 100644 (file)
@@ -81,4 +81,16 @@ public class SerializerRegistryImpl implements SerializerRegistry {
         }
         registry.put(msgTypeKey, serializer);
     }
+
+    @Override
+    public <KEY_TYPE> boolean unregisterSerializer(MessageTypeKey<KEY_TYPE> msgTypeKey) {
+        if (msgTypeKey == null) {
+            throw new NullPointerException("MessageTypeKey is null");
+        }
+        OFGeneralSerializer serializer = registry.remove(msgTypeKey);
+        if (serializer == null) {
+            return false;
+        }
+        return true;
+    }
 }
index c31cb44375ea115d9130f3772c5180cafcd539ac..8bae5c06779c406b5806f4d43fc96db6348dbd07 100644 (file)
@@ -63,4 +63,21 @@ public interface SwitchConnectionProvider extends AutoCloseable {
      */
     public void registerDeserializer(MessageCodeKey key, OFGeneralDeserializer deserializer);
 
+    /**
+     * Unregisters custom serializer
+     * @param key used for serializer lookup
+     * @param serializer serializer implementation
+     * @return true if serializer was removed,
+     *  false if no serializer was found under specified key
+     */
+    public  <KEY_TYPE> boolean unregisterSerializer(MessageTypeKey<KEY_TYPE> key);
+
+    /**
+     * Unregisters custom deserializer
+     * @param key used for deserializer lookup
+     * @param deserializer deserializer instance
+     * @return true if deserializer was removed,
+     *  false if no deserializer was found under specified key
+     */
+    public boolean unregisterDeserializer(MessageCodeKey key);
 }