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