package org.opendaylight.openflowjava.protocol.api.extensibility;
-import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterActionSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionSerializerKey;
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.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
* @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);
/**
* @author michal.polkorab
* @param <T> action type
*/
-public class ActionSerializerKey<T extends ActionChoice> extends MessageTypeKey<Action> {
+public class ActionSerializerKey<T extends ActionChoice> extends MessageTypeKey<Action>
+ implements ExperimenterSerializerKey {
private Class<T> actionType;
private Long experimenterId;
* @param <T> instruction type
*/
public class InstructionSerializerKey<T extends InstructionChoice>
- extends MessageTypeKey<Instruction>{
+ extends MessageTypeKey<Instruction> implements ExperimenterSerializerKey {
private Class<T> instructionType;
private Long experimenterId;
list instruction {
config false;
uses instruction-grouping;
+ leaf experimenter-id {
+ type oft:experimenter-id;
+ }
}
}
import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
+import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterActionDeserializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterActionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterIdSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionDeserializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.InstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
}
@Override
- public void registerActionSerializer(ExperimenterActionSerializerKey key,
+ public void registerActionSerializer(ActionSerializerKey<?> key,
OFGeneralSerializer serializer) {
serializerRegistry.registerSerializer(key, serializer);
}
}
@Override
- public void registerInstructionSerializer(ExperimenterInstructionSerializerKey key,
+ public void registerInstructionSerializer(InstructionSerializerKey<?> key,
OFGeneralSerializer serializer) {
serializerRegistry.registerSerializer(key, serializer);
}
package org.opendaylight.openflowjava.protocol.impl.util;
import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.InstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
return new AbstractTypeKeyMaker<Instruction>(version) {
@Override
public MessageTypeKey<?> make(Instruction entry) {
- if (entry.getInstructionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow
- .augments.rev150225.instruction.container.instruction.choice.ExperimenterIdCase) {
- return new ExperimenterInstructionSerializerKey(getVersion(),
- ((org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.instruction
- .container.instruction.choice.ExperimenterIdCase) entry.getInstructionChoice())
- .getExperimenter().getExperimenterId().getValue());
+ if (entry.getExperimenterId() != null) {
+ return new InstructionSerializerKey<>(getVersion(),
+ (Class<InstructionChoice>) entry.getInstructionChoice().getImplementedInterface(),
+ entry.getExperimenterId().getValue());
}
return new InstructionSerializerKey<>(getVersion(),
(Class<InstructionChoice>) entry.getInstructionChoice().getImplementedInterface(), null);
import org.junit.Assert;
import org.junit.Test;
import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
-import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterInstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.InstructionSerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.ClearActionsCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.ClearActionsCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.GotoTableCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.GotoTableCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;
Assert.assertNotNull("Null keyMaker", keyMaker);
InstructionBuilder builder = new InstructionBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.instruction.container
- .instruction.choice.ExperimenterIdCaseBuilder caseBuilder = new org.opendaylight.yang.gen.v1.urn
- .opendaylight.openflow.augments.rev150225.instruction.container.instruction.choice.ExperimenterIdCaseBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.instruction.container
- .instruction.choice.experimenter.id._case.ExperimenterBuilder expIdBuilder = new org.opendaylight.yang.gen
- .v1.urn.opendaylight.openflow.augments.rev150225.instruction.container.instruction.choice.experimenter.id
- ._case.ExperimenterBuilder();
- expIdBuilder.setExperimenterId(new ExperimenterId(42L));
- caseBuilder.setExperimenter(expIdBuilder.build());
- builder.setInstructionChoice(caseBuilder.build());
+ builder.setExperimenterId(new ExperimenterId(42L));
+ builder.setInstructionChoice(new ClearActionsCaseBuilder().build());
Instruction instruction = builder.build();
MessageTypeKey<?> key = keyMaker.make(instruction);
Assert.assertNotNull("Null key", key);
- Assert.assertEquals("Wrong key", new ExperimenterInstructionSerializerKey(EncodeConstants.OF13_VERSION_ID,
- 42L), key);
+ Assert.assertEquals("Wrong key", new InstructionSerializerKey(EncodeConstants.OF13_VERSION_ID,
+ ClearActionsCase.class, 42L), key);
}
/**