Extensibility support (deserialization part)
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / TypeToClassMapInitializer.java
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/TypeToClassMapInitializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/TypeToClassMapInitializer.java
new file mode 100644 (file)
index 0000000..6e193e2
--- /dev/null
@@ -0,0 +1,75 @@
+/*\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
+package org.opendaylight.openflowjava.protocol.impl.deserialization;\r
+\r
+import java.util.Map;\r
+\r
+import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
+import org.opendaylight.openflowjava.protocol.impl.util.TypeToClassInitHelper;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierOutput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoOutput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoRequestMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncOutput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigOutput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigOutput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestOutput;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class TypeToClassMapInitializer {\r
+\r
+    /**\r
+     * Initializes type to class map\r
+     * @param messageClassMap\r
+     */\r
+    public static void initializeTypeToClassMap(Map<TypeToClassKey, Class<?>> messageClassMap) {\r
+        // init OF v1.0 mapping\r
+        TypeToClassInitHelper helper = \r
+                new TypeToClassInitHelper(EncodeConstants.OF10_VERSION_ID, messageClassMap);\r
+        helper.registerTypeToClass((short) 0, HelloMessage.class);\r
+        helper.registerTypeToClass((short) 1, ErrorMessage.class);\r
+        helper.registerTypeToClass((short) 2, EchoRequestMessage.class);\r
+        helper.registerTypeToClass((short) 3, EchoOutput.class);\r
+        helper.registerTypeToClass((short) 4, ExperimenterMessage.class);\r
+        helper.registerTypeToClass((short) 6, GetFeaturesOutput.class);\r
+        helper.registerTypeToClass((short) 8, GetConfigOutput.class);\r
+        helper.registerTypeToClass((short) 10, PacketInMessage.class);\r
+        helper.registerTypeToClass((short) 11, FlowRemovedMessage.class);\r
+        helper.registerTypeToClass((short) 12, PortStatusMessage.class);\r
+        helper.registerTypeToClass((short) 17, MultipartReplyMessage.class);\r
+        helper.registerTypeToClass((short) 19, BarrierOutput.class);\r
+        helper.registerTypeToClass((short) 21, GetQueueConfigOutput.class);\r
+        // init OF v1.0 mapping\r
+        helper = new TypeToClassInitHelper(EncodeConstants.OF13_VERSION_ID, messageClassMap);\r
+        helper.registerTypeToClass((short) 0, HelloMessage.class);\r
+        helper.registerTypeToClass((short) 1, ErrorMessage.class);\r
+        helper.registerTypeToClass((short) 2, EchoRequestMessage.class);\r
+        helper.registerTypeToClass((short) 3, EchoOutput.class);\r
+        helper.registerTypeToClass((short) 4, ExperimenterMessage.class);\r
+        helper.registerTypeToClass((short) 6, GetFeaturesOutput.class);\r
+        helper.registerTypeToClass((short) 8, GetConfigOutput.class);\r
+        helper.registerTypeToClass((short) 10, PacketInMessage.class);\r
+        helper.registerTypeToClass((short) 11, FlowRemovedMessage.class);\r
+        helper.registerTypeToClass((short) 12, PortStatusMessage.class);\r
+        helper.registerTypeToClass((short) 19, MultipartReplyMessage.class);\r
+        helper.registerTypeToClass((short) 21, BarrierOutput.class);\r
+        helper.registerTypeToClass((short) 23, GetQueueConfigOutput.class);\r
+        helper.registerTypeToClass((short) 25, RoleRequestOutput.class);\r
+        helper.registerTypeToClass((short) 27, GetAsyncOutput.class);\r
+    }\r
+}\r