Bug-731: PCEPErrors enum with error-type and error-value
[bgpcep.git] / pcep / segment-routing / src / main / java / org / opendaylight / protocol / pcep / segment / routing02 / SrPcRepMessageParser.java
index fe83fd9e749cd602fa043b5284d394ab5a57c97c..144c1029dac51744d4a77342b421152490a00af0 100644 (file)
@@ -8,12 +8,14 @@
 
 package org.opendaylight.protocol.pcep.segment.routing02;
 
+import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import io.netty.buffer.ByteBuf;
 import java.util.List;
 import org.opendaylight.protocol.pcep.impl.message.PCEPReplyMessageParser;
 import org.opendaylight.protocol.pcep.spi.ObjectRegistry;
 import org.opendaylight.protocol.pcep.spi.PCEPErrors;
+import org.opendaylight.protocol.pcep.spi.VendorInformationObjectRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.lsp.setup.type._01.rev140507.Tlvs1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.lsp.setup.type._01.rev140507.Tlvs2;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
@@ -31,22 +33,20 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 
 public class SrPcRepMessageParser extends PCEPReplyMessageParser {
 
-    public SrPcRepMessageParser(ObjectRegistry registry) {
-        super(registry);
+    public SrPcRepMessageParser(final ObjectRegistry registry, final VendorInformationObjectRegistry viRegistry) {
+        super(registry, viRegistry);
     }
 
     @Override
     protected void serializeReply(Replies reply, ByteBuf buffer) {
         final Rp rp = reply.getRp();
-        if(isSegmentRoutingPath(rp)) {
+        if (isSegmentRoutingPath(rp)) {
             serializeObject(rp, buffer);
-            if (reply.getResult() != null) {
-                if (reply.getResult() instanceof SuccessCase) {
-                    final SuccessCase s = (SuccessCase) reply.getResult();
-                    for (final Paths p : s.getSuccess().getPaths()) {
-                        final Ero ero = p.getEro();
-                        serializeObject(ero, buffer);
-                    }
+            if (reply.getResult() instanceof SuccessCase) {
+                final SuccessCase s = (SuccessCase) reply.getResult();
+                for (final Paths p : s.getSuccess().getPaths()) {
+                    final Ero ero = p.getEro();
+                    serializeObject(ero, buffer);
                 }
             }
         } else {
@@ -57,35 +57,33 @@ public class SrPcRepMessageParser extends PCEPReplyMessageParser {
     @Override
     protected Replies getValidReply(List<Object> objects, List<Message> errors) {
         if (!(objects.get(0) instanceof Rp)) {
-            errors.add(createErrorMsg(PCEPErrors.RP_MISSING));
+            errors.add(createErrorMsg(PCEPErrors.RP_MISSING, Optional.<Rp>absent()));
             return null;
         }
         final Rp rp = (Rp) objects.get(0);
-        if(isSegmentRoutingPath(rp)) {
+        if (isSegmentRoutingPath(rp)) {
             objects.remove(0);
             Result res = null;
-            if (!objects.isEmpty()) {
-                if (objects.get(0) instanceof Ero) {
-                    final SuccessBuilder builder = new SuccessBuilder();
-                    final List<Paths> paths = Lists.newArrayList();
-                    final PathsBuilder pBuilder = new PathsBuilder();
-                    while (!objects.isEmpty()) {
-                        final Object object = objects.get(0);
-                        if(object instanceof Ero) {
-                            final Ero ero = (Ero) object;
-                            final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
-                            if(error != null) {
-                                errors.add(createErrorMsg(error));
-                                return null;
-                            } else {
-                                paths.add(pBuilder.setEro(ero).build());
-                            }
+            if (objects.get(0) instanceof Ero) {
+                final SuccessBuilder builder = new SuccessBuilder();
+                final List<Paths> paths = Lists.newArrayList();
+                final PathsBuilder pBuilder = new PathsBuilder();
+                while (!objects.isEmpty()) {
+                    final Object object = objects.get(0);
+                    if (object instanceof Ero) {
+                        final Ero ero = (Ero) object;
+                        final PCEPErrors error = SrEroUtil.validateSrEroSubobjects(ero);
+                        if (error != null) {
+                            errors.add(createErrorMsg(error, Optional.<Rp>absent()));
+                            return null;
+                        } else {
+                            paths.add(pBuilder.setEro(ero).build());
                         }
-                        objects.remove(0);
                     }
-                    builder.setPaths(paths);
-                    res = new SuccessCaseBuilder().setSuccess(builder.build()).build();
+                    objects.remove(0);
                 }
+                builder.setPaths(paths);
+                res = new SuccessCaseBuilder().setSuccess(builder.build()).build();
             }
             return new RepliesBuilder().setRp(rp).setResult(res).build();
         }
@@ -93,8 +91,9 @@ public class SrPcRepMessageParser extends PCEPReplyMessageParser {
     }
 
     private boolean isSegmentRoutingPath(final Rp rp) {
-        if(rp.getTlvs() != null) {
-            return SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs1.class)) || SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs2.class));
+        if (rp.getTlvs() != null) {
+            return SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs1.class))
+                    || SrEroUtil.isPst(rp.getTlvs().getAugmentation(Tlvs2.class));
         }
         return false;
     }