X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fservices%2Fbatch%2FFlatBatchFlowAdapters.java;h=4503e39e207105aed35df7c57a25ee5bebc58464;hb=9688b3b10ee4113753705f0080b29cd30e61a85d;hp=e110703a33a5e66ee475552925182b70752619de;hpb=93089b42080899f0ad1cd00840ad5a3cd5f1631d;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchFlowAdapters.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchFlowAdapters.java index e110703a33..4503e39e20 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchFlowAdapters.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/FlatBatchFlowAdapters.java @@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.Future; import javax.annotation.Nullable; -import org.opendaylight.openflowplugin.impl.util.FlatBatchUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.ProcessFlatBatchOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flat.batch.service.rev160321.process.flat.batch.input.batch.batch.choice.flat.batch.add.flow._case.FlatBatchAddFlow; @@ -46,18 +45,19 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; /** - * transform between FlatBatch API and flow batch API + * Transform between FlatBatch API and flow batch API. */ -public class FlatBatchFlowAdapters { +public final class FlatBatchFlowAdapters { private FlatBatchFlowAdapters() { - throw new IllegalStateException("This class should not be instantiated."); } /** + * Adapt flat batch add flow. * @param planStep batch step containing changes of the same type * @param node pointer for RPC routing - * @return input suitable for {@link org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.SalFlowsBatchService#addFlowsBatch(AddFlowsBatchInput)} + * @return input suitable for {@link org.opendaylight.yang.gen.v1.urn + * .opendaylight.flows.service.rev160314.SalFlowsBatchService#addFlowsBatch(AddFlowsBatchInput)} */ public static AddFlowsBatchInput adaptFlatBatchAddFlow(final BatchPlanStep planStep, final NodeRef node) { final List batchFlows = new ArrayList<>(); @@ -76,9 +76,11 @@ public class FlatBatchFlowAdapters { } /** + * Adapt flat batch remove flow. * @param planStep batch step containing changes of the same type * @param node pointer for RPC routing - * @return input suitable for {@link org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.SalFlowsBatchService#removeFlowsBatch(RemoveFlowsBatchInput)} + * @return input suitable for {@link org.opendaylight.yang.gen.v1.urn + * .opendaylight.flows.service.rev160314.SalFlowsBatchService#removeFlowsBatch(RemoveFlowsBatchInput)} */ public static RemoveFlowsBatchInput adaptFlatBatchRemoveFlow(final BatchPlanStep planStep, final NodeRef node) { final List batchFlows = new ArrayList<>(); @@ -97,9 +99,11 @@ public class FlatBatchFlowAdapters { } /** + * Adapt flat batch update flow. * @param planStep batch step containing changes of the same type * @param node pointer for RPC routing - * @return input suitable for {@link org.opendaylight.yang.gen.v1.urn.opendaylight.flows.service.rev160314.SalFlowsBatchService#updateFlowsBatch(UpdateFlowsBatchInput)} + * @return input suitable for {@link org.opendaylight.yang.gen.v1.urn + * .opendaylight.flows.service.rev160314.SalFlowsBatchService#updateFlowsBatch(UpdateFlowsBatchInput)} */ public static UpdateFlowsBatchInput adaptFlatBatchUpdateFlow(final BatchPlanStep planStep, final NodeRef node) { final List batchFlows = new ArrayList<>(); @@ -117,30 +121,24 @@ public class FlatBatchFlowAdapters { } /** - * @param chainInput here all partial results are collected (values + errors) + * Convert batch result. * @param stepOffset offset of current batch plan step - * @return next chained result incorporating results of this step's batch + * @return converted {@link ProcessFlatBatchOutput} RPC result */ @VisibleForTesting static Function, RpcResult> - createBatchFlowChainingFunction(final RpcResult chainInput, - final int stepOffset) { + convertBatchFlowResult(final int stepOffset) { return new Function, RpcResult>() { @Nullable @Override public RpcResult apply(@Nullable final RpcResult input) { - // create rpcResult builder honoring both success/failure of current input and chained input + join errors - final RpcResultBuilder output = FlatBatchUtil.mergeRpcResults(chainInput, input); - // convert values and add to chain values - final ProcessFlatBatchOutputBuilder outputBuilder = new ProcessFlatBatchOutputBuilder(chainInput.getResult()); - final List batchFailures = wrapBatchFlowFailuresForFlat(input, stepOffset); - // join values - if (outputBuilder.getBatchFailure() == null) { - outputBuilder.setBatchFailure(new ArrayList(batchFailures.size())); - } - outputBuilder.getBatchFailure().addAll(batchFailures); - - return output.withResult(outputBuilder.build()).build(); + List batchFailures = wrapBatchFlowFailuresForFlat(input, stepOffset); + ProcessFlatBatchOutputBuilder outputBuilder = + new ProcessFlatBatchOutputBuilder().setBatchFailure(batchFailures); + return RpcResultBuilder.status(input.isSuccessful()) + .withRpcErrors(input.getErrors()) + .withResult(outputBuilder.build()) + .build(); } }; } @@ -163,19 +161,17 @@ public class FlatBatchFlowAdapters { } /** - * shortcut for {@link #createBatchFlowChainingFunction(RpcResult, int)} with conversion {@link ListenableFuture} + * Shortcut for {@link #convertBatchFlowResult(int)} with conversion {@link ListenableFuture}. * * @param exact type of batch flow output - * @param chainInput here all partial results are collected (values + errors) * @param resultUpdateFlowFuture batch flow rpc-result (add/remove/update) * @param currentOffset offset of current batch plan step with respect to entire chain of steps - * @return next chained result incorporating results of this step's batch + * @return ListenableFuture with converted result {@link ProcessFlatBatchOutput} */ public static ListenableFuture> - adaptFlowBatchFutureForChain(final RpcResult chainInput, - final Future> resultUpdateFlowFuture, - final int currentOffset) { + convertFlowBatchFutureForChain(final Future> resultUpdateFlowFuture, + final int currentOffset) { return Futures.transform(JdkFutureAdapters.listenInPoolThread(resultUpdateFlowFuture), - FlatBatchFlowAdapters.createBatchFlowChainingFunction(chainInput, currentOffset)); + FlatBatchFlowAdapters.convertBatchFlowResult(currentOffset)); } }