c059014078a498792163d36047c4b1c46e849368
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / SerializerRegistry.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.api.extensibility;\r
9 \r
10 \r
11 \r
12 \r
13 /**\r
14  * Stores and handles serializers \r
15  * @author michal.polkorab\r
16  *\r
17  */\r
18 public interface SerializerRegistry {\r
19 \r
20     /**\r
21      * Serializer registry provisioning\r
22      */\r
23     public void init();\r
24 \r
25     /**\r
26      * @param msgTypeKey lookup key\r
27      * @return serializer or NullPointerException if no serializer was found\r
28      */\r
29     <KEYTYPE, SERIALIZERTYPE extends OFGeneralSerializer> SERIALIZERTYPE \r
30         getSerializer(MessageTypeKey<KEYTYPE> msgTypeKey);\r
31 \r
32     /**\r
33      * Registers serializer\r
34      * Throws IllegalStateException when there is\r
35      * a serializer already registered under given key.\r
36      * \r
37      * If the serializer implements {@link SerializerRegistryInjector} interface,\r
38      * the serializer is injected with SerializerRegistry instance.\r
39      * \r
40      * @param key used for serializer lookup\r
41      * @param serializer serializer implementation\r
42      */\r
43     <KEYTYPE> void registerSerializer(MessageTypeKey<KEYTYPE> key,\r
44             OFGeneralSerializer serializer);\r
45 \r
46     /**\r
47      * Unregisters serializer\r
48      * @param key used for serializer lookup\r
49      * @param serializer serializer implementation\r
50      * @return true if serializer was removed,\r
51      *  false if no serializer was found under specified key\r
52      */\r
53     <KEYTYPE> boolean unregisterSerializer(MessageTypeKey<KEYTYPE> key);\r
54 }\r