Remove trailing whitespace
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / OF10ErrorMessageFactory.java
index 910070e38a0c105283be3e2b37ffaccd255006fa..fb19113ed441413fadee39d82ba96e3dd0521e6d 100644 (file)
-/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
-package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;\r
-\r
-import io.netty.buffer.ByteBuf;\r
-\r
-import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.BadActionCodeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.BadRequestCodeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ErrorTypeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFailedCodeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloFailedCodeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortModFailedCodeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.QueueOpFailedCodeV10;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;\r
-\r
-/**\r
- * Translates Error messages (OpenFlow v1.0)\r
- * @author michal.polkorab\r
- */\r
-public class OF10ErrorMessageFactory implements OFDeserializer<ErrorMessage> {\r
-\r
-    private static final String UNKNOWN_TYPE = "UNKNOWN_TYPE";\r
-    private static final String UNKNOWN_CODE = "UNKNOWN_CODE";\r
-    private static final int NO_CORRECT_ENUM_FOUND_VALUE = -1;\r
-    \r
-    private static OF10ErrorMessageFactory instance;\r
-    \r
-    private OF10ErrorMessageFactory() {\r
-        // do nothing, just singleton\r
-    }\r
-    \r
-    /**\r
-     * @return singleton factory\r
-     */\r
-    public static synchronized OF10ErrorMessageFactory getInstance() {\r
-        if (instance == null) {\r
-            instance = new OF10ErrorMessageFactory();\r
-        }\r
-        return instance;\r
-    }\r
-    \r
-    @Override\r
-    public ErrorMessage bufferToMessage(ByteBuf rawMessage, short version) {\r
-        ErrorMessageBuilder builder = new ErrorMessageBuilder();\r
-        builder.setVersion(version);\r
-        builder.setXid(rawMessage.readUnsignedInt());\r
-        ErrorTypeV10 type = ErrorTypeV10.forValue(rawMessage.readUnsignedShort());\r
-        decodeType(builder, type);\r
-        decodeCode(rawMessage, builder, type);\r
-        if (rawMessage.readableBytes() > 0) {\r
-            builder.setData(rawMessage.readBytes(rawMessage.readableBytes()).array());\r
-        }\r
-        return builder.build();\r
-    }\r
-\r
-    private static void decodeCode(ByteBuf rawMessage, ErrorMessageBuilder builder,\r
-            ErrorTypeV10 type) {\r
-        switch (type) {\r
-        case HELLOFAILED:\r
-        {\r
-            HelloFailedCodeV10 code = HelloFailedCodeV10.forValue(rawMessage.readUnsignedShort());\r
-            if (code != null) {\r
-                builder.setCode(code.getIntValue());\r
-                builder.setCodeString(code.name());\r
-            }\r
-            break;\r
-        }\r
-        case BADREQUEST:\r
-        {\r
-            BadRequestCodeV10 code = BadRequestCodeV10.forValue(rawMessage.readUnsignedShort());\r
-            if (code != null) {\r
-                builder.setCode(code.getIntValue());\r
-                builder.setCodeString(code.name());\r
-            }\r
-            break;\r
-        }\r
-        case BADACTION:\r
-        {\r
-            BadActionCodeV10 code = BadActionCodeV10.forValue(rawMessage.readUnsignedShort());\r
-            if (code != null) {\r
-                builder.setCode(code.getIntValue());\r
-                builder.setCodeString(code.name());\r
-            }\r
-            break;\r
-        }\r
-        case FLOWMODFAILED:\r
-        {\r
-            FlowModFailedCodeV10 code = FlowModFailedCodeV10.forValue(rawMessage.readUnsignedShort());\r
-            if (code != null) {\r
-                builder.setCode(code.getIntValue());\r
-                builder.setCodeString(code.name());\r
-            }\r
-            break;\r
-        }\r
-        case PORTMODFAILED:\r
-        {\r
-            PortModFailedCodeV10 code = PortModFailedCodeV10.forValue(rawMessage.readUnsignedShort());\r
-            if (code != null) {\r
-                builder.setCode(code.getIntValue());\r
-                builder.setCodeString(code.name());\r
-            }\r
-            break;\r
-        }\r
-        case QUEUEOPFAILED:\r
-        {\r
-            QueueOpFailedCodeV10 code = QueueOpFailedCodeV10.forValue(rawMessage.readUnsignedShort());\r
-            if (code != null) {\r
-                builder.setCode(code.getIntValue());\r
-                builder.setCodeString(code.name());\r
-            }\r
-            break;\r
-        }\r
-        default:\r
-            builder.setCode(NO_CORRECT_ENUM_FOUND_VALUE);\r
-            builder.setCodeString(UNKNOWN_CODE);\r
-            break;\r
-        }\r
-    }\r
-\r
-    private static void decodeType(ErrorMessageBuilder builder, ErrorTypeV10 type) {\r
-        if (type != null) {\r
-            builder.setType(NO_CORRECT_ENUM_FOUND_VALUE);\r
-            builder.setTypeString(type.name());\r
-        } else {\r
-            builder.setType(NO_CORRECT_ENUM_FOUND_VALUE);\r
-            builder.setTypeString(UNKNOWN_TYPE);\r
-        }\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.deserialization.factories;
+
+import io.netty.buffer.ByteBuf;
+
+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.common.types.rev130731.BadActionCodeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.BadRequestCodeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ErrorTypeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFailedCodeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloFailedCodeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortModFailedCodeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.QueueOpFailedCodeV10;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessageBuilder;
+
+/**
+ * Translates Error messages (OpenFlow v1.0)
+ * @author michal.polkorab
+ */
+public class OF10ErrorMessageFactory implements OFDeserializer<ErrorMessage> {
+
+    private static final String UNKNOWN_TYPE = "UNKNOWN_TYPE";
+    private static final String UNKNOWN_CODE = "UNKNOWN_CODE";
+
+    @Override
+    public ErrorMessage deserialize(ByteBuf rawMessage) {
+        ErrorMessageBuilder builder = new ErrorMessageBuilder();
+        builder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
+        builder.setXid(rawMessage.readUnsignedInt());
+        int type = rawMessage.readUnsignedShort();
+        ErrorTypeV10 errorType = ErrorTypeV10.forValue(type);
+        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, ErrorTypeV10 type, int readValue) {
+        if (type != null) {
+            builder.setType(type.getIntValue());
+            builder.setTypeString(type.name());
+        } else {
+            builder.setType(readValue);
+            builder.setTypeString(UNKNOWN_TYPE);
+        }
+    }
+
+    private static void decodeCode(ByteBuf rawMessage, ErrorMessageBuilder builder,
+            ErrorTypeV10 type) {
+        int code = rawMessage.readUnsignedShort();
+       if (type != null) {
+               switch (type) {
+               case HELLOFAILED:
+               {
+                       HelloFailedCodeV10 errorCode = HelloFailedCodeV10.forValue(code);
+                       if (errorCode != null) {
+                               setCode(builder, errorCode.getIntValue(), errorCode.name());
+                       } else {
+                               setUnknownCode(builder, code);
+                       }
+                       break;
+               }
+               case BADREQUEST:
+               {
+                       BadRequestCodeV10 errorCode = BadRequestCodeV10.forValue(code);
+                       if (errorCode != null) {
+                               setCode(builder, errorCode.getIntValue(), errorCode.name());
+                       } else {
+                               setUnknownCode(builder, code);
+                       }
+                       break;
+               }
+               case BADACTION:
+               {
+                       BadActionCodeV10 errorCode = BadActionCodeV10.forValue(code);
+                       if (errorCode != null) {
+                               setCode(builder, errorCode.getIntValue(), errorCode.name());
+                       } else {
+                               setUnknownCode(builder, code);
+                       }
+                       break;
+               }
+               case FLOWMODFAILED:
+               {
+                       FlowModFailedCodeV10 errorCode = FlowModFailedCodeV10.forValue(code);
+                       if (errorCode != null) {
+                               setCode(builder, errorCode.getIntValue(), errorCode.name());
+                       } else {
+                               setUnknownCode(builder, code);
+                       }
+                       break;
+               }
+               case PORTMODFAILED:
+               {
+                       PortModFailedCodeV10 errorCode = PortModFailedCodeV10.forValue(code);
+                       if (errorCode != null) {
+                               setCode(builder, errorCode.getIntValue(), errorCode.name());
+                       } else {
+                               setUnknownCode(builder, code);
+                       }
+                       break;
+               }
+               case QUEUEOPFAILED:
+               {
+                       QueueOpFailedCodeV10 errorCode = QueueOpFailedCodeV10.forValue(code);
+                       if (errorCode != null) {
+                               setCode(builder, errorCode.getIntValue(), errorCode.name());
+                       } else {
+                               setUnknownCode(builder, code);
+                       }
+                       break;
+               }
+               default:
+                       setUnknownCode(builder, code);
+                       break;
+               }
+       } else {
+               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);
+    }
+
+}