if (obj instanceof UnknownObject) {
return new PcerrBuilder().setPcerrMessage(b.setErrors(((UnknownObject) obj).getErrors()).build()).build();
}
- switch (state) {
- case ERROR_IN:
- state = State.OPEN;
- if (obj instanceof ErrorObject) {
- final ErrorObject o = (ErrorObject) obj;
- errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
- state = State.ERROR_IN;
- break;
- }
- case RP_IN:
- state = State.ERROR;
- if (obj instanceof Rp) {
- final Rp o = ((Rp) obj);
- requestParameters.add(new RpsBuilder().setRp(o).build());
- state = State.RP_IN;
- break;
- }
- case OPEN:
- state = State.OPEN_IN;
- if (obj instanceof Open) {
- b.setErrorType(new SessionCaseBuilder().setSession(new SessionBuilder().setOpen((Open) obj).build()).build());
- break;
- }
- case ERROR:
- state = State.OPEN_IN;
- if (obj instanceof ErrorObject) {
- final ErrorObject o = (ErrorObject) obj;
- errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
- state = State.ERROR;
- break;
- }
- case OPEN_IN:
- state = State.END;
- break;
- case END:
- break;
- default:
- break;
- }
+ state = insertObject(state, errorObjects, obj, requestParameters, b);
if (!state.equals(State.END)) {
objects.remove(0);
}
return new PcerrBuilder().setPcerrMessage(b.setErrors(errorObjects).build()).build();
}
+ private State insertObject(final State state, final List<Errors> errorObjects, final Object obj, final List<Rps> requestParameters, final PcerrMessageBuilder b) {
+ switch (state) {
+ case ERROR_IN:
+ if (obj instanceof ErrorObject) {
+ final ErrorObject o = (ErrorObject) obj;
+ errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
+ return State.ERROR_IN;
+ }
+ case RP_IN:
+ if (obj instanceof Rp) {
+ final Rp o = ((Rp) obj);
+ requestParameters.add(new RpsBuilder().setRp(o).build());
+ return State.RP_IN;
+ }
+ case OPEN:
+ if (obj instanceof Open) {
+ b.setErrorType(new SessionCaseBuilder().setSession(new SessionBuilder().setOpen((Open) obj).build()).build());
+ return State.OPEN_IN;
+ }
+ case ERROR:
+ if (obj instanceof ErrorObject) {
+ final ErrorObject o = (ErrorObject) obj;
+ errorObjects.add(new ErrorsBuilder().setErrorObject(o).build());
+ return State.ERROR;
+ }
+ case OPEN_IN:
+ case END:
+ return State.END;
+ default:
+ return state;
+ }
+ }
+
private enum State {
INIT, ERROR_IN, RP_IN, OPEN, ERROR, OPEN_IN, END
}
State state = State.INIT;
while (!objects.isEmpty() && !state.equals(State.END)) {
obj = objects.get(0);
- switch (state) {
- case INIT:
- state = State.RP_IN;
- if (obj instanceof Rp) {
- final Rp rp = (Rp) obj;
- if (rp.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.<Rp>absent()));
- return null;
- }
- requestParameters.add(new RpsBuilder().setRp(rp).build());
- state = State.INIT;
- break;
- }
- case RP_IN:
- state = State.NOTIFICATION_IN;
- if (obj instanceof CNotification) {
- final CNotification n = (CNotification) obj;
- notifications.add(new NotificationsBuilder().setCNotification(n).build());
- state = State.RP_IN;
- break;
- }
- case NOTIFICATION_IN:
- state = State.END;
- break;
- case END:
- break;
- default:
- break;
+ if ((state = insertObject(state, obj, errors, requestParameters, notifications)) == null) {
+ return null;
}
if (!state.equals(State.END)) {
objects.remove(0);
notifications).setRps(requestParameters).build();
}
+ private static State insertObject(final State state, final Object obj, final List<Message> errors, final List<Rps> requestParameters, final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcntf.message.pcntf.message.notifications.Notifications> notifications) {
+ switch (state) {
+ case INIT:
+ if (obj instanceof Rp) {
+ final Rp rp = (Rp) obj;
+ if (rp.isProcessingRule()) {
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.<Rp>absent()));
+ return null;
+ }
+ requestParameters.add(new RpsBuilder().setRp(rp).build());
+ return State.INIT;
+ }
+ case RP_IN:
+ if (obj instanceof CNotification) {
+ final CNotification n = (CNotification) obj;
+ notifications.add(new NotificationsBuilder().setCNotification(n).build());
+ return State.RP_IN;
+ }
+ case NOTIFICATION_IN:
+ case END:
+ return State.END;
+ default:
+ return state;
+ }
+ }
+
private enum State {
INIT, RP_IN, NOTIFICATION_IN, END
}
State state = State.INIT;
while (!objects.isEmpty() && !state.equals(State.END)) {
obj = objects.get(0);
-
- switch (state) {
- case INIT:
- state = State.LSPA_IN;
- if (obj instanceof Lspa) {
- builder.setLspa((Lspa) obj);
- break;
- }
- case LSPA_IN:
- state = State.BANDWIDTH_IN;
- if (obj instanceof Bandwidth) {
- builder.setBandwidth((Bandwidth) obj);
- break;
- }
- case BANDWIDTH_IN:
- state = State.METRIC_IN;
- if (obj instanceof Metric) {
- pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
- state = State.METRIC_IN;
- break;
- }
- case METRIC_IN:
- state = State.IRO_IN;
- if (obj instanceof Iro) {
- builder.setIro((Iro) obj);
- break;
- }
- case IRO_IN:
- state = State.END;
- break;
- case END:
- break;
- default:
- break;
- }
+ state = insertObject(state, obj, builder, pathMetrics);
if (!state.equals(State.END)) {
objects.remove(0);
}
}
}
+ private State insertObject(final State state, final Object obj, final FailureCaseBuilder builder, final List<Metrics> pathMetrics) {
+ switch (state) {
+ case INIT:
+ if (obj instanceof Lspa) {
+ builder.setLspa((Lspa) obj);
+ return State.LSPA_IN;
+ }
+ case LSPA_IN:
+ if (obj instanceof Bandwidth) {
+ builder.setBandwidth((Bandwidth) obj);
+ return State.BANDWIDTH_IN;
+ }
+ case BANDWIDTH_IN:
+ if (obj instanceof Metric) {
+ pathMetrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
+ return State.METRIC_IN;
+ }
+ case METRIC_IN:
+ if (obj instanceof Iro) {
+ builder.setIro((Iro) obj);
+ return State.IRO_IN;
+ }
+ case IRO_IN:
+ case END:
+ return State.END;
+ default:
+ return state;
+ }
+ }
+
protected void parsePath(final PathsBuilder builder, final List<Object> objects) {
final List<Metrics> pathMetrics = new ArrayList<>();
State state = State.INIT;
while (!objects.isEmpty() && state != State.END) {
- Object obj = objects.get(0);
-
- switch (state) {
- case INIT:
- state = State.REPORTED_IN;
- if (obj instanceof Rro) {
- final ReportedRouteBuilder rrBuilder = new ReportedRouteBuilder();
- rrBuilder.setRro((Rro) obj);
- objects.remove(0);
- obj = objects.get(0);
- if (obj instanceof Bandwidth) {
- rrBuilder.setBandwidth((Bandwidth) obj);
- }
- break;
- }
- case REPORTED_IN:
- state = State.VENDOR_INFO_LIST;
- if (obj instanceof VendorInformationObject) {
- viObjects.add((VendorInformationObject) obj);
- state = State.REPORTED_IN;
- break;
- }
- case VENDOR_INFO_LIST:
- state = State.LOAD_BIN;
- if (obj instanceof LoadBalancing) {
- builder.setLoadBalancing((LoadBalancing) obj);
- break;
- }
- case LOAD_BIN:
- state = State.LSPA_IN;
- if (obj instanceof Lspa) {
- builder.setLspa((Lspa) obj);
- break;
- }
- case LSPA_IN:
- state = State.BANDWIDTH_IN;
- if (obj instanceof Bandwidth) {
- builder.setBandwidth((Bandwidth) obj);
- break;
- }
- case BANDWIDTH_IN:
- state = State.METRIC_IN;
- if (obj instanceof Metric) {
- metrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
- state = State.BANDWIDTH_IN;
- break;
- }
- case METRIC_IN:
- state = State.IRO_IN;
- if (obj instanceof Iro) {
- builder.setIro((Iro) obj);
- break;
- }
- case IRO_IN:
- state = State.RRO_IN;
- if (obj instanceof Rro) {
- builder.setRro((Rro) obj);
- break;
- }
- case RRO_IN:
- state = State.XRO_IN;
- if (obj instanceof Xro) {
- builder.setXro((Xro) obj);
- break;
- }
- case XRO_IN:
- state = State.OF_IN;
- if (obj instanceof Of) {
- builder.setOf((Of) obj);
- break;
- }
- case OF_IN:
- state = State.CT_IN;
- if (obj instanceof ClassType) {
- final ClassType classType = (ClassType) obj;
- if (!classType.isProcessingRule()) {
- errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.of(rp)));
- } else {
- builder.setClassType(classType);
- }
- break;
- }
- case CT_IN:
- state = State.END;
- break;
- case END:
- break;
- default:
- break;
- }
+ final Object obj = objects.get(0);
+ state = insertObject(state, obj, objects, viObjects, builder, metrics, errors, rp);
if (!state.equals(State.END)) {
objects.remove(0);
}
return new SegmentComputationBuilder().setP2p(builder.build()).build();
}
+ private State insertObject(final State state, Object obj, final List<Object> objects, final List<VendorInformationObject> viObjects, final P2pBuilder builder, final List<Metrics> metrics, final List<Message> errors, final Rp rp) {
+ switch (state) {
+ case INIT:
+ if (obj instanceof Rro) {
+ final ReportedRouteBuilder rrBuilder = new ReportedRouteBuilder();
+ rrBuilder.setRro((Rro) obj);
+ objects.remove(0);
+ obj = objects.get(0);
+ if (obj instanceof Bandwidth) {
+ rrBuilder.setBandwidth((Bandwidth) obj);
+ }
+ return State.REPORTED_IN;
+ }
+ case REPORTED_IN:
+ if (obj instanceof VendorInformationObject) {
+ viObjects.add((VendorInformationObject) obj);
+ return State.REPORTED_IN;
+ }
+ case VENDOR_INFO_LIST:
+ if (obj instanceof LoadBalancing) {
+ builder.setLoadBalancing((LoadBalancing) obj);
+ return State.LOAD_BIN;
+ }
+ case LOAD_BIN:
+ if (obj instanceof Lspa) {
+ builder.setLspa((Lspa) obj);
+ return State.LSPA_IN;
+ }
+ case LSPA_IN:
+ if (obj instanceof Bandwidth) {
+ builder.setBandwidth((Bandwidth) obj);
+ return State.BANDWIDTH_IN;
+ }
+ case BANDWIDTH_IN:
+ if (obj instanceof Metric) {
+ metrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
+ return State.BANDWIDTH_IN;
+ }
+ case METRIC_IN:
+ if (obj instanceof Iro) {
+ builder.setIro((Iro) obj);
+ return State.IRO_IN;
+ }
+ case IRO_IN:
+ if (obj instanceof Rro) {
+ builder.setRro((Rro) obj);
+ return State.RRO_IN;
+ }
+ case RRO_IN:
+ if (obj instanceof Xro) {
+ builder.setXro((Xro) obj);
+ return State.XRO_IN;
+ }
+ case XRO_IN:
+ if (obj instanceof Of) {
+ builder.setOf((Of) obj);
+ return State.OF_IN;
+ }
+ case OF_IN:
+ if (obj instanceof ClassType) {
+ final ClassType classType = (ClassType) obj;
+ if (!classType.isProcessingRule()) {
+ errors.add(createErrorMsg(PCEPErrors.P_FLAG_NOT_SET, Optional.of(rp)));
+ } else {
+ builder.setClassType(classType);
+ }
+ return State.CT_IN;
+ }
+ case CT_IN:
+ case END:
+ return State.END;
+ default:
+ return state;
+ }
+ }
+
private enum State {
INIT, REPORTED_IN, VENDOR_INFO_LIST, LOAD_BIN, LSPA_IN, BANDWIDTH_IN, METRIC_IN, IRO_IN, RRO_IN, XRO_IN, OF_IN, CT_IN, END
}
SvecState state = SvecState.INIT;
while (!objects.isEmpty() && !state.equals(SvecState.END)) {
obj = objects.get(0);
-
- switch (state) {
- case INIT:
- state = SvecState.OF_IN;
- if (obj instanceof Of) {
- builder.setOf((Of) obj);
- break;
- }
- case OF_IN:
- state = SvecState.GC_IN;
- if (obj instanceof Gc) {
- builder.setGc((Gc) obj);
- break;
- }
- case GC_IN:
- state = SvecState.XRO_IN;
- if (obj instanceof Xro) {
- builder.setXro((Xro) obj);
- break;
- }
- case XRO_IN:
- state = SvecState.METRIC_IN;
- if (obj instanceof Metric) {
- metrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
- state = SvecState.XRO_IN;
- break;
- }
- case METRIC_IN:
- state = SvecState.VENDOR_INFO;
- if (obj instanceof VendorInformationObject) {
- viObjects.add((VendorInformationObject) obj);
- state = SvecState.METRIC_IN;
- break;
- }
- case VENDOR_INFO:
- state = SvecState.END;
- break;
- case END:
- break;
- default:
- break;
- }
+ state = insertObject(state, obj, builder, metrics, viObjects);
if (!state.equals(SvecState.END)) {
objects.remove(0);
}
return builder.build();
}
+ private SvecState insertObject(final SvecState state, final Object obj, final SvecBuilder builder, final List<Metrics> metrics, final List<VendorInformationObject> viObjects) {
+ switch (state) {
+ case INIT:
+ if (obj instanceof Of) {
+ builder.setOf((Of) obj);
+ return SvecState.OF_IN;
+ }
+ case OF_IN:
+ if (obj instanceof Gc) {
+ builder.setGc((Gc) obj);
+ return SvecState.GC_IN;
+ }
+ case GC_IN:
+ if (obj instanceof Xro) {
+ builder.setXro((Xro) obj);
+ return SvecState.XRO_IN;
+ }
+ case XRO_IN:
+ if (obj instanceof Metric) {
+ metrics.add(new MetricsBuilder().setMetric((Metric) obj).build());
+ return SvecState.XRO_IN;
+ }
+ case METRIC_IN:
+ if (obj instanceof VendorInformationObject) {
+ viObjects.add((VendorInformationObject) obj);
+ return SvecState.METRIC_IN;
+ }
+ case VENDOR_INFO:
+ case END:
+ return SvecState.END;
+ default:
+ return state;
+ }
+ }
+
private enum SvecState {
INIT, OF_IN, GC_IN, XRO_IN, METRIC_IN, VENDOR_INFO, END
}