d3e74b5c8b1a5156ccb534041341e22ad4074acd
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / ActionsInitializer.java
1 /*\r
2  * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.openflowjava.protocol.impl.serialization;\r
9 \r
10 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
11 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
12 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10EnqueueActionSerializer;\r
13 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10OutputActionSerializer;\r
14 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetDlDstActionSerializer;\r
15 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetDlSrcActionSerializer;\r
16 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetNwDstActionSerializer;\r
17 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetNwSrcActionSerializer;\r
18 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetNwTosActionSerializer;\r
19 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetTpDstActionSerializer;\r
20 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetTpSrcActionSerializer;\r
21 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetVlanPcpActionSerializer;\r
22 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetVlanVidActionSerializer;\r
23 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10StripVlanActionSerializer;\r
24 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13CopyTtlInActionSerializer;\r
25 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13CopyTtlOutActionSerializer;\r
26 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13DecMplsTtlActionSerializer;\r
27 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13DecNwTtlActionSerializer;\r
28 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13GroupActionSerializer;\r
29 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13OutputActionSerializer;\r
30 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13PopMplsActionSerializer;\r
31 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13PopPbbActionSerializer;\r
32 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13PopVlanActionSerializer;\r
33 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13PushMplsActionSerializer;\r
34 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13PushPbbActionSerializer;\r
35 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13PushVlanActionSerializer;\r
36 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetFieldActionSerializer;\r
37 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetMplsTtlActionSerializer;\r
38 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetNwTtlActionSerializer;\r
39 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetQueueActionSerializer;\r
40 import org.opendaylight.openflowjava.protocol.impl.util.ActionSerializerRegistryHelper;\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlIn;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut;\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl;\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecNwTtl;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Enqueue;\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Group;\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Output;\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopMpls;\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopPbb;\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopVlan;\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushMpls;\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushPbb;\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushVlan;\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetDlDst;\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetDlSrc;\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetField;\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetMplsTtl;\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwDst;\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwSrc;\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTos;\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTtl;\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetQueue;\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetTpDst;\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetTpSrc;\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetVlanPcp;\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetVlanVid;\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.StripVlan;\r
68 \r
69 /**\r
70  * Initializes serializer registry with action serializers\r
71  * @author michal.polkorab\r
72  */\r
73 public final class ActionsInitializer {\r
74 \r
75     private ActionsInitializer() {\r
76         throw new UnsupportedOperationException("Utility class shouldn't be instantiated");\r
77     }\r
78 \r
79     /**\r
80      * Registers action serializers into provided registry\r
81      * @param serializerRegistry registry to be initialized with action serializers\r
82      */\r
83     public static void registerActionSerializers(SerializerRegistry serializerRegistry) {\r
84         // register OF v1.0 action serializers\r
85         ActionSerializerRegistryHelper helper = new ActionSerializerRegistryHelper(\r
86                 EncodeConstants.OF10_VERSION_ID, serializerRegistry);\r
87         helper.registerSerializer(Output.class, new OF10OutputActionSerializer());\r
88         helper.registerSerializer(SetVlanVid.class, new OF10SetVlanVidActionSerializer());\r
89         helper.registerSerializer(SetVlanPcp.class, new OF10SetVlanPcpActionSerializer());\r
90         helper.registerSerializer(StripVlan.class, new OF10StripVlanActionSerializer());\r
91         helper.registerSerializer(SetDlSrc.class, new OF10SetDlSrcActionSerializer());\r
92         helper.registerSerializer(SetDlDst.class, new OF10SetDlDstActionSerializer());\r
93         helper.registerSerializer(SetNwSrc.class, new OF10SetNwSrcActionSerializer());\r
94         helper.registerSerializer(SetNwDst.class, new OF10SetNwDstActionSerializer());\r
95         helper.registerSerializer(SetNwTos.class, new OF10SetNwTosActionSerializer());\r
96         helper.registerSerializer(SetTpSrc.class, new OF10SetTpSrcActionSerializer());\r
97         helper.registerSerializer(SetTpDst.class, new OF10SetTpDstActionSerializer());\r
98         helper.registerSerializer(Enqueue.class, new OF10EnqueueActionSerializer());\r
99         // register OF v1.0 action serializers\r
100         helper = new ActionSerializerRegistryHelper(\r
101                 EncodeConstants.OF13_VERSION_ID, serializerRegistry);\r
102         helper.registerSerializer(Output.class, new OF13OutputActionSerializer());\r
103         helper.registerSerializer(CopyTtlOut.class, new OF13CopyTtlOutActionSerializer());\r
104         helper.registerSerializer(CopyTtlIn.class, new OF13CopyTtlInActionSerializer());\r
105         helper.registerSerializer(SetMplsTtl.class, new OF13SetMplsTtlActionSerializer());\r
106         helper.registerSerializer(DecMplsTtl.class, new OF13DecMplsTtlActionSerializer());\r
107         helper.registerSerializer(PushVlan.class, new OF13PushVlanActionSerializer());\r
108         helper.registerSerializer(PopVlan.class, new OF13PopVlanActionSerializer());\r
109         helper.registerSerializer(PushMpls.class, new OF13PushMplsActionSerializer());\r
110         helper.registerSerializer(PopMpls.class, new OF13PopMplsActionSerializer());\r
111         helper.registerSerializer(SetQueue.class, new OF13SetQueueActionSerializer());\r
112         helper.registerSerializer(Group.class, new OF13GroupActionSerializer());\r
113         helper.registerSerializer(SetNwTtl.class, new OF13SetNwTtlActionSerializer());\r
114         helper.registerSerializer(DecNwTtl.class, new OF13DecNwTtlActionSerializer());\r
115         helper.registerSerializer(SetField.class, new OF13SetFieldActionSerializer());\r
116         helper.registerSerializer(PushPbb.class, new OF13PushPbbActionSerializer());\r
117         helper.registerSerializer(PopPbb.class, new OF13PopPbbActionSerializer());\r
118     }\r
119 }