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;
}
@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.");
}
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));
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();
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;
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);