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;
* 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
* @param key used for serializer lookup
* @param serializer serializer implementation
*/
- void registerActionSerializer(ExperimenterActionSerializerKey key,
+ void registerActionSerializer(ActionSerializerKey<?> key,
OFGeneralSerializer serializer);
/**
* @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
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);
+}