X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflow-protocol-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowjava%2Fprotocol%2Fimpl%2Fdeserialization%2Ffactories%2FOF10ErrorMessageFactory.java;h=e9e37284e9c66c16cadc05e5230280b06411aace;hb=d9bfb084e625240a4d078975169a6a267c9fd3a1;hp=f7fc25df0edfa55594594b850e33aff08ed4c659;hpb=608331f22077157e3d006e336313ed6323a91e56;p=openflowjava.git diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10ErrorMessageFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10ErrorMessageFactory.java index f7fc25df..e9e37284 100644 --- a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10ErrorMessageFactory.java +++ b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/OF10ErrorMessageFactory.java @@ -20,7 +20,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 */ public class OF10ErrorMessageFactory implements OFDeserializer { -private static OF10ErrorMessageFactory instance; + private static final String UNKNOWN_TYPE = "UNKNOWN_TYPE"; + private static final String UNKNOWN_CODE = "UNKNOWN_CODE"; + + private static OF10ErrorMessageFactory instance; private OF10ErrorMessageFactory() { // do nothing, just singleton @@ -41,78 +44,108 @@ private static OF10ErrorMessageFactory instance; ErrorMessageBuilder builder = new ErrorMessageBuilder(); builder.setVersion(version); builder.setXid(rawMessage.readUnsignedInt()); - ErrorTypeV10 type = ErrorTypeV10.forValue(rawMessage.readUnsignedShort()); - decodeType(builder, type); - decodeCode(rawMessage, builder, type); + 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) { - switch (type) { - case HELLOFAILED: - { - HelloFailedCodeV10 code = HelloFailedCodeV10.forValue(rawMessage.readUnsignedShort()); - if (code != null) { - builder.setCode(code.name()); - } - break; - } - case BADREQUEST: - { - BadRequestCodeV10 code = BadRequestCodeV10.forValue(rawMessage.readUnsignedShort()); - if (code != null) { - builder.setCode(code.name()); - } - break; - } - case BADACTION: - { - BadActionCodeV10 code = BadActionCodeV10.forValue(rawMessage.readUnsignedShort()); - if (code != null) { - builder.setCode(code.name()); - } - break; - } - case FLOWMODFAILED: - { - FlowModFailedCodeV10 code = FlowModFailedCodeV10.forValue(rawMessage.readUnsignedShort()); - if (code != null) { - builder.setCode(code.name()); - } - break; - } - case PORTMODFAILED: - { - PortModFailedCodeV10 code = PortModFailedCodeV10.forValue(rawMessage.readUnsignedShort()); - if (code != null) { - builder.setCode(code.name()); - } - break; - } - case QUEUEOPFAILED: - { - QueueOpFailedCodeV10 code = QueueOpFailedCodeV10.forValue(rawMessage.readUnsignedShort()); - if (code != null) { - builder.setCode(code.name()); - } - break; - } - default: - builder.setCode("UNKNOWN_CODE"); - break; - } + 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 decodeType(ErrorMessageBuilder builder, ErrorTypeV10 type) { - if (type != null) { - builder.setType(type.name()); - } else { - builder.setType("UNKNOWN_TYPE"); - } + + 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); } }