Simplified ErrorMessage subclassing by extracting cases 31/17431/3
authorDana Kutenicsova <dkutenic@cisco.com>
Tue, 31 Mar 2015 11:40:07 +0000 (13:40 +0200)
committerDana Kutenicsova <dkutenic@cisco.com>
Tue, 31 Mar 2015 12:56:47 +0000 (14:56 +0200)
Change-Id: I342c8d9785e4fa8fcc825acd1a6183ef962478f2
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
pcep/ietf-stateful07/src/main/java/org/opendaylight/protocol/pcep/ietf/stateful07/Stateful07ErrorMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPErrorMessageParser.java

index 3a0703e4b476c1cac580c17745101bcdecdcf6be..bc45ffd26ba930e7e0a4a7e713b1b51903754acc 100644 (file)
@@ -8,13 +8,10 @@
 package org.opendaylight.protocol.pcep.ietf.stateful07;
 
 import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
 import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.protocol.pcep.impl.message.PCEPErrorMessageParser;
-import org.opendaylight.protocol.pcep.spi.MessageUtil;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
@@ -36,7 +33,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.ErrorsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.RequestCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.RequestCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.SessionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.SessionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request._case.RequestBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.error.type.request._case.request.Rps;
@@ -54,15 +50,7 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser {
     }
 
     @Override
-    public void serializeMessage(final Message message, final ByteBuf out) {
-        Preconditions.checkArgument(message instanceof PcerrMessage, "Wrong instance of Message. Passed instance of %s. Need ErrorMessage.", message.getClass());
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.PcerrMessage err = ((PcerrMessage) message).getPcerrMessage();
-
-        if (err.getErrors() == null || err.getErrors().isEmpty()) {
-            throw new IllegalArgumentException("Errors should not be empty.");
-        }
-        final ByteBuf buffer = Unpooled.buffer();
-
+    protected void serializeCases(final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.PcerrMessage err, final ByteBuf buffer) {
         if (err.getErrorType() instanceof RequestCase) {
             final List<Rps> rps = ((RequestCase) err.getErrorType()).getRequest().getRps();
             for (final Rps r : rps) {
@@ -75,13 +63,6 @@ public final class Stateful07ErrorMessageParser extends PCEPErrorMessageParser {
                 serializeObject(s.getSrp(), buffer);
             }
         }
-        for (final Errors e : err.getErrors()) {
-            serializeObject(e.getErrorObject(), buffer);
-        }
-        if (err.getErrorType() instanceof SessionCase) {
-            serializeObject(((SessionCase) err.getErrorType()).getSession().getOpen(), buffer);
-        }
-        MessageUtil.formatMessage(TYPE, buffer, out);
     }
 
     @Override
index 242d4ec0c87818f8573e11f9ce754f9db87c6508..03be6582d9fd7b702063740ccf8655ca080b3c66 100644 (file)
@@ -58,12 +58,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
             throw new IllegalArgumentException("Errors should not be empty.");
         }
         final ByteBuf buffer = Unpooled.buffer();
-        if (err.getErrorType() instanceof RequestCase) {
-            final List<Rps> rps = ((RequestCase) err.getErrorType()).getRequest().getRps();
-            for (final Rps r : rps) {
-                serializeObject(r.getRp(), buffer);
-            }
-        }
+        serializeCases(err, buffer);
         for (final Errors e : err.getErrors()) {
             serializeObject(e.getErrorObject(), buffer);
         }
@@ -74,6 +69,18 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
         MessageUtil.formatMessage(TYPE, buffer, out);
     }
 
+    /**
+     * If needed, subclasses can override this method.
+     */
+    protected void serializeCases(final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.PcerrMessage err, final ByteBuf buffer) {
+        if (err.getErrorType() instanceof RequestCase) {
+            final List<Rps> rps = ((RequestCase) err.getErrorType()).getRequest().getRps();
+            for (final Rps r : rps) {
+                serializeObject(r.getRp(), buffer);
+            }
+        }
+    }
+
     @Override
     protected PcerrMessage validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException {
         if (objects == null) {