08b9bc542e2b99a19c8ede76ce9ed7b6437fea6a
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / MessageFactoryInitializer.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.experimenter.BundleAddMessageFactory;
13 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenter.BundleControlFactory;
14 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.BarrierInputMessageFactory;
15 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EchoInputMessageFactory;
16 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.EchoReplyInputMessageFactory;
17 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.ExperimenterInputMessageFactory;
18 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.FlowModInputMessageFactory;
19 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetAsyncRequestMessageFactory;
20 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetConfigInputMessageFactory;
21 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetFeaturesInputMessageFactory;
22 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GetQueueConfigInputMessageFactory;
23 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.GroupModInputMessageFactory;
24 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.HelloInputMessageFactory;
25 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.MeterModInputMessageFactory;
26 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.MultipartRequestInputFactory;
27 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10BarrierInputMessageFactory;
28 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10FlowModInputMessageFactory;
29 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10HelloInputMessageFactory;
30 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10PacketOutInputMessageFactory;
31 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10PortModInputMessageFactory;
32 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10QueueGetConfigInputMessageFactory;
33 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10StatsRequestInputFactory;
34 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.PacketOutInputMessageFactory;
35 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.PortModInputMessageFactory;
36 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.RoleRequestInputMessageFactory;
37 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.SetAsyncInputMessageFactory;
38 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.SetConfigMessageFactory;
39 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.TableModInputMessageFactory;
40 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.VendorInputMessageFactory;
41 import org.opendaylight.openflowjava.protocol.impl.util.CommonMessageRegistryHelper;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.experimenter.input.experimenter.data.of.choice.bundle.add.message.message.FlowModCase;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.experimenter.input.experimenter.data.of.choice.bundle.add.message.message.GroupModCase;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.approved.extensions.rev160802.experimenter.input.experimenter.data.of.choice.bundle.add.message.message.PortModCase;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.BarrierInput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoInput;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.EchoReplyInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowModInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetAsyncInput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetConfigInput;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesInput;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetQueueConfigInput;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.RoleRequestInput;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetAsyncInput;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.SetConfigInput;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.TableModInput;
64
65 /**
66  * Util class for init registration of serializers.
67  * @author michal.polkorab
68  */
69 public final class MessageFactoryInitializer {
70
71     private MessageFactoryInitializer() {
72         throw new UnsupportedOperationException("Utility class shouldn't be instantiated");
73     }
74
75     /**
76      * Registers message serializers into provided registry.
77      * @param serializerRegistry registry to be initialized with message serializers
78      */
79     public static void registerMessageSerializers(SerializerRegistry serializerRegistry) {
80         CommonMessageRegistryHelper registryHelper;
81
82         // register OF v1.0 message serializers
83         registryHelper = new CommonMessageRegistryHelper(EncodeConstants.OF10_VERSION_ID, serializerRegistry);
84         registryHelper.registerSerializer(BarrierInput.class, new OF10BarrierInputMessageFactory());
85         registryHelper.registerSerializer(EchoInput.class, new EchoInputMessageFactory());
86         registryHelper.registerSerializer(EchoReplyInput.class, new EchoReplyInputMessageFactory());
87         registryHelper.registerSerializer(ExperimenterInput.class, new VendorInputMessageFactory());
88         registryHelper.registerSerializer(FlowModInput.class, new OF10FlowModInputMessageFactory());
89         registryHelper.registerSerializer(GetConfigInput.class, new GetConfigInputMessageFactory());
90         registryHelper.registerSerializer(GetFeaturesInput.class, new GetFeaturesInputMessageFactory());
91         registryHelper.registerSerializer(GetQueueConfigInput.class, new OF10QueueGetConfigInputMessageFactory());
92         registryHelper.registerSerializer(HelloInput.class, new OF10HelloInputMessageFactory());
93         registryHelper.registerSerializer(MultipartRequestInput.class, new OF10StatsRequestInputFactory());
94         registryHelper.registerSerializer(PacketOutInput.class, new OF10PacketOutInputMessageFactory());
95         registryHelper.registerSerializer(PortModInput.class, new OF10PortModInputMessageFactory());
96         registryHelper.registerSerializer(SetConfigInput.class, new SetConfigMessageFactory());
97
98         // register OF v1.3 message serializers
99         registryHelper = new CommonMessageRegistryHelper(EncodeConstants.OF13_VERSION_ID, serializerRegistry);
100         registryHelper.registerSerializer(BarrierInput.class, new BarrierInputMessageFactory());
101         registryHelper.registerSerializer(EchoInput.class, new EchoInputMessageFactory());
102         registryHelper.registerSerializer(EchoReplyInput.class, new EchoReplyInputMessageFactory());
103         registryHelper.registerSerializer(ExperimenterInput.class, new ExperimenterInputMessageFactory());
104         registryHelper.registerSerializer(FlowModInput.class, new FlowModInputMessageFactory());
105         registryHelper.registerSerializer(GetAsyncInput.class, new GetAsyncRequestMessageFactory());
106         registryHelper.registerSerializer(GetConfigInput.class, new GetConfigInputMessageFactory());
107         registryHelper.registerSerializer(GetFeaturesInput.class, new GetFeaturesInputMessageFactory());
108         registryHelper.registerSerializer(GetQueueConfigInput.class, new GetQueueConfigInputMessageFactory());
109         registryHelper.registerSerializer(GroupModInput.class, new GroupModInputMessageFactory());
110         registryHelper.registerSerializer(HelloInput.class, new HelloInputMessageFactory());
111         registryHelper.registerSerializer(MeterModInput.class, new MeterModInputMessageFactory());
112         registryHelper.registerSerializer(MultipartRequestInput.class, new MultipartRequestInputFactory());
113         registryHelper.registerSerializer(PacketOutInput.class, new PacketOutInputMessageFactory());
114         registryHelper.registerSerializer(PortModInput.class, new PortModInputMessageFactory());
115         registryHelper.registerSerializer(RoleRequestInput.class, new RoleRequestInputMessageFactory());
116         registryHelper.registerSerializer(SetAsyncInput.class, new SetAsyncInputMessageFactory());
117         registryHelper.registerSerializer(SetConfigInput.class, new SetConfigMessageFactory());
118         registryHelper.registerSerializer(TableModInput.class, new TableModInputMessageFactory());
119
120         // register ONF approved experimenter serializers
121         registryHelper.registerExperimenterSerializer(EncodeConstants.ONF_EXPERIMENTER_ID,
122                 EncodeConstants.ONF_ET_BUNDLE_CONTROL, new BundleControlFactory());
123         registryHelper.registerExperimenterSerializer(EncodeConstants.ONF_EXPERIMENTER_ID,
124                 EncodeConstants.ONF_ET_BUNDLE_ADD_MESSAGE, new BundleAddMessageFactory());
125
126         // register serializers for inner messages of BundleAddMessage
127         registryHelper.registerSerializer(FlowModCase.class, new FlowModInputMessageFactory());
128         registryHelper.registerSerializer(GroupModCase.class, new GroupModInputMessageFactory());
129         registryHelper.registerSerializer(PortModCase.class, new PortModInputMessageFactory());
130     }
131 }