5aaa458e2de75de597d60c8b7e788dafb1eb0dd8
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / DefaultExperimenterInitializer.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 \r
9 package org.opendaylight.openflowjava.protocol.impl.serialization;\r
10 \r
11 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
12 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF10StatsRequestVendorSerializer;\r
13 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF10VendorInputMessageFactory;\r
14 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF13ExperimenterActionSerializer;\r
15 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF13ExperimenterInputMessageFactory;\r
16 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF13ExperimenterInstructionSerializer;\r
17 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF13MeterBandExperimenterSerializer;\r
18 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF13MultipartExperimenterSerializer;\r
19 import org.opendaylight.openflowjava.protocol.impl.serialization.experimenters.OF13TableFeatExpSerializer;\r
20 import org.opendaylight.openflowjava.protocol.impl.util.CommonMessageRegistryHelper;\r
21 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
22 import org.opendaylight.openflowjava.protocol.impl.util.EnhancedKeyRegistryHelper;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Experimenter;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.experimenter._case.MeterBandExperimenter;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.experimenter._case.MultipartRequestExperimenter;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;\r
30 \r
31 /**\r
32  * @author michal.polkorab\r
33  *\r
34  */\r
35 public class DefaultExperimenterInitializer {\r
36 \r
37     /**\r
38      * Registers message serializers into provided registry\r
39      * @param serializerRegistry registry to be initialized with message serializers\r
40      */\r
41     public static void registerDefaultExperimenterSerializers(SerializerRegistry serializerRegistry) {\r
42         // register OF v1.0 default experimenter serializers\r
43         short version = EncodeConstants.OF10_VERSION_ID;\r
44         CommonMessageRegistryHelper helper = new CommonMessageRegistryHelper(version, serializerRegistry);\r
45         helper.registerSerializer(ExperimenterInput.class, new OF10VendorInputMessageFactory());\r
46         EnhancedKeyRegistryHelper<Action> actionHelper = new EnhancedKeyRegistryHelper<>(\r
47                 EncodeConstants.OF10_VERSION_ID, Action.class, serializerRegistry);\r
48         actionHelper.registerSerializer(Experimenter.class, new OF13ExperimenterActionSerializer());\r
49         helper.registerSerializer(MultipartRequestExperimenter.class, new OF10StatsRequestVendorSerializer());\r
50         // register OF v1.3 default experimenter serializers\r
51         version = EncodeConstants.OF13_VERSION_ID;\r
52         helper = new CommonMessageRegistryHelper(version, serializerRegistry);\r
53         helper.registerSerializer(ExperimenterInput.class, new OF13ExperimenterInputMessageFactory());\r
54         helper.registerSerializer(MultipartRequestExperimenter.class, new OF13MultipartExperimenterSerializer());\r
55         helper.registerSerializer(TableFeatureProperties.class, new OF13TableFeatExpSerializer());\r
56         helper.registerSerializer(MeterBandExperimenter.class, new OF13MeterBandExperimenterSerializer());\r
57         actionHelper = new EnhancedKeyRegistryHelper<>(\r
58                 EncodeConstants.OF13_VERSION_ID, Action.class, serializerRegistry);\r
59         actionHelper.registerSerializer(Experimenter.class, new OF13ExperimenterActionSerializer());\r
60         EnhancedKeyRegistryHelper<Instruction> insHelper = new EnhancedKeyRegistryHelper<>(\r
61                 EncodeConstants.OF13_VERSION_ID, Instruction.class, serializerRegistry);\r
62         insHelper.registerSerializer(org.opendaylight.yang.gen.v1.urn.opendaylight\r
63                 .openflow.common.instruction.rev130731.Experimenter.class,\r
64                 new OF13ExperimenterInstructionSerializer());\r
65     }\r
66 }\r