Merge "Clean up instance checks and casts"
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / services / singlelayer / SingleLayerExperimenterMultipartService.java
index 01cf3dcae21229ef0c2d34f262e658754f59e83f..493d98056081e6326a02366d0c6984d47dcc83df 100644 (file)
@@ -10,10 +10,12 @@ package org.opendaylight.openflowplugin.impl.services.singlelayer;
 
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.List;
-import java.util.concurrent.Future;
 import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
@@ -54,12 +56,13 @@ public class SingleLayerExperimenterMultipartService extends AbstractExperimente
     }
 
     @Override
-    public Future<RpcResult<SendExperimenterMpRequestOutput>> handleAndReply(SendExperimenterMpRequestInput input) {
+    public ListenableFuture<RpcResult<SendExperimenterMpRequestOutput>> handleAndReply(
+            SendExperimenterMpRequestInput input) {
         final SettableFuture<RpcResult<SendExperimenterMpRequestOutput>> future = SettableFuture.create();
 
         Futures.addCallback(handleServiceCall(input), new FutureCallback<RpcResult<List<MultipartReply>>>() {
             @Override
-            public void onSuccess(final RpcResult<List<MultipartReply>> result) {
+            public void onSuccess(@Nonnull final RpcResult<List<MultipartReply>> result) {
                 if (result.isSuccessful()) {
                     future.set(RpcResultBuilder
                         .success(new SendExperimenterMpRequestOutputBuilder()
@@ -69,27 +72,28 @@ public class SingleLayerExperimenterMultipartService extends AbstractExperimente
                                 .map(MultipartReply::getMultipartReplyBody)
                                 .filter(MultipartReplyExperimenter.class::isInstance)
                                 .map(experimenter -> new ExperimenterCoreMessageItemBuilder()
-                                    .setExperimenterMessageOfChoice(MultipartReplyExperimenter.class
-                                        .cast(experimenter)
+                                    .setExperimenterMessageOfChoice(((MultipartReplyExperimenter) experimenter)
                                         .getExperimenterMessageOfChoice())
                                     .build())
                                 .collect(Collectors.toList()))
                             .build())
                         .build());
                 } else {
-                    LOG.warn("OnSuccess, rpc result unsuccessful, multipart response for rpc sendExperimenterMpRequest was unsuccessful.");
-                    future.set(RpcResultBuilder.<SendExperimenterMpRequestOutput>failed().withRpcErrors(result.getErrors()).build());
+                    LOG.warn("OnSuccess, rpc result unsuccessful,"
+                            + " multipart response for rpc sendExperimenterMpRequest was unsuccessful.");
+                    future.set(RpcResultBuilder.<SendExperimenterMpRequestOutput>failed()
+                            .withRpcErrors(result.getErrors()).build());
                 }
             }
 
             @Override
-            public void onFailure(final Throwable t) {
-                LOG.warn("Failure multipart response for Experimenter-Mp request. Exception: {}", t);
-                future.set(RpcResultBuilder.<SendExperimenterMpRequestOutput>failed().withError(ErrorType.RPC, "Future error", t).build());
+            public void onFailure(final Throwable throwable) {
+                LOG.warn("Failure multipart response for Experimenter-Mp request. Exception: {}", throwable);
+                future.set(RpcResultBuilder.<SendExperimenterMpRequestOutput>failed()
+                        .withError(ErrorType.RPC, "Future error", throwable).build());
             }
-        });
+        }, MoreExecutors.directExecutor());
 
         return future;
     }
-
 }