Remove trailing whitespace
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / ErrorMessageFactory.java
index 4b18f2121c0da76ef306670aad05d10fb39b4a64..daae36346d58ea860967695a699cba89ede61775 100644 (file)
@@ -12,10 +12,9 @@ import io.netty.buffer.ByteBuf;
 
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
-import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdError;
+import org.opendaylight.openflowjava.util.ExperimenterDeserializerKeyFactory;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.BadActionCode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.BadInstructionCode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.BadMatchCode;
@@ -48,27 +47,28 @@ public class ErrorMessageFactory implements OFDeserializer<ErrorMessage>,
 
     @Override
     public ErrorMessage deserialize(ByteBuf rawMessage) {
+        int startIndex = rawMessage.readerIndex();
         ErrorMessageBuilder builder = new ErrorMessageBuilder();
         builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
         builder.setXid(rawMessage.readUnsignedInt());
         int type = rawMessage.readUnsignedShort();
         ErrorType errorType = ErrorType.forValue(type);
         if (ErrorType.EXPERIMENTER.equals(errorType)) {
-            builder.setType(errorType.getIntValue());
-            OFDeserializer<ExperimenterIdError> deserializer = registry.getDeserializer(new MessageCodeKey(
-                    EncodeConstants.OF13_VERSION_ID, EncodeConstants.EXPERIMENTER_VALUE, ErrorMessage.class));
-            ExperimenterIdError error = deserializer.deserialize(rawMessage);
-            builder.addAugmentation(ExperimenterIdError.class, error);
-        } else {
-            decodeType(builder, errorType, type);
-            decodeCode(rawMessage, builder, errorType);
-            if (rawMessage.readableBytes() > 0) {
-                builder.setData(rawMessage.readBytes(rawMessage.readableBytes()).array());
-            }
+            OFDeserializer<ErrorMessage> deserializer = registry.getDeserializer(
+                    ExperimenterDeserializerKeyFactory.createExperimenterErrorDeserializerKey(
+                            EncodeConstants.OF13_VERSION_ID, rawMessage.getUnsignedInt(
+                                    rawMessage.readerIndex() + EncodeConstants.SIZE_OF_SHORT_IN_BYTES)));
+            rawMessage.readerIndex(startIndex);
+            return deserializer.deserialize(rawMessage);
+        }
+        decodeType(builder, errorType, type);
+        decodeCode(rawMessage, builder, errorType);
+        if (rawMessage.readableBytes() > 0) {
+            builder.setData(rawMessage.readBytes(rawMessage.readableBytes()).array());
         }
         return builder.build();
     }
-    
+
     private static void decodeType(ErrorMessageBuilder builder, ErrorType type, int readValue) {
         if (type != null) {
             builder.setType(type.getIntValue());
@@ -232,12 +232,12 @@ public class ErrorMessageFactory implements OFDeserializer<ErrorMessage>,
             setUnknownCode(builder, code);
         }
     }
-    
+
     private static void setUnknownCode(ErrorMessageBuilder builder, int readValue) {
         builder.setCode(readValue);
         builder.setCodeString(UNKNOWN_CODE);
     }
-    
+
     private static void setCode(ErrorMessageBuilder builder, int code, String codeString) {
         builder.setCode(code);
         builder.setCodeString(codeString);