BUG-159 : Removed PCEPDocumentedException.
[bgpcep.git] / pcep / impl / src / main / java / org / opendaylight / protocol / pcep / impl / message / PCEPReportMessageParser.java
index b59ce68bcfc47e14fb7438096c594f98bbef3076..7a3c9221e38c7ceab026f980496b19ccb64ae5c9 100644 (file)
@@ -12,10 +12,8 @@ import io.netty.buffer.ByteBuf;
 import java.util.List;
 
 import org.opendaylight.protocol.pcep.PCEPDeserializerException;
-import org.opendaylight.protocol.pcep.PCEPDocumentedException;
-import org.opendaylight.protocol.pcep.PCEPErrors;
-import org.opendaylight.protocol.pcep.UnknownObject;
 import org.opendaylight.protocol.pcep.spi.ObjectHandlerRegistry;
+import org.opendaylight.protocol.pcep.spi.PCEPErrors;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcrpt;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcrptBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message;
@@ -89,7 +87,7 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
        }
 
        @Override
-       public Message validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException, PCEPDocumentedException {
+       public Message validate(final List<Object> objects, final List<Message> errors) throws PCEPDeserializerException {
                if (objects == null) {
                        throw new IllegalArgumentException("Passed list can't be null.");
                }
@@ -100,22 +98,15 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                final List<Reports> reports = Lists.newArrayList();
 
                while (!objects.isEmpty()) {
-                       final Reports report = getValidReports(objects);
+                       final Reports report = getValidReports(objects, errors);
                        if (reports != null) {
                                reports.add(report);
                        }
                }
-
-               if (!objects.isEmpty()) {
-                       if (objects.get(0) instanceof UnknownObject) {
-                               throw new PCEPDocumentedException("Unknown object encountered", ((UnknownObject) objects.get(0)).getError());
-                       }
-                       throw new PCEPDeserializerException("Unprocessed Objects: " + objects);
-               }
                return new PcrptBuilder().setPcrptMessage(new PcrptMessageBuilder().setReports(reports).build()).build();
        }
 
-       private Reports getValidReports(final List<Object> objects) throws PCEPDocumentedException {
+       private Reports getValidReports(final List<Object> objects, final List<Message> errors) {
                final ReportsBuilder builder = new ReportsBuilder();
                if (objects.get(0) instanceof Srp) {
                        builder.setSrp((Srp) objects.get(0));
@@ -125,7 +116,8 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                        builder.setLsp((Lsp) objects.get(0));
                        objects.remove(0);
                } else {
-                       throw new PCEPDocumentedException("LSP object missing", PCEPErrors.LSP_MISSING);
+                       errors.add(createErrorMsg(PCEPErrors.LSP_MISSING));
+                       return null;
                }
                if (!objects.isEmpty()) {
                        final PathBuilder pBuilder = new PathBuilder();
@@ -135,7 +127,7 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                return builder.build();
        }
 
-       private void parsePath(final List<Object> objects, final PathBuilder builder) throws PCEPDocumentedException {
+       private void parsePath(final List<Object> objects, final PathBuilder builder) {
                final List<Metrics> pathMetrics = Lists.newArrayList();
                Object obj;
                State state = State.Init;
@@ -184,10 +176,6 @@ public class PCEPReportMessageParser extends AbstractMessageParser {
                                break;
                        case End:
                                break;
-                       default:
-                               if (obj instanceof UnknownObject) {
-                                       throw new PCEPDocumentedException("Unknown object", ((UnknownObject) obj).getError());
-                               }
                        }
                        if (!state.equals(State.End)) {
                                objects.remove(0);