Extensibility refactoring 09/6309/1
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Tue, 22 Apr 2014 11:07:02 +0000 (13:07 +0200)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Tue, 22 Apr 2014 11:07:14 +0000 (13:07 +0200)
 - RegistryInjector renamed to SerializerRegistryInjector
 - EnhancedMessageTypeKey moved to api project to be visible outside library implementation
 - SerializerRegistryImpl - unified Exception message
 - MessageTypeKey - updated hashCode()
                  - also updated SerializationFactory key to .getImplementedInterface() instead of .getClass()

Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
19 files changed:
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/EnhancedMessageTypeKey.java [moved from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/EnhancedMessageTypeKey.java with 75% similarity]
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageTypeKey.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistryInjector.java [moved from openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/RegistryInjector.java with 90% similarity]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/DeserializationFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializationFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10StatsRequestInputFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java [deleted file]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13ActionsSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13InstructionsSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchEntriesRegistryHelper.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java

@@ -5,10 +5,8 @@
  * 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.impl.deserialization;\r
+package org.opendaylight.openflowjava.protocol.api.extensibility;\r
 \r
-import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
 \r
 /**\r
  * More specific key for {@link SerializerRegistry}\r
@@ -30,13 +28,6 @@ public class EnhancedMessageTypeKey<E, F> extends MessageTypeKey<E> {
         this.msgType2 = msgType2;\r
     }\r
 \r
-    /**\r
-     * @return more specific type\r
-     */\r
-    public Class<F> getMsgType2() {\r
-        return msgType2;\r
-    }\r
-\r
     @Override\r
     public boolean equals(Object obj) {\r
         if (this == obj)\r
@@ -50,7 +41,7 @@ public class EnhancedMessageTypeKey<E, F> extends MessageTypeKey<E> {
         if (msgType2 == null) {\r
             if (other.msgType2 != null)\r
                 return false;\r
-        } else if (!msgType2.equals(other.msgType2))\r
+        } else if (!msgType2.getName().equals(other.msgType2.getName()))\r
             return false;\r
         return true;\r
     }\r
index 65d3823dfaa924a2487e8c981332fa8eaf1a0c37..7885b7e17dadf5fcd16409f67314e4d0104b34fc 100644 (file)
@@ -30,20 +30,6 @@ public class MessageTypeKey<E> {
         this.msgVersion = msgVersion;
     }
     
-    /**
-     * @return msgVersion
-     */
-    public short getMsgVersion() {
-        return msgVersion;
-    }
-
-    /**
-     * @return the msgType
-     */
-    public Class<E> getMsgType() {
-        return msgType;
-    }
-
     @Override
     public String toString() {
         return "msgVersion: " + msgVersion + " msgType: " + msgType.getName();
@@ -53,7 +39,7 @@ public class MessageTypeKey<E> {
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + msgVersion;
+        result = prime * result + ((msgType == null) ? 0 : msgType.getName().hashCode());
         return result;
     }
 
@@ -69,7 +55,7 @@ public class MessageTypeKey<E> {
         if (msgType == null) {
             if (other.msgType != null)
                 return false;
-        } else if (!other.msgType.isAssignableFrom(msgType))
+        } else if (!other.msgType.getName().equals(msgType.getName()))
             return false;
         if (msgVersion != other.msgVersion)
             return false;
@@ -11,7 +11,7 @@ package org.opendaylight.openflowjava.protocol.api.extensibility;
  * Serializer registry injector\r
  * @author michal.polkorab\r
  */\r
-public interface RegistryInjector {\r
+public interface SerializerRegistryInjector {\r
 \r
     /**\r
      * Injects serializer registry\r
index 1d827c0f88186c5f292a48d4a562cf3d48feb311..afc01f621e55939a23fc1aa3a3cc815aa45b1b85 100644 (file)
@@ -33,7 +33,7 @@ public class DeserializationFactory {
      */
     public DeserializationFactory() {
         messageClassMap = new HashMap<>();
-        initTypeToClassMapping();
+        TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap);
     }
 
     /**
@@ -62,7 +62,4 @@ public class DeserializationFactory {
         this.registry = registry;
     }
 
-    private void initTypeToClassMapping() {
-        TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap);
-    }
 }
index d9ad3abc2ec79eb92e8a91d580b197fa604edd03..34f4fb19eaebd5e6de833eb8f60f4268915c27de 100644 (file)
@@ -31,7 +31,7 @@ public class SerializationFactory {
      */
     public void messageToBuffer(short version, ByteBuf out, DataObject message) {
         OFSerializer<DataObject> serializer = registry.getSerializer(
-                new MessageTypeKey<>(version, message.getClass()));
+                new MessageTypeKey<>(version, message.getImplementedInterface()));
         if (serializer != null) {
             serializer.serialize(message, out);
         }
index 9a9a1b0ce32171f36b539deca6e94cbb173991d8..b617284e01683a4722d9453a556487709c55e0fc 100644 (file)
@@ -13,9 +13,8 @@ import java.util.Map;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
-import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
 import org.opendaylight.openflowjava.protocol.impl.util.OF10ActionsSerializer;
 import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchSerializer;
@@ -66,11 +65,6 @@ public class SerializerRegistryImpl implements SerializerRegistry {
             MessageTypeKey<KEY_TYPE> msgTypeKey) {
         OFGeneralSerializer serializer = registry.get(msgTypeKey);
         if (serializer == null) {
-            if (msgTypeKey instanceof EnhancedMessageTypeKey) {
-                EnhancedMessageTypeKey<KEY_TYPE, ?> key =  (EnhancedMessageTypeKey<KEY_TYPE, ?>) msgTypeKey;
-                throw new NullPointerException("Serializer for key: " + key.toString()
-                        + " was not found");
-            }
             throw new NullPointerException("Serializer for key: " + msgTypeKey.toString()
                     + " was not found");
         }
@@ -83,8 +77,8 @@ public class SerializerRegistryImpl implements SerializerRegistry {
         if ((msgTypeKey == null) || (serializer == null)) {
             throw new NullPointerException("MessageTypeKey or Serializer is null");
         }
-        if (serializer instanceof RegistryInjector) {
-            ((RegistryInjector) serializer).injectSerializerRegistry(this);
+        if (serializer instanceof SerializerRegistryInjector) {
+            ((SerializerRegistryInjector) serializer).injectSerializerRegistry(this);
         }
         registry.put(msgTypeKey, serializer);
     }
index 683a301ce119388cd83ca2b08087c26d6dcdce54..ffb20862651327f9a33b5f5755acb01f877a83a2 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Map;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils;
@@ -30,7 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * @author timotej.kubas
  * @author michal.polkorab
  */
-public class FlowModInputMessageFactory implements OFSerializer<FlowModInput>, RegistryInjector {
+public class FlowModInputMessageFactory implements OFSerializer<FlowModInput>, SerializerRegistryInjector {
     private static final byte MESSAGE_TYPE = 14;
     private static final byte PADDING_IN_FLOW_MOD_MESSAGE = 2;
     private SerializerRegistry registry;
index 287ac2c0e2a9ce08bb7c91b0325be2bc3f667e88..75a6bdfcbc231eb8e727b898557a831fb958bd91 100644 (file)
@@ -14,7 +14,7 @@ import java.util.List;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils;
@@ -28,7 +28,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * @author timotej.kubas
  * @author michal.polkorab
  */
-public class GroupModInputMessageFactory implements OFSerializer<GroupModInput>, RegistryInjector {
+public class GroupModInputMessageFactory implements OFSerializer<GroupModInput>, SerializerRegistryInjector {
     private static final byte MESSAGE_TYPE = 15;
     private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1;
     private static final byte PADDING_IN_BUCKET = 4;
index caf857c4e4d322539ff549d9ca232fe58dedefc0..6edd6fa4b7266f19146fbf91e9e4355bf94869ec 100644 (file)
@@ -14,12 +14,12 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
-import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
@@ -69,7 +69,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * @author timotej.kubas
  * @author michal.polkorab
  */
-public class MultipartRequestInputFactory implements OFSerializer<MultipartRequestInput>, RegistryInjector {
+public class MultipartRequestInputFactory implements OFSerializer<MultipartRequestInput>, SerializerRegistryInjector {
     private static final byte MESSAGE_TYPE = 18;
     private static final byte PADDING_IN_MULTIPART_REQUEST_MESSAGE = 4;
     private static final byte TABLE_FEAT_HEADER_LENGTH = 4;
index d43104cf0013944fd7e43b5dc291a7fb39e2e993..ea37b0c116fc6d649f21fd4dad97fbbf2396fcac 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Map;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils;
@@ -29,7 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * Translates FlowMod messages
  * @author michal.polkorab
  */
-public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput>, RegistryInjector {
+public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput>, SerializerRegistryInjector {
 
     private static final byte MESSAGE_TYPE = 14;
     private SerializerRegistry registry;
index ad49758b519a6acd7a0d1eaa39f7cabe0add9a49..9bd6d733b3b056065a1bb9b76d43572c24570a49 100644 (file)
@@ -12,7 +12,7 @@ import io.netty.buffer.ByteBuf;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils;
@@ -24,7 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * Translates PacketOut messages
  * @author michal.polkorab
  */
-public class OF10PacketOutInputMessageFactory implements OFSerializer<PacketOutInput>, RegistryInjector {
+public class OF10PacketOutInputMessageFactory implements OFSerializer<PacketOutInput>, SerializerRegistryInjector {
 
     private static final byte MESSAGE_TYPE = 13;
     private SerializerRegistry registry;
index 24c876fa09ed96063ec517a14450555368ac8182..cb3eee8bf937860a994a82c96efbfbefc7980481 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Map;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
@@ -41,7 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * Translates StatsRequest messages
  * @author michal.polkorab
  */
-public class OF10StatsRequestInputFactory implements OFSerializer<MultipartRequestInput>, RegistryInjector {
+public class OF10StatsRequestInputFactory implements OFSerializer<MultipartRequestInput>, SerializerRegistryInjector {
 
     private static final byte MESSAGE_TYPE = 16;
     private static final byte FLOW_BODY_LENGTH = 44;
index 2b14b19d7332e1d226b80355c62a990b844d6f2e..2b2017c4cdfdec79d8cebd06cbd579004662a9ea 100644 (file)
@@ -12,7 +12,7 @@ import io.netty.buffer.ByteBuf;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.impl.util.CodingUtils;
@@ -25,7 +25,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  * @author michal.polkorab
  * @author timotej.kubas
  */
-public class PacketOutInputMessageFactory implements OFSerializer<PacketOutInput>, RegistryInjector {
+public class PacketOutInputMessageFactory implements OFSerializer<PacketOutInput>, SerializerRegistryInjector {
 
     /** Code type of PacketOut message */
     private static final byte MESSAGE_TYPE = 13;
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchIdsDeserializer.java
deleted file mode 100644 (file)
index db1687b..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*\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.impl.util;\r
-\r
-import io.netty.buffer.ByteBuf;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpOp;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSha;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSpa;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTha;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpTpa;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthDst;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthSrc;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Code;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Type;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Code;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Type;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPhyPort;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPort;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpDscp;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpEcn;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpProto;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Dst;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Dst;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Exthdr;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Flabel;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdSll;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTarget;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6NdTll;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Src;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Metadata;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsBos;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsLabel;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsTc;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm0Class;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.PbbIsid;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpDst;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.SctpSrc;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpDst;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpSrc;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TunnelId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpDst;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.UdpSrc;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanPcp;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.VlanVid;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntriesBuilder;\r
-\r
-/**\r
- * Encodes match ids (oxm_ids) needed in Multipart-TableFeatures messages\r
- * @author michal.polkorab\r
- */\r
-public abstract class MatchIdsDeserializer {\r
-\r
-    /** Decodes oxm ids\r
-     * @param in input ByteBuf\r
-     * @param matchLength match entries length\r
-     * @return list of match ids\r
-     */\r
-    public static List<MatchEntries> createOxmIds(ByteBuf in, int matchLength) {\r
-        List<MatchEntries> matchEntriesList = new ArrayList<>();\r
-        int currLength = 0;\r
-        while(currLength < matchLength) {\r
-            MatchEntriesBuilder matchEntriesBuilder = new MatchEntriesBuilder();\r
-            switch (in.readUnsignedShort()) {\r
-            case 0x0000:\r
-                        matchEntriesBuilder.setOxmClass(Nxm0Class.class);\r
-                        break;\r
-            case 0x0001:\r
-                        matchEntriesBuilder.setOxmClass(Nxm1Class.class);\r
-                        break;\r
-            case 0x8000:\r
-                        matchEntriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
-                        break;\r
-            case 0xFFFF:\r
-                        matchEntriesBuilder.setOxmClass(ExperimenterClass.class);\r
-                        break;\r
-            default:\r
-                        break;\r
-            }\r
-\r
-            int fieldAndMask = in.readUnsignedByte();\r
-            boolean hasMask = (fieldAndMask & 1) != 0;\r
-            matchEntriesBuilder.setHasMask(hasMask);\r
-            int matchField =  fieldAndMask >> 1;\r
-            in.skipBytes(EncodeConstants.SIZE_OF_BYTE_IN_BYTES);\r
-            currLength += EncodeConstants.SIZE_OF_SHORT_IN_BYTES +\r
-                    (2 * EncodeConstants.SIZE_OF_BYTE_IN_BYTES);\r
-\r
-            switch(matchField) {\r
-            case 0:\r
-                matchEntriesBuilder.setOxmMatchField(InPort.class);\r
-                break;\r
-            case 1:\r
-                matchEntriesBuilder.setOxmMatchField(InPhyPort.class);\r
-                break;\r
-            case 2:\r
-                matchEntriesBuilder.setOxmMatchField(Metadata.class);\r
-                break;\r
-            case 3:\r
-                matchEntriesBuilder.setOxmMatchField(EthDst.class);\r
-                break;\r
-            case 4:\r
-                matchEntriesBuilder.setOxmMatchField(EthSrc.class);\r
-                break;\r
-            case 5:\r
-                matchEntriesBuilder.setOxmMatchField(EthType.class);\r
-                break;\r
-            case 6:\r
-                matchEntriesBuilder.setOxmMatchField(VlanVid.class);\r
-                break;\r
-            case 7:\r
-                matchEntriesBuilder.setOxmMatchField(VlanPcp.class);\r
-                break;\r
-            case 8:\r
-                matchEntriesBuilder.setOxmMatchField(IpDscp.class);\r
-                break;\r
-            case 9:\r
-                matchEntriesBuilder.setOxmMatchField(IpEcn.class);\r
-                break;\r
-            case 10:\r
-                matchEntriesBuilder.setOxmMatchField(IpProto.class);\r
-                break;\r
-            case 11:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv4Src.class);\r
-                break;\r
-            case 12:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
-                break;\r
-            case 13:\r
-                matchEntriesBuilder.setOxmMatchField(TcpSrc.class);\r
-                break;\r
-            case 14:\r
-                matchEntriesBuilder.setOxmMatchField(TcpDst.class);\r
-                break;\r
-            case 15:\r
-                matchEntriesBuilder.setOxmMatchField(UdpSrc.class);\r
-                break;\r
-            case 16:\r
-                matchEntriesBuilder.setOxmMatchField(UdpDst.class);\r
-                break;\r
-            case 17:\r
-                matchEntriesBuilder.setOxmMatchField(SctpSrc.class);\r
-                break;\r
-            case 18:\r
-                matchEntriesBuilder.setOxmMatchField(SctpDst.class);\r
-                break;\r
-            case 19:\r
-                matchEntriesBuilder.setOxmMatchField(Icmpv4Type.class);\r
-                break;\r
-            case 20:\r
-                matchEntriesBuilder.setOxmMatchField(Icmpv4Code.class);\r
-                break;\r
-            case 21:\r
-                matchEntriesBuilder.setOxmMatchField(ArpOp.class);\r
-                break;\r
-            case 22:\r
-                matchEntriesBuilder.setOxmMatchField(ArpSpa.class);\r
-                break;\r
-            case 23:\r
-                matchEntriesBuilder.setOxmMatchField(ArpTpa.class);\r
-                break;\r
-            case 24:\r
-                matchEntriesBuilder.setOxmMatchField(ArpSha.class);\r
-                break;\r
-            case 25:\r
-                matchEntriesBuilder.setOxmMatchField(ArpTha.class);\r
-                break;\r
-            case 26:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6Src.class);\r
-                break;\r
-            case 27:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
-                break;\r
-            case 28:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6Flabel.class);\r
-                break;\r
-            case 29:\r
-                matchEntriesBuilder.setOxmMatchField(Icmpv6Type.class);\r
-                break;\r
-            case 30:\r
-                matchEntriesBuilder.setOxmMatchField(Icmpv6Code.class);\r
-                break;\r
-            case 31:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6NdTarget.class);\r
-                break;\r
-            case 32:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6NdSll.class);\r
-                break;\r
-            case 33:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6NdTll.class);\r
-                break;\r
-            case 34:\r
-                matchEntriesBuilder.setOxmMatchField(MplsLabel.class);\r
-                break;\r
-            case 35:\r
-                matchEntriesBuilder.setOxmMatchField(MplsTc.class);\r
-                break;\r
-            case 36:\r
-                matchEntriesBuilder.setOxmMatchField(MplsBos.class);\r
-                break;\r
-            case 37:\r
-                matchEntriesBuilder.setOxmMatchField(PbbIsid.class);\r
-                break;\r
-            case 38:\r
-                matchEntriesBuilder.setOxmMatchField(TunnelId.class);\r
-                break;\r
-            case 39:\r
-                matchEntriesBuilder.setOxmMatchField(Ipv6Exthdr.class);\r
-                break;\r
-            default:\r
-                break;\r
-            }\r
-          matchEntriesList.add(matchEntriesBuilder.build());\r
-        }\r
-        return matchEntriesList;\r
-    }\r
-}\r
index 3ec867d737fff41ae1c6538867f6431d87e27590..2e1d2328e0dfad3c33626cc1722205ed135f6288 100644 (file)
@@ -12,7 +12,7 @@ import io.netty.buffer.ByteBuf;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction;
@@ -42,7 +42,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
  * Serializes ofp_action (OpenFlow v1.0) structures
  * @author michal.polkorab
  */
-public class OF10ActionsSerializer implements OFSerializer<Action>, RegistryInjector {
+public class OF10ActionsSerializer implements OFSerializer<Action>, SerializerRegistryInjector {
     
     private static final byte OUTPUT_CODE = 0;
     private static final byte SET_VLAN_VID_CODE = 1;
index e1f4ec6f937cfca13d5fee6c1c109a23dc4c9141..2d4431ed7dbbefecaf8f25484d95c7135aac0f63 100644 (file)
@@ -10,12 +10,12 @@ package org.opendaylight.openflowjava.protocol.impl.util;
 
 import io.netty.buffer.ByteBuf;
 
+import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
-import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
@@ -51,7 +51,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.
  * @author timotej.kubas
  */
 public class OF13ActionsSerializer implements OFSerializer<Action>,
-        HeaderSerializer<Action>, RegistryInjector {
+        HeaderSerializer<Action>, SerializerRegistryInjector {
 
     private static final byte OUTPUT_CODE = 0;
     private static final byte COPY_TTL_OUT_CODE = 11;
index 84beb0b0540a6c71e6a7b5c7d5e7d0b287646c90..d8dc6935efb83927fd4f4e8949048f97e79c1a9d 100644 (file)
@@ -15,7 +15,7 @@ import java.util.List;
 import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ActionsInstruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterInstruction;
@@ -39,7 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
  * @author timotej.kubas
  */
 public class OF13InstructionsSerializer implements OFSerializer<Instruction>,
-        HeaderSerializer<Instruction>, RegistryInjector {
+        HeaderSerializer<Instruction>, SerializerRegistryInjector {
 
     private static final byte GOTO_TABLE_TYPE = 1;
     private static final byte WRITE_METADATA_TYPE = 2;
index 3a5b6a7ffc770c75e9cfe579dbf634263a1f2b4f..24d4c812dc162c64f52ebc0dc7db77d71486de17 100644 (file)
@@ -7,9 +7,9 @@
  */\r
 package org.opendaylight.openflowjava.protocol.impl.util;\r
 \r
+import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
-import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey;\r
 \r
 /**\r
  * @author michal.polkorab\r
index a90e77bcc9ff529aeded33710d6f4a717fc7ca7e..7c3d61c042f622507bc73e0e6d8c755e6f1fbb38 100644 (file)
@@ -12,10 +12,10 @@ import io.netty.buffer.ByteBuf;
 
 import java.util.List;
 
+import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.RegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
-import org.opendaylight.openflowjava.protocol.impl.deserialization.EnhancedMessageTypeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.StandardMatchType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match;
@@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory;
  * @author michal.polkorab
  * @author timotej.kubas
  */
-public class OF13MatchSerializer implements OFSerializer<Match>, RegistryInjector {
+public class OF13MatchSerializer implements OFSerializer<Match>, SerializerRegistryInjector {
     private static final Logger LOGGER = LoggerFactory.getLogger(OF13MatchSerializer.class);
     private static final byte STANDARD_MATCH_TYPE_CODE = 0;
     private static final byte OXM_MATCH_TYPE_CODE = 1;