Updated extension registration keys
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / ListSerializer.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.util;\r
10 \r
11 import io.netty.buffer.ByteBuf;\r
12 \r
13 import java.util.List;\r
14 \r
15 import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;\r
16 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;\r
17 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
18 import org.opendaylight.yangtools.yang.binding.DataObject;\r
19 \r
20 /**\r
21  * Serializes list items and their headers\r
22  * @author michal.polkorab\r
23  * @param <E> \r
24  */\r
25 public abstract class ListSerializer {\r
26 \r
27     /**\r
28      * Serializes item list\r
29      * @param list list of items to be serialized\r
30      * @param keyMaker creates key for registry lookup\r
31      * @param registry stores serializers\r
32      * @param outBuffer output buffer\r
33      */\r
34     public static <E extends DataObject> void serializeList(List<E> list,\r
35             TypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) {\r
36         if (list != null) {\r
37             for (E item : list) {\r
38                 OFSerializer<E> serializer = registry.getSerializer(keyMaker.make(item));\r
39                 serializer.serialize(item, outBuffer);\r
40             }\r
41         }\r
42     }\r
43 \r
44     /**\r
45      * Serializes headers of items in list\r
46      * @param list list of items to be serialized\r
47      * @param keyMaker creates key for registry lookup\r
48      * @param registry stores serializers\r
49      * @param outBuffer output buffer\r
50      */\r
51     public static <E extends DataObject> void serializeHeaderList(List<E> list,\r
52             TypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) {\r
53         if (list != null) {\r
54             for (E item : list) {\r
55                 HeaderSerializer<E> serializer = registry.getSerializer(keyMaker.make(item));\r
56                 serializer.serializeHeader(item, outBuffer);\r
57             }\r
58         }\r
59     }\r
60 \r
61 }\r