0bbd6ab9532b07b575342b1b4173a7ac3b0997d4
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / MatchEntrySerializerRegistryHelper.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.util;\r
9 \r
10 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;\r
11 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
12 import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;\r
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField;\r
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmClassBase;\r
15 \r
16 /**\r
17  * @author michal.polkorab\r
18  * @param <OXM_CLASS> OXM class\r
19  */\r
20 public class MatchEntrySerializerRegistryHelper<OXM_CLASS extends OxmClassBase> {\r
21 \r
22     private short version;\r
23     private Class<OXM_CLASS> generalClass;\r
24     private SerializerRegistry serializerRegistry;\r
25 \r
26     /**\r
27      * @param version Openflow wire version\r
28      * @param generalClass\r
29      * @param serializerRegistry\r
30      */\r
31     public MatchEntrySerializerRegistryHelper(short version, Class<OXM_CLASS> generalClass,\r
32             SerializerRegistry serializerRegistry) {\r
33         this.version = version;\r
34         this.generalClass = generalClass;\r
35         this.serializerRegistry = serializerRegistry;\r
36     }\r
37 \r
38     /**\r
39      * Registers given serializer\r
40      * @param specificClass \r
41      * @param serializer \r
42      */\r
43     public <OXM_FIELD extends MatchField> void registerSerializer(\r
44             Class<OXM_FIELD> specificClass, OFGeneralSerializer serializer) {\r
45         MatchEntrySerializerKey<?, ?> key = new MatchEntrySerializerKey<>(version, generalClass, specificClass);\r
46         key.setExperimenterId(null);\r
47         serializerRegistry.registerSerializer(key, serializer);\r
48     }\r
49 }\r