Update MRI projects for Aluminium
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / util / FlatBatchUtil.java
index 24ed0f32a8b9f4e93481fc200ee2deb0d1e81609..292af59b732a4ada82d12f03405d240a003d67d9 100644 (file)
@@ -12,7 +12,9 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.EnumSet;
 import java.util.List;
 import org.opendaylight.openflowplugin.impl.services.batch.BatchPlanStep;
@@ -76,14 +78,14 @@ public final class FlatBatchUtil {
     }
 
     private static boolean isGroupBarrierNeeded(final EnumSet<BatchStepType> previousTypes, final BatchStepType type) {
-        return (type == BatchStepType.GROUP_ADD
+        return type == BatchStepType.GROUP_ADD
                 && (previousTypes.contains(BatchStepType.GROUP_ADD)
-                || previousTypes.contains(BatchStepType.GROUP_UPDATE)))
-                || (type == BatchStepType.GROUP_REMOVE
+                || previousTypes.contains(BatchStepType.GROUP_UPDATE))
+                || type == BatchStepType.GROUP_REMOVE
                 && (previousTypes.contains(BatchStepType.FLOW_REMOVE)
                 || previousTypes.contains(BatchStepType.FLOW_UPDATE)
                 || previousTypes.contains(BatchStepType.GROUP_REMOVE)
-                || previousTypes.contains(BatchStepType.GROUP_UPDATE)));
+                || previousTypes.contains(BatchStepType.GROUP_UPDATE));
     }
 
     private static boolean isMeterBarrierNeeded(final EnumSet<BatchStepType> previousTypes, final BatchStepType type) {
@@ -92,7 +94,7 @@ public final class FlatBatchUtil {
                 || previousTypes.contains(BatchStepType.FLOW_UPDATE));
     }
 
-    public static List<BatchPlanStep> assembleBatchPlan(List<Batch> batches) {
+    public static List<BatchPlanStep> assembleBatchPlan(final Collection<Batch> batches) {
         final List<BatchPlanStep> plan = new ArrayList<>();
 
         BatchPlanStep planStep;
@@ -109,36 +111,36 @@ public final class FlatBatchUtil {
         return plan;
     }
 
-    private static List<? extends BatchOrderGrouping> extractBatchData(final BatchStepType batchStepType,
+    private static Collection<? extends BatchOrderGrouping> extractBatchData(final BatchStepType batchStepType,
                                                                        final BatchChoice batchChoice) {
-        final List<? extends BatchOrderGrouping> batchData;
+        final Collection<? extends BatchOrderGrouping> batchData;
         switch (batchStepType) {
             case FLOW_ADD:
-                batchData = ((FlatBatchAddFlowCase) batchChoice).getFlatBatchAddFlow();
+                batchData = ((FlatBatchAddFlowCase) batchChoice).nonnullFlatBatchAddFlow().values();
                 break;
             case FLOW_REMOVE:
-                batchData = ((FlatBatchRemoveFlowCase) batchChoice).getFlatBatchRemoveFlow();
+                batchData = ((FlatBatchRemoveFlowCase) batchChoice).nonnullFlatBatchRemoveFlow().values();
                 break;
             case FLOW_UPDATE:
-                batchData = ((FlatBatchUpdateFlowCase) batchChoice).getFlatBatchUpdateFlow();
+                batchData = ((FlatBatchUpdateFlowCase) batchChoice).nonnullFlatBatchUpdateFlow().values();
                 break;
             case GROUP_ADD:
-                batchData = ((FlatBatchAddGroupCase) batchChoice).getFlatBatchAddGroup();
+                batchData = ((FlatBatchAddGroupCase) batchChoice).nonnullFlatBatchAddGroup().values();
                 break;
             case GROUP_REMOVE:
-                batchData = ((FlatBatchRemoveGroupCase) batchChoice).getFlatBatchRemoveGroup();
+                batchData = ((FlatBatchRemoveGroupCase) batchChoice).nonnullFlatBatchRemoveGroup().values();
                 break;
             case GROUP_UPDATE:
-                batchData = ((FlatBatchUpdateGroupCase) batchChoice).getFlatBatchUpdateGroup();
+                batchData = ((FlatBatchUpdateGroupCase) batchChoice).nonnullFlatBatchUpdateGroup().values();
                 break;
             case METER_ADD:
-                batchData = ((FlatBatchAddMeterCase) batchChoice).getFlatBatchAddMeter();
+                batchData = ((FlatBatchAddMeterCase) batchChoice).nonnullFlatBatchAddMeter().values();
                 break;
             case METER_REMOVE:
-                batchData = ((FlatBatchRemoveMeterCase) batchChoice).getFlatBatchRemoveMeter();
+                batchData = ((FlatBatchRemoveMeterCase) batchChoice).nonnullFlatBatchRemoveMeter().values();
                 break;
             case METER_UPDATE:
-                batchData = ((FlatBatchUpdateMeterCase) batchChoice).getFlatBatchUpdateMeter();
+                batchData = ((FlatBatchUpdateMeterCase) batchChoice).nonnullFlatBatchUpdateMeter().values();
                 break;
             default:
                 throw new IllegalArgumentException("Unsupported batch step type obtained: " + batchStepType);
@@ -149,8 +151,9 @@ public final class FlatBatchUtil {
     @VisibleForTesting
     static <T extends BatchChoice> BatchStepType detectBatchStepType(final T batchCase) {
         final BatchStepType type;
-        final Class<? extends DataContainer> implementedInterface = batchCase.getImplementedInterface();
+        final Class<? extends DataContainer> implementedInterface = batchCase.implementedInterface();
 
+        // FIXME: use a lookup table instead of this cascade
         if (FlatBatchAddFlowCase.class.equals(implementedInterface)) {
             type = BatchStepType.FLOW_ADD;
         } else if (FlatBatchRemoveFlowCase.class.equals(implementedInterface)) {
@@ -184,9 +187,9 @@ public final class FlatBatchUtil {
 
             for (RpcResult<ProcessFlatBatchOutput> jobResult : jobsResults) {
                 if (jobResult != null) {
-                    isSuccessful = (isSuccessful && jobResult.isSuccessful());
+                    isSuccessful = isSuccessful && jobResult.isSuccessful();
                     rpcErrors.addAll(jobResult.getErrors());
-                    batchFailures.addAll(jobResult.getResult().getBatchFailure());
+                    batchFailures.addAll(jobResult.getResult().nonnullBatchFailure().values());
                 }
             }
 
@@ -204,7 +207,9 @@ public final class FlatBatchUtil {
      */
     public static ListenableFuture<RpcResult<ProcessFlatBatchOutput>> mergeJobsResultsFutures(
             final List<ListenableFuture<RpcResult<ProcessFlatBatchOutput>>> firedJobs) {
-        return Futures.transform(Futures.successfulAsList(firedJobs), mergeRpcResults());
+        return Futures.transform(Futures.successfulAsList(firedJobs),
+                mergeRpcResults(),
+                MoreExecutors.directExecutor());
     }
 
     /**