-/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
-package org.opendaylight.openflowjava.protocol.impl.serialization;\r
-\r
-import io.netty.buffer.ByteBuf;\r
-\r
-import org.opendaylight.yangtools.yang.binding.DataObject;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-/**\r
- * @author michal.polkorab\r
- * @author timotej.kubas\r
- */\r
-public class SerializationFactory {\r
-\r
- private static final Logger LOGGER = LoggerFactory\r
- .getLogger(SerializationFactory.class);\r
- /**\r
- * Transforms POJO message into ByteBuf\r
- * @param version version used for encoding received message\r
- * @param out ByteBuf for storing and sending transformed message\r
- * @param message POJO message\r
- */\r
- public static <E extends DataObject> void messageToBuffer(short version, ByteBuf out, E message) {\r
- @SuppressWarnings("unchecked")\r
- MessageTypeKey<E> msgTypeKey = new MessageTypeKey<>(version, (Class<E>) message.getClass());\r
- OFSerializer<E> encoder = EncoderTable.getInstance().getEncoder(msgTypeKey);\r
- if (encoder != null) {\r
- encoder.messageToBuffer(version, out, message);\r
- } else {\r
- LOGGER.warn("No correct encoder found in EncoderTable for arguments: " + msgTypeKey.toString());\r
- }\r
- }\r
-}\r
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.openflowjava.protocol.impl.serialization;
+
+import io.netty.buffer.ByteBuf;
+
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
+import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
+/**
+ * @author michal.polkorab
+ * @author timotej.kubas
+ */
+public class SerializationFactory {
+
+ private SerializerRegistry registry;
+
+ /**
+ * Transforms POJO message into ByteBuf
+ * @param version version used for encoding received message
+ * @param out ByteBuf for storing and sending transformed message
+ * @param message POJO message
+ */
+ public void messageToBuffer(short version, ByteBuf out, DataObject message) {
+ OFSerializer<DataObject> serializer = registry.getSerializer(
+ new MessageTypeKey<>(version, message.getImplementedInterface()));
+ serializer.serialize(message, out);
+ }
+
+ /**
+ * @param serializerRegistry registry with serializers
+ */
+ public void setSerializerTable(SerializerRegistry serializerRegistry) {
+ this.registry = serializerRegistry;
+ }
+
+}