Bug 6744 - the parameters of the function of registerMeterBandSerializer need to...
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / SerializerExtensionProvider.java
old mode 100644 (file)
new mode 100755 (executable)
index b5bb0c2..f108b7c
@@ -8,16 +8,16 @@
 
 package org.opendaylight.openflowjava.protocol.api.extensibility;
 
+import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdMeterSubTypeSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.InstructionSerializerKey;
 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterActionSerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterIdSerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterInstructionSerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterSerializerKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmClassBase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.experimenter.core.ExperimenterDataOfChoice;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;
 
 
@@ -26,8 +26,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * In case of handling multiple structures of same type (actions,
  * instructions, match entries, ... ) which are differentiated by
  * vendor / experimenter subtype, vendor has to switch / choose between
- * these subtypes. <br />
- * 
+ * these subtypes.<br>
+ *
  * This has to be done in this way because of unknown augmentations
  * - that's why vendor has to handle it in his own implementations.
  * @author michal.polkorab
@@ -47,7 +47,7 @@ public interface SerializerExtensionProvider {
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
-    void registerActionSerializer(ExperimenterActionSerializerKey key,
+    void registerActionSerializer(ActionSerializerKey<?> key,
             OFGeneralSerializer serializer);
 
     /**
@@ -55,32 +55,34 @@ public interface SerializerExtensionProvider {
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
-    void registerInstructionSerializer(ExperimenterInstructionSerializerKey key,
+    void registerInstructionSerializer(InstructionSerializerKey<?> key,
             OFGeneralSerializer serializer);
 
     /**
      * Registers match entry serializer
+     * @param <C> oxm type
+     * @param <F> match field type
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
-    <OXMCLASS extends OxmClassBase, OXMTYPE extends MatchField> void registerMatchEntrySerializer(
-            MatchEntrySerializerKey<OXMCLASS, OXMTYPE> key,OFGeneralSerializer serializer);
+    <C extends OxmClassBase, F extends MatchField> void registerMatchEntrySerializer(
+            MatchEntrySerializerKey<C, F> key,OFGeneralSerializer serializer);
 
     /**
      * Registers experimenter (vendor) message serializer
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
-    void registerExperimenterMessageSerializer(ExperimenterIdSerializerKey<ExperimenterInput> key,
-            OFSerializer<ExperimenterInput> serializer);
+    void registerExperimenterMessageSerializer(ExperimenterIdSerializerKey<? extends ExperimenterDataOfChoice> key,
+                                               OFSerializer<? extends ExperimenterDataOfChoice> serializer);
 
     /**
      * Registers multipart-request (stats-request) serializer
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
-    void registerMultipartRequestSerializer(ExperimenterIdSerializerKey<MultipartRequestExperimenterCase> key,
-            OFSerializer<MultipartRequestExperimenterCase> serializer);
+    void registerMultipartRequestSerializer(ExperimenterIdSerializerKey<? extends ExperimenterDataOfChoice> key,
+                                            OFSerializer<? extends ExperimenterDataOfChoice> serializer);
 
     /**
      * Registers multipart-request table-features serializer
@@ -91,10 +93,21 @@ public interface SerializerExtensionProvider {
             OFGeneralSerializer serializer);
 
     /**
+     * @deprecated Since we use ExperimenterIdMeterSubTypeSerializerKey as MeterBandSerializer's key, in order to avoid
+     * the occurrence of an error,we should discard this function
      * Registers meter band serializer (used in meter-mod messages)
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
+    @Deprecated
     void registerMeterBandSerializer(ExperimenterIdSerializerKey<MeterBandExperimenterCase> key,
             OFSerializer<MeterBandExperimenterCase> serializer);
-}
\ No newline at end of file
+
+    /**
+     * Registers meter band serializer (used in meter-mod messages)
+     * @param key used for serializer lookup
+     * @param serializer serializer implementation
+     */
+    void registerMeterBandSerializer(ExperimenterIdMeterSubTypeSerializerKey<MeterBandExperimenterCase> key,
+                                     OFSerializer<MeterBandExperimenterCase> serializer);
+}