Javadoc update
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / DeserializationFactory.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.deserialization;\r
3 \r
4 import io.netty.buffer.ByteBuf;\r
5 \r
6 import org.opendaylight.yangtools.yang.binding.DataObject;\r
7 import org.slf4j.Logger;\r
8 import org.slf4j.LoggerFactory;\r
9 \r
10 /**\r
11  * @author michal.polkorab\r
12  * @author timotej.kubas\r
13  */\r
14 public abstract class DeserializationFactory {\r
15     \r
16     private static final Logger LOGGER = LoggerFactory\r
17             .getLogger(DeserializationFactory.class);\r
18 \r
19     /**\r
20      * Transforms ByteBuf into correct POJO message\r
21      * @param rawMessage \r
22      * @param version version decoded from OpenFlow protocol message\r
23      * @return correct POJO as DataObject\r
24      */\r
25     public static DataObject bufferToMessage(ByteBuf rawMessage, short version) {\r
26         DataObject dataObject = null;\r
27         short type = rawMessage.readUnsignedByte();\r
28         rawMessage.skipBytes(Short.SIZE / Byte.SIZE);\r
29 \r
30         MessageTypeCodeKey msgTypeCodeKey = new MessageTypeCodeKey(version, type);\r
31         OFDeserializer<?> decoder = DecoderTable.getInstance().getDecoder(msgTypeCodeKey);\r
32         if (decoder != null) {\r
33             dataObject = decoder.bufferToMessage(rawMessage, version);\r
34         } else {\r
35             LOGGER.warn("No correct decoder found in DecoderTable for arguments: " + msgTypeCodeKey.toString());\r
36         }\r
37         return dataObject;\r
38     }\r
39 }\r