Bug 2756 - Action model update
[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.rev150203.action.grouping.action.choice.CopyTtlInCase;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlOutCase;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecMplsTtlCase;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecNwTtlCase;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.EnqueueCase;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCase;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCase;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopMplsCase;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopPbbCase;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushMplsCase;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCase;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCase;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlDstCase;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlSrcCase;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetFieldCase;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCase;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCase;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwSrcCase;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTosCase;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTtlCase;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCase;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpDstCase;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpSrcCase;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanPcpCase;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanVidCase;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.StripVlanCase;
68 //import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Group;
69
70 /**
71  * Initializes serializer registry with action serializers
72  * @author michal.polkorab
73  */
74 public final class ActionsInitializer {
75
76     private ActionsInitializer() {
77         throw new UnsupportedOperationException("Utility class shouldn't be instantiated");
78     }
79
80     /**
81      * Registers action serializers into provided registry
82      * @param serializerRegistry registry to be initialized with action serializers
83      */
84     public static void registerActionSerializers(SerializerRegistry serializerRegistry) {
85         // register OF v1.0 action serializers
86         ActionSerializerRegistryHelper helper = new ActionSerializerRegistryHelper(
87                 EncodeConstants.OF10_VERSION_ID, serializerRegistry);
88         helper.registerSerializer(OutputActionCase.class, new OF10OutputActionSerializer());
89         helper.registerSerializer(SetVlanVidCase.class, new OF10SetVlanVidActionSerializer());
90         helper.registerSerializer(SetVlanPcpCase.class, new OF10SetVlanPcpActionSerializer());
91         helper.registerSerializer(StripVlanCase.class, new OF10StripVlanActionSerializer());
92         helper.registerSerializer(SetDlSrcCase.class, new OF10SetDlSrcActionSerializer());
93         helper.registerSerializer(SetDlDstCase.class, new OF10SetDlDstActionSerializer());
94         helper.registerSerializer(SetNwSrcCase.class, new OF10SetNwSrcActionSerializer());
95         helper.registerSerializer(SetNwDstCase.class, new OF10SetNwDstActionSerializer());
96         helper.registerSerializer(SetNwTosCase.class, new OF10SetNwTosActionSerializer());
97         helper.registerSerializer(SetTpSrcCase.class, new OF10SetTpSrcActionSerializer());
98         helper.registerSerializer(SetTpDstCase.class, new OF10SetTpDstActionSerializer());
99         helper.registerSerializer(EnqueueCase.class, new OF10EnqueueActionSerializer());
100         // register OF v1.0 action serializers
101         helper = new ActionSerializerRegistryHelper(
102                 EncodeConstants.OF13_VERSION_ID, serializerRegistry);
103         helper.registerSerializer(OutputActionCase.class, new OF13OutputActionSerializer());
104         helper.registerSerializer(CopyTtlOutCase.class, new OF13CopyTtlOutActionSerializer());
105         helper.registerSerializer(CopyTtlInCase.class, new OF13CopyTtlInActionSerializer());
106         helper.registerSerializer(SetMplsTtlCase.class, new OF13SetMplsTtlActionSerializer());
107         helper.registerSerializer(DecMplsTtlCase.class, new OF13DecMplsTtlActionSerializer());
108         helper.registerSerializer(PushVlanCase.class, new OF13PushVlanActionSerializer());
109         helper.registerSerializer(PopVlanCase.class, new OF13PopVlanActionSerializer());
110         helper.registerSerializer(PushMplsCase.class, new OF13PushMplsActionSerializer());
111         helper.registerSerializer(PopMplsCase.class, new OF13PopMplsActionSerializer());
112         helper.registerSerializer(SetQueueCase.class, new OF13SetQueueActionSerializer());
113         helper.registerSerializer(GroupCase.class, new OF13GroupActionSerializer());
114         helper.registerSerializer(SetNwTtlCase.class, new OF13SetNwTtlActionSerializer());
115         helper.registerSerializer(DecNwTtlCase.class, new OF13DecNwTtlActionSerializer());
116         helper.registerSerializer(SetFieldCase.class, new OF13SetFieldActionSerializer());
117         helper.registerSerializer(PushPbbCase.class, new OF13PushPbbActionSerializer());
118         helper.registerSerializer(PopPbbCase.class, new OF13PopPbbActionSerializer());
119     }
120 }