Bug 2245 Fixed Avoid cycle between java packages
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / DeserializerRegistry.java
index 665fa574c4e2c1d8917dd481fe29602dd83afb61..04291b8fa4e51b7181a3ccf8edc488d1d148b9e6 100644 (file)
@@ -1,34 +1,53 @@
-/*\r
- * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.openflowjava.protocol.api.extensibility;\r
-\r
-\r
-/**\r
- * @author michal.polkorab\r
- *\r
- */\r
-public interface DeserializerRegistry {\r
-\r
-    /**\r
-     * Initializes deserializers\r
-     */\r
-    public void init();\r
-\r
-    /**\r
-     * @param key used for deserializer lookup\r
-     * @return deserializer found\r
-     */\r
-    public <SERIALIZER_TYPE extends OFGeneralDeserializer>\r
-            SERIALIZER_TYPE getDeserializer(MessageCodeKey key);\r
-\r
-    /**\r
-     * @param key used to registry lookup\r
-     * @param deserializer deserializer instance\r
-     */\r
-    public void registerDeserializer(MessageCodeKey key, OFGeneralDeserializer deserializer);\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.api.extensibility;
+
+import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
+
+
+/**
+ * @author michal.polkorab
+ *
+ */
+public interface DeserializerRegistry {
+
+    /**
+     * Initializes deserializers
+     */
+    void init();
+
+    /**
+     * @param key used for deserializer lookup
+     * @return deserializer found
+     */
+    <T extends OFGeneralDeserializer>
+            T getDeserializer(MessageCodeKey key);
+
+    /**
+     * Registers deserializer.
+     * Throws IllegalStateException when there is
+     * a deserializer already registered under given key.
+     *
+     * If the deserializer implements {@link DeserializerRegistryInjector} interface,
+     * the deserializer is injected with DeserializerRegistry instance.
+     *
+     * @param key used for deserializer lookup
+     * @param deserializer deserializer instance
+     */
+    void registerDeserializer(MessageCodeKey key,
+            OFGeneralDeserializer deserializer);
+
+    /**
+     * Unregisters deserializer
+     * @param key used for deserializer lookup
+     * @param deserializer deserializer instance
+     * @return true if deserializer was removed,
+     *  false if no deserializer was found under specified key
+     */
+    boolean unregisterDeserializer(MessageCodeKey key);
+}