Instruction experimenterId fix
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / TypeKeyMakerFactory.java
index 13d68da9982c73103d7035db93b625e022f31af4..7fef029c7c2a9a92ba93e74a08c5735513c8fd76 100644 (file)
@@ -1,86 +1,95 @@
-/*\r
- * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-\r
-package org.opendaylight.openflowjava.protocol.impl.util;\r
-\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.keys.ActionSerializerKey;\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.keys.InstructionSerializerKey;\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntrySerializerKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterInstruction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterMatchEntry;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Experimenter;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
-\r
-/**\r
- * Creates KeyMakers\r
- * @author michal.polkorab\r
- */\r
-public abstract class TypeKeyMakerFactory {\r
-\r
-    /**\r
-     * @param version openflow wire version that shall be used\r
-     *  in lookup key\r
-     * @return lookup key\r
-     */\r
-    public static TypeKeyMaker<MatchEntries> createMatchEntriesKeyMaker(short version) {\r
-        return new AbstractTypeKeyMaker<MatchEntries>(version) {\r
-            @Override\r
-            public MatchEntrySerializerKey<?, ?> make(MatchEntries entry) {\r
-                MatchEntrySerializerKey<?, ?> key;\r
-                key = new MatchEntrySerializerKey<>(getVersion(), entry.getOxmClass(),\r
-                        entry.getOxmMatchField());\r
-                if (entry.getOxmClass().equals(ExperimenterClass.class)) {\r
-                    key.setExperimenterId(entry.getAugmentation(ExperimenterMatchEntry.class)\r
-                            .getExperimenter());\r
-                    return key;\r
-                }\r
-                key.setExperimenterId(null);\r
-                return key;\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * @param version openflow wire version that shall be used\r
-     *  in lookup key\r
-     * @return lookup key\r
-     */\r
-    public static TypeKeyMaker<Action> createActionKeyMaker(short version) {\r
-        return new AbstractTypeKeyMaker<Action>(version) {\r
-            @Override\r
-            public ActionSerializerKey<?> make(Action entry) {\r
-                if (entry.getType().equals(Experimenter.class)) {\r
-                    return new ActionSerializerKey<>(getVersion(), entry.getType(), entry.getAugmentation(ExperimenterAction.class).getExperimenter());\r
-                }\r
-                return new ActionSerializerKey<>(getVersion(), entry.getType(), null);\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * @param version openflow wire version that shall be used\r
-     *  in lookup key\r
-     * @return lookup key\r
-     */\r
-    public static TypeKeyMaker<Instruction> createInstructionKeyMaker(short version) {\r
-        return new AbstractTypeKeyMaker<Instruction>(version) {\r
-            @Override\r
-            public InstructionSerializerKey<?> make(Instruction entry) {\r
-                if (entry.getType().equals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common\r
-                        .instruction.rev130731.Experimenter.class)) {\r
-                    return new InstructionSerializerKey<>(getVersion(), entry.getType(), entry.getAugmentation(ExperimenterInstruction.class).getExperimenter());\r
-                }\r
-                return new InstructionSerializerKey<>(getVersion(), entry.getType(), null);\r
-            }\r
-        };\r
-    }\r
-}\r
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.openflowjava.protocol.impl.util;
+
+import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
+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.augments.rev150225.oxm.container.match.entry.value.ExperimenterIdCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.ActionChoice;
+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.instruction.rev130731.instruction.grouping.InstructionChoice;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ExperimenterClass;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
+
+/**
+ * Creates KeyMakers
+ * @author michal.polkorab
+ */
+public abstract class TypeKeyMakerFactory {
+
+    private TypeKeyMakerFactory() {
+        //not called
+    }
+    
+    /**
+     * @param version openflow wire version that shall be used
+     *  in lookup key
+     * @return lookup key
+     */
+    public static TypeKeyMaker<MatchEntry> createMatchEntriesKeyMaker(short version) {
+        return new AbstractTypeKeyMaker<MatchEntry>(version) {
+            @Override
+            public MatchEntrySerializerKey<?, ?> make(MatchEntry entry) {
+                MatchEntrySerializerKey<?, ?> key;
+                key = new MatchEntrySerializerKey<>(getVersion(), entry.getOxmClass(),
+                        entry.getOxmMatchField());
+                if (entry.getOxmClass().equals(ExperimenterClass.class)) {
+                    ExperimenterIdCase entryValue = (ExperimenterIdCase) entry.getMatchEntryValue();
+                    key.setExperimenterId(entryValue.getExperimenter().getExperimenter().getValue());
+                    return key;
+                }
+                key.setExperimenterId(null);
+                return key;
+            }
+        };
+    }
+
+    /**
+     * @param version openflow wire version that shall be used
+     *  in lookup key
+     * @return lookup key
+     */
+    public static TypeKeyMaker<Action> createActionKeyMaker(short version) {
+        return new AbstractTypeKeyMaker<Action>(version) {
+            @Override
+            public MessageTypeKey<?> make(Action entry) {
+                if (entry.getExperimenterId() != null) {
+                    return new ActionSerializerKey<>(getVersion(),
+                            (Class<ActionChoice>) entry.getActionChoice().getImplementedInterface(),
+                            entry.getExperimenterId().getValue());
+                }
+                return new ActionSerializerKey<>(getVersion(),
+                        (Class<ActionChoice>) entry.getActionChoice().getImplementedInterface(), null);
+            }
+        };
+    }
+
+    /**
+     * @param version openflow wire version that shall be used
+     *  in lookup key
+     * @return lookup key
+     */
+    public static TypeKeyMaker<Instruction> createInstructionKeyMaker(short version) {
+        return new AbstractTypeKeyMaker<Instruction>(version) {
+            @Override
+            public MessageTypeKey<?> make(Instruction entry) {
+                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);
+            }
+        };
+    }
+}