Remove bundle extension (de)serializers
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / SimpleDeserializerRegistryHelper.java
index 38d05d2cbc65c82c676b0fa6bf1a2f0d26ecb3ba..6d527c4a043d2bcefc19aa8fde481b5815bee9c2 100644 (file)
@@ -12,8 +12,8 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeseria
 import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
 
 /**
+ * Helper class for deserializer registration.
  * @author michal.polkorab
- *
  */
 public class SimpleDeserializerRegistryHelper {
 
@@ -24,21 +24,24 @@ public class SimpleDeserializerRegistryHelper {
      * @param version wire protocol version
      * @param deserializerRegistry registry to be filled with message deserializers
      */
-    public SimpleDeserializerRegistryHelper(short version, DeserializerRegistry deserializerRegistry) {
+    public SimpleDeserializerRegistryHelper(final short version, final DeserializerRegistry deserializerRegistry) {
         this.version = version;
         this.registry = deserializerRegistry;
     }
 
     /**
+     * Register deserializer in registry. If deserializer supports more protocol versions assign actual one.
      * @param code code / value to distinguish between deserializers
-     * @param experimenterID TODO
-     * @param deserializedObjectClass class of object that will be deserialized
-     *  by given deserializer
+     * @param deserializedObjectClass class of object that will be deserialized by given deserializer
      * @param deserializer deserializer instance
      */
-    public void registerDeserializer(int code,
-            Long experimenterID, Class<?> deserializedObjectClass, OFGeneralDeserializer deserializer) {
-        registry.registerDeserializer(new MessageCodeKey(version, code,
-                deserializedObjectClass), deserializer);
+    public void registerDeserializer(final int code, final Class<?> deserializedObjectClass,
+                                     final OFGeneralDeserializer deserializer) {
+        registry.registerDeserializer(new MessageCodeKey(version, code, deserializedObjectClass), deserializer);
+
+        if (deserializer instanceof VersionAssignableFactory) {
+            ((VersionAssignableFactory) deserializer).assignVersion(version);
+        }
     }
+
 }