Complexity issue: pcep.impl.messages 96/21396/9
authorIveta Halanova <iveta.halanova@pantheon.sk>
Fri, 29 May 2015 11:06:15 +0000 (13:06 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 29 May 2015 13:57:29 +0000 (13:57 +0000)
Switch extractions into private methods named insertObject

Change-Id: I1ad50fed7370290b4a2c3ec15cefac3bb156d797
Signed-off-by: Iveta Halanova <iveta.halanova@pantheon.sk>
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPErrorMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPNotificationMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPReplyMessageParser.java
pcep/impl/src/main/java/org/opendaylight/protocol/pcep/impl/message/PCEPRequestMessageParser.java

index 03be6582d9fd7b702063740ccf8655ca080b3c66..e1a89b14d0722afbdcdd8d2749d7098b8161f24b 100644 (file)
@@ -118,45 +118,7 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
             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);
             }
@@ -173,6 +135,39 @@ public class PCEPErrorMessageParser extends AbstractMessageParser {
         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
     }
index ec5a467a589c51320df8e5ed989962ec12e93cc6..626e172e2aab104d4b395a5ea285c043e155fc4b 100644 (file)
@@ -96,34 +96,8 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
         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);
@@ -138,6 +112,32 @@ public class PCEPNotificationMessageParser extends AbstractMessageParser {
                 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
     }
index 61471ed1f36cd5cadcf5639d9245a8fdbdcccdfb..21a77441dbd33b1ec34e5f9306da8c2ae05a1dbb 100644 (file)
@@ -246,41 +246,7 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
         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);
             }
@@ -290,6 +256,36 @@ public class PCEPReplyMessageParser extends AbstractMessageParser {
         }
     }
 
+    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<>();
 
index 4812266341a38d92914ec914ade402b47afd7d10..1e2c55293b425a9bab15bc7ccb6ec71f65d349d9 100644 (file)
@@ -253,96 +253,8 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
 
         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);
             }
@@ -365,6 +277,82 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
         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
     }
@@ -388,48 +376,7 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
         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);
             }
@@ -440,6 +387,41 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
         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
     }