Returning of future from request context - FlowCapableTransactionService. 15/20815/2
authorJozef Gloncak <jgloncak@cisco.com>
Wed, 20 May 2015 13:35:04 +0000 (15:35 +0200)
committerJozef Gloncak <jgloncak@cisco.com>
Thu, 21 May 2015 06:05:49 +0000 (06:05 +0000)
Change-Id: Ie0d56eea35035378e96cc61c620de46f2e14fc4f
Signed-off-by: Jozef Gloncak <jgloncak@cisco.com>
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/FlowCapableTransactionServiceImpl.java

index 5a3a478f38ce9435a7f85a361d40498a015c2c11..4450a82613c7d5aa05403d3205caf232c7f64ab6 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.openflowplugin.impl.services;
 
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.Future;
 import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueue;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
@@ -43,7 +42,6 @@ public class FlowCapableTransactionServiceImpl extends CommonService implements
             return failedFuture();
         }
 
-        final DeviceContext deviceContext = getDeviceContext();
 
         final BarrierInputBuilder barrierInputOFJavaBuilder = new BarrierInputBuilder();
         final Xid xid = requestContext.getXid();
@@ -53,25 +51,29 @@ public class FlowCapableTransactionServiceImpl extends CommonService implements
         LOG.trace("Hooking xid {} to device context - precaution.", requestContext.getXid().getValue());
 
         final OutboundQueue outboundQueue = getDeviceContext().getPrimaryConnectionContext().getOutboundQueueProvider();
-        final SettableFuture<RpcResult<Void>> settableFuture = SettableFuture.create();
         final BarrierInput barrierInput = barrierInputOFJavaBuilder.build();
         outboundQueue.commitEntry(xid.getValue(), barrierInput, new FutureCallback<OfHeader>() {
+
+            RpcResultBuilder<Void> rpcResultBuilder;
             @Override
             public void onSuccess(final OfHeader ofHeader) {
+                rpcResultBuilder = RpcResultBuilder.<Void>success();
+                requestContext.setResult(rpcResultBuilder.build());
                 RequestContextUtil.closeRequstContext(requestContext);
+
                 getMessageSpy().spyMessage(barrierInput.getImplementedInterface(), MessageSpy.STATISTIC_GROUP.TO_SWITCH_SUBMIT_SUCCESS);
 
-                settableFuture.set(RpcResultBuilder.<Void>success().build());
             }
 
             @Override
             public void onFailure(final Throwable throwable) {
-                RpcResultBuilder<Void> rpcResultBuilder = RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, throwable.getMessage(), throwable);
+                rpcResultBuilder = RpcResultBuilder.<Void>failed().withError(RpcError.ErrorType.APPLICATION, throwable.getMessage(), throwable);
+                requestContext.setResult(rpcResultBuilder.build());
                 RequestContextUtil.closeRequstContext(requestContext);
+
                 getMessageSpy().spyMessage(barrierInput.getImplementedInterface(), MessageSpy.STATISTIC_GROUP.TO_SWITCH_SUBMIT_FAILURE);
-                settableFuture.set(rpcResultBuilder.build());
             }
         });
-        return settableFuture;
+        return requestContext.getFuture();
     }
 }