Instruction experimenterId fix 62/17162/4
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Thu, 26 Mar 2015 14:27:24 +0000 (15:27 +0100)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Sat, 28 Mar 2015 18:34:22 +0000 (18:34 +0000)
Change-Id: I19dde700890e9211b37cfef70b35d764391831f0
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerExtensionProvider.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ActionSerializerKey.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/InstructionSerializerKey.java
openflow-protocol-api/src/main/yang/openflow-instruction.yang
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/SwitchConnectionProviderImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMakerFactory.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMakerFactoryTest.java

index 8729f874a66f5be85d9cd474bb5935d23d2e2aa9..9e73e951bf8a0065cdcc4145ffab585a5cb1807e 100644 (file)
@@ -8,10 +8,10 @@
 
 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;
@@ -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,7 +55,7 @@ public interface SerializerExtensionProvider {
      * @param key used for serializer lookup
      * @param serializer serializer implementation
      */
-    void registerInstructionSerializer(ExperimenterInstructionSerializerKey key,
+    void registerInstructionSerializer(InstructionSerializerKey<?> key,
             OFGeneralSerializer serializer);
 
     /**
index f23c01c652214ba212f42759867fdc9e6d44409e..7d096f84e533c356d8894d03a11965a624980165 100644 (file)
@@ -15,7 +15,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
  * @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;
index 6f9a299b00be47084e820c4c64cd38049cba426c..89f5cbfead224753c5ea94f54ef9ca77ba8f750f 100644 (file)
@@ -16,7 +16,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
  * @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;
index 293e3803cdab7f5b5ed46aa8e2e5933649429b4d..a58fc349bbea58dc7c3d960fcbe9bf5d67e54fc3 100644 (file)
@@ -25,6 +25,9 @@
         list instruction {
             config false;
             uses instruction-grouping;
+            leaf experimenter-id {
+                type oft:experimenter-id;
+            }
         }
     }
 
index 852ce64f0551864d7562871bec02a514d26644a7..51b802e3d500737cf819db172f6796776ecaadd0 100644 (file)
@@ -19,14 +19,14 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeseria
 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;
@@ -181,7 +181,7 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider, C
     }
 
     @Override
-    public void registerActionSerializer(ExperimenterActionSerializerKey key,
+    public void registerActionSerializer(ActionSerializerKey<?> key,
             OFGeneralSerializer serializer) {
         serializerRegistry.registerSerializer(key, serializer);
     }
@@ -193,7 +193,7 @@ public class SwitchConnectionProviderImpl implements SwitchConnectionProvider, C
     }
 
     @Override
-    public void registerInstructionSerializer(ExperimenterInstructionSerializerKey key,
+    public void registerInstructionSerializer(InstructionSerializerKey<?> key,
             OFGeneralSerializer serializer) {
         serializerRegistry.registerSerializer(key, serializer);
     }
index e954a4366f957d630a7b8b2a790fa5e9acce88b6..7fef029c7c2a9a92ba93e74a08c5735513c8fd76 100644 (file)
@@ -9,7 +9,6 @@
 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;
@@ -83,12 +82,10 @@ public abstract class TypeKeyMakerFactory {
         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);
index c6278285f214966b1eebbacf02c0455f4f023866..0cfb09407df58b85b905de0146480fb207af6bd7 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.openflowjava.protocol.impl.util;
 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;
@@ -25,6 +24,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 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;
@@ -107,22 +108,14 @@ public class TypeKeyMakerFactoryTest {
         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);
     }
 
     /**