Wrap service handlers to method handleServiceCall. 31/17331/2
authorJozef Gloncak <jgloncak@cisco.com>
Mon, 30 Mar 2015 09:23:58 +0000 (11:23 +0200)
committermichal rehak <mirehak@cisco.com>
Tue, 31 Mar 2015 11:10:22 +0000 (11:10 +0000)
Handling code in service handlers (expect PacketProcessingServiceImpl) were wrapped
to handleServiceCall() method.
Method handleServiceCall() was moved to CommonService abstract class

Change-Id: I027f1b0658b4805366748377dfd43ca9c102df44
Signed-off-by: Jozef Gloncak <jgloncak@cisco.com>
14 files changed:
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/CommonService.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OpendaylightFlowStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OpendaylightFlowTableStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OpendaylightGroupStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OpendaylightMeterStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OpendaylightPortStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/OpendaylightQueueStatisticsServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/PacketProcessingServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalFlowServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalGroupServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalMeterServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalPortServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/SalTableServiceImpl.java
openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/ServiceCallProcessingUtil.java [deleted file]

index 5c07b8ea28527d2bcbc05d7ff2a8e1c6b9e274dd..b2ffc2356ad6cefbfe0eb01d1f56e2b8c21310b5 100644 (file)
@@ -7,6 +7,11 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+
 import com.google.common.util.concurrent.Futures;
 import java.math.BigInteger;
 import java.util.concurrent.Future;
@@ -20,7 +25,7 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
 import org.slf4j.Logger;
 
-public class CommonService {
+abstract class CommonService {
     private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(CommonService.class);
     private static final long WAIT_TIME = 2000;
     protected final static Future<RpcResult<Void>> ERROR_RPC_RESULT = Futures.immediateFuture(RpcResultBuilder
@@ -34,7 +39,7 @@ public class CommonService {
     protected DeviceContext deviceContext;
     private ConnectionAdapter primaryConnectionAdapter;
 
-    public CommonService() {
+    CommonService() {
     }
 
     public CommonService(final RpcContext rpcContext) {
@@ -70,4 +75,23 @@ public class CommonService {
         return primaryConnectionAdapter;
     }
 
+    <T extends DataObject, F>  Future<RpcResult<T>> handleServiceCall(final BigInteger connectionID,
+            final Function<BigInteger,Future<RpcResult<F>>> function) {
+        LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
+
+        final RequestContext<T> requestContext = rpcContext.createRequestContext();
+        final SettableFuture<RpcResult<T>> result = rpcContext.storeOrFail(requestContext);
+
+        if (!result.isDone()) {
+            final Future<RpcResult<F>> resultFromOFLib = function.apply(connectionID);
+
+            final RpcResultConvertor<T> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
+            rpcResultConvertor.processResultFromOfJava(resultFromOFLib);
+
+        } else {
+            RequestContextUtil.closeRequstContext(requestContext);
+        }
+        return result;
+    }
+
 }
index 07b3334607139cfa7c0b448b8b23a6ec68b42465..044d2a1d00f2960270bb6b732de6d58d8d861f52 100644 (file)
@@ -7,11 +7,11 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import org.opendaylight.yangtools.yang.binding.DataObject;
-
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.Future;
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
@@ -50,218 +50,201 @@ public class OpendaylightFlowStatisticsServiceImpl extends CommonService impleme
     public Future<RpcResult<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput>> getAggregateFlowStatisticsFromFlowTableForAllFlows(
             final GetAggregateFlowStatisticsFromFlowTableForAllFlowsInput input) {
 
-        final RequestContext<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput>> result = rpcContext
-                .storeOrFail(requestContext);
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-            // Create multipart request body for fetch all the group stats
-            final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
-            final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
-            mprAggregateRequestBuilder.setTableId(input.getTableId().getValue());
-            mprAggregateRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
-            mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
-            mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
-            mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+        return this.<GetAggregateFlowStatisticsFromFlowTableForAllFlowsOutput, Void> handleServiceCall(
+                PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
 
-            FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
 
-            // Set request body to main multipart request
-            multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build());
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
+                        // Create multipart request body for fetch all the group stats
+                        final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
+                        final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
+                        mprAggregateRequestBuilder.setTableId(input.getTableId().getValue());
+                        mprAggregateRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+                        mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+                        mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+                        mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
 
-            mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
+                        FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
 
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
+                        // Set request body to main multipart request
+                        multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder
+                                .build());
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
 
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
+                        mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
 
-            convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
 
-        }
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
 
-        return result;
     }
 
     @Override
     public Future<RpcResult<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput>> getAggregateFlowStatisticsFromFlowTableForGivenMatch(
             final GetAggregateFlowStatisticsFromFlowTableForGivenMatchInput input) {
-        final RequestContext<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput>> result = rpcContext
-                .storeOrFail(requestContext);
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-            final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
-            final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
-            mprAggregateRequestBuilder.setTableId(input.getTableId());
-            mprAggregateRequestBuilder.setOutPort(input.getOutPort().longValue());
-            // TODO: repeating code
-            if (version == OFConstants.OFP_VERSION_1_3) {
-                mprAggregateRequestBuilder.setCookie(input.getCookie().getValue());
-                mprAggregateRequestBuilder.setCookieMask(input.getCookieMask().getValue());
-                mprAggregateRequestBuilder.setOutGroup(input.getOutGroup());
-            } else {
-                mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
-                mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
-                mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
-            }
-
-            MatchReactor.getInstance().convert(input.getMatch(), version, mprAggregateRequestBuilder,
-                    deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
-
-            FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
-
-            // Set request body to main multipart request
-            multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder.build());
-
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
-
-            mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-
-        }
-        return result;
+        return this.<GetAggregateFlowStatisticsFromFlowTableForGivenMatchOutput, Void> handleServiceCall(
+                PRIMARY_CONNECTION, new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+                        final MultipartRequestAggregateCaseBuilder multipartRequestAggregateCaseBuilder = new MultipartRequestAggregateCaseBuilder();
+                        final MultipartRequestAggregateBuilder mprAggregateRequestBuilder = new MultipartRequestAggregateBuilder();
+                        mprAggregateRequestBuilder.setTableId(input.getTableId());
+                        mprAggregateRequestBuilder.setOutPort(input.getOutPort().longValue());
+                        // TODO: repeating code
+                        if (version == OFConstants.OFP_VERSION_1_3) {
+                            mprAggregateRequestBuilder.setCookie(input.getCookie().getValue());
+                            mprAggregateRequestBuilder.setCookieMask(input.getCookieMask().getValue());
+                            mprAggregateRequestBuilder.setOutGroup(input.getOutGroup());
+                        } else {
+                            mprAggregateRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+                            mprAggregateRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+                            mprAggregateRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+                        }
+
+                        MatchReactor.getInstance().convert(input.getMatch(), version, mprAggregateRequestBuilder,
+                                deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
+
+                        FlowCreatorUtil.setWildcardedFlowMatch(version, mprAggregateRequestBuilder);
+
+                        // Set request body to main multipart request
+                        multipartRequestAggregateCaseBuilder.setMultipartRequestAggregate(mprAggregateRequestBuilder
+                                .build());
+
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPAGGREGATE, xid.getValue(), version);
+
+                        mprInput.setMultipartRequestBody(multipartRequestAggregateCaseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
+
     }
 
     @Override
     public Future<RpcResult<GetAllFlowStatisticsFromFlowTableOutput>> getAllFlowStatisticsFromFlowTable(
             final GetAllFlowStatisticsFromFlowTableInput input) {
-
-        final RequestContext<GetAllFlowStatisticsFromFlowTableOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllFlowStatisticsFromFlowTableOutput>> result = rpcContext
-                .storeOrFail(requestContext);
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-
-            final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
-            mprFlowRequestBuilder.setTableId(input.getTableId().getValue());
-            mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
-            mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
-            mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
-            mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
-            FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
-
-            final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
-            multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
-
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPFLOW, xid.getValue(), version);
-
-            mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-
-        }
-        return result;
+        return this.<GetAllFlowStatisticsFromFlowTableOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
+                        mprFlowRequestBuilder.setTableId(input.getTableId().getValue());
+                        mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+                        mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+                        mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+                        mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+                        FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
+
+                        final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+                        multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
+
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPFLOW, xid.getValue(), version);
+
+                        mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
     @Override
     public Future<RpcResult<GetAllFlowsStatisticsFromAllFlowTablesOutput>> getAllFlowsStatisticsFromAllFlowTables(
             final GetAllFlowsStatisticsFromAllFlowTablesInput input) {
-
-        final RequestContext<GetAllFlowsStatisticsFromAllFlowTablesOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllFlowsStatisticsFromAllFlowTablesOutput>> result = rpcContext
-                .storeOrFail(requestContext);
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-
-            final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
-            final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
-            mprFlowRequestBuilder.setTableId(OFConstants.OFPTT_ALL);
-            mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
-            mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
-            mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
-            mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
-            FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
-
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPFLOW, xid.getValue(), version);
-
-            multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
-            mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-        }
-        return result;
+        return this.<GetAllFlowsStatisticsFromAllFlowTablesOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+                        final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
+                        mprFlowRequestBuilder.setTableId(OFConstants.OFPTT_ALL);
+                        mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+                        mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+                        mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+                        mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+                        FlowCreatorUtil.setWildcardedFlowMatch(version, mprFlowRequestBuilder);
+
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPFLOW, xid.getValue(), version);
+
+                        multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
+                        mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
     @Override
     public Future<RpcResult<GetFlowStatisticsFromFlowTableOutput>> getFlowStatisticsFromFlowTable(
             final GetFlowStatisticsFromFlowTableInput input) {
-        final RequestContext<GetFlowStatisticsFromFlowTableOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetFlowStatisticsFromFlowTableOutput>> result = rpcContext
-                .storeOrFail(requestContext);
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-            final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
-            final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
-            mprFlowRequestBuilder.setTableId(input.getTableId());
-
-            if (input.getOutPort() != null) {
-                mprFlowRequestBuilder.setOutPort(input.getOutPort().longValue());
-            } else {
-                mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
-            }
-
-            if (input.getOutGroup() != null) {
-                mprFlowRequestBuilder.setOutGroup(input.getOutGroup());
-            } else {
-                mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
-            }
-
-            if (input.getCookie() != null) {
-                mprFlowRequestBuilder.setCookie(input.getCookie().getValue());
-            } else {
-                mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
-            }
-
-            if (input.getCookieMask() != null) {
-                mprFlowRequestBuilder.setCookieMask(input.getCookieMask().getValue());
-            } else {
-                mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
-            }
-
-            // convert and inject match
-            MatchReactor.getInstance().convert(input.getMatch(), version, mprFlowRequestBuilder,
-                    deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
-
-            // Set request body to main multipart request
-            multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPFLOW, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            convertRpcResultToRequestFuture(requestContext, futureResultFromOfLib);
-
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+        return this.<GetFlowStatisticsFromFlowTableOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+                        final MultipartRequestFlowBuilder mprFlowRequestBuilder = new MultipartRequestFlowBuilder();
+                        mprFlowRequestBuilder.setTableId(input.getTableId());
+
+                        if (input.getOutPort() != null) {
+                            mprFlowRequestBuilder.setOutPort(input.getOutPort().longValue());
+                        } else {
+                            mprFlowRequestBuilder.setOutPort(OFConstants.OFPP_ANY);
+                        }
+
+                        if (input.getOutGroup() != null) {
+                            mprFlowRequestBuilder.setOutGroup(input.getOutGroup());
+                        } else {
+                            mprFlowRequestBuilder.setOutGroup(OFConstants.OFPG_ANY);
+                        }
+
+                        if (input.getCookie() != null) {
+                            mprFlowRequestBuilder.setCookie(input.getCookie().getValue());
+                        } else {
+                            mprFlowRequestBuilder.setCookie(OFConstants.DEFAULT_COOKIE);
+                        }
+
+                        if (input.getCookieMask() != null) {
+                            mprFlowRequestBuilder.setCookieMask(input.getCookieMask().getValue());
+                        } else {
+                            mprFlowRequestBuilder.setCookieMask(OFConstants.DEFAULT_COOKIE_MASK);
+                        }
+
+                        // convert and inject match
+                        MatchReactor.getInstance().convert(input.getMatch(), version, mprFlowRequestBuilder,
+                                deviceContext.getPrimaryConnectionContext().getFeatures().getDatapathId());
+
+                        // Set request body to main multipart request
+                        multipartRequestFlowCaseBuilder.setMultipartRequestFlow(mprFlowRequestBuilder.build());
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPFLOW, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(multipartRequestFlowCaseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
     private <T extends DataObject> void convertRpcResultToRequestFuture(final RequestContext<T> requestContext,
index b7d4c7dab4d31001b54eebc2f984d787fa11efe0..b594778052eed0f42040729153611bea3699a3d4 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.Future;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.GetFlowTablesStatisticsOutput;
@@ -31,37 +30,30 @@ public class OpendaylightFlowTableStatisticsServiceImpl extends CommonService im
     @Override
     public Future<RpcResult<GetFlowTablesStatisticsOutput>> getFlowTablesStatistics(
             final GetFlowTablesStatisticsInput input) {
-        final RequestContext<GetFlowTablesStatisticsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetFlowTablesStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-
-            // Create multipart request body for fetch all the group stats
-            final MultipartRequestTableCaseBuilder multipartRequestTableCaseBuilder = new MultipartRequestTableCaseBuilder();
-            final MultipartRequestTableBuilder multipartRequestTableBuilder = new MultipartRequestTableBuilder();
-            multipartRequestTableBuilder.setEmpty(true);
-            multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build());
-
-            // Set request body to main multipart request
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPFLOW, xid.getValue(), version);
-
-            mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            RpcResultConvertor<GetFlowTablesStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+        return this.<GetFlowTablesStatisticsOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        // Create multipart request body for fetch all the group stats
+                        final MultipartRequestTableCaseBuilder multipartRequestTableCaseBuilder = new MultipartRequestTableCaseBuilder();
+                        final MultipartRequestTableBuilder multipartRequestTableBuilder = new MultipartRequestTableBuilder();
+                        multipartRequestTableBuilder.setEmpty(true);
+                        multipartRequestTableCaseBuilder.setMultipartRequestTable(multipartRequestTableBuilder.build());
+
+                        // Set request body to main multipart request
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPFLOW, xid.getValue(), version);
+
+                        mprInput.setMultipartRequestBody(multipartRequestTableCaseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
 }
index 9ef8bb159da112a445e02c602d7fe4a04756052b..21a4d1f7b90f6815d525c3005e156f749e4e45de 100644 (file)
@@ -7,12 +7,11 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.Future;
 import org.opendaylight.openflowjava.protocol.api.util.BinContent;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GetAllGroupStatisticsOutput;
@@ -39,129 +38,102 @@ public class OpendaylightGroupStatisticsServiceImpl extends CommonService implem
 
     @Override
     public Future<RpcResult<GetAllGroupStatisticsOutput>> getAllGroupStatistics(final GetAllGroupStatisticsInput input) {
+        return this.<GetAllGroupStatisticsOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
 
-        final RequestContext<GetAllGroupStatisticsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllGroupStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
 
-        if (!result.isDone()) {
+                        final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
+                        final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
+                        mprGroupBuild.setGroupId(new GroupId(
+                                BinContent
+                                        .intToUnsignedLong(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Group.OFPGALL
+                                                .getIntValue())));
+                        caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
 
-            final Xid xid = deviceContext.getNextXid();
+                        // Create multipart request header
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPGROUP, xid.getValue(), version);
 
-            final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
-            final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
-            mprGroupBuild
-                    .setGroupId(new GroupId(
-                            BinContent
-                                    .intToUnsignedLong(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Group.OFPGALL
-                                            .getIntValue())));
-            caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
+                        // Set request body to main multipart request
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
 
-            // Create multipart request header
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPGROUP, xid.getValue(), version);
+                        // Send the request, no cookies associated, use any connection
 
-            // Set request body to main multipart request
-            mprInput.setMultipartRequestBody(caseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
 
-            // Send the request, no cookies associated, use any connection
-
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetAllGroupStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
     }
 
     @Override
     public Future<RpcResult<GetGroupDescriptionOutput>> getGroupDescription(final GetGroupDescriptionInput input) {
+        return this.<GetGroupDescriptionOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+                        final MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = new MultipartRequestGroupDescCaseBuilder();
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPGROUPDESC, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
 
-        final RequestContext<GetGroupDescriptionOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetGroupDescriptionOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-            final MultipartRequestGroupDescCaseBuilder mprGroupDescCaseBuild = new MultipartRequestGroupDescCaseBuilder();
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPGROUPDESC, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(mprGroupDescCaseBuild.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetGroupDescriptionOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
     }
 
     @Override
     public Future<RpcResult<GetGroupFeaturesOutput>> getGroupFeatures(final GetGroupFeaturesInput input) {
+        return this.<GetGroupFeaturesOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        final MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = new MultipartRequestGroupFeaturesCaseBuilder();
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPGROUPFEATURES, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
 
-        final RequestContext<GetGroupFeaturesOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetGroupFeaturesOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-
-            final MultipartRequestGroupFeaturesCaseBuilder mprGroupFeaturesBuild = new MultipartRequestGroupFeaturesCaseBuilder();
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPGROUPFEATURES, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(mprGroupFeaturesBuild.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetGroupFeaturesOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
     }
 
     @Override
     public Future<RpcResult<GetGroupStatisticsOutput>> getGroupStatistics(final GetGroupStatisticsInput input) {
-
-        final RequestContext<GetGroupStatisticsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetGroupStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-
-            final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
-            final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
-            mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue()));
-            caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
-
-            final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
-                    MultipartType.OFPMPGROUP, xid.getValue(), version);
-
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            final ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetGroupStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+        return this.<GetGroupStatisticsOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        final MultipartRequestGroupCaseBuilder caseBuilder = new MultipartRequestGroupCaseBuilder();
+                        final MultipartRequestGroupBuilder mprGroupBuild = new MultipartRequestGroupBuilder();
+                        mprGroupBuild.setGroupId(new GroupId(input.getGroupId().getValue()));
+                        caseBuilder.setMultipartRequestGroup(mprGroupBuild.build());
+
+                        final MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPGROUP, xid.getValue(), version);
+
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        final Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
 }
index 66461e433f1cd35146ea49e1940e90b347e859a7..b72674f123c567f7652264e004b4a04a97b1f4a9 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import com.google.common.util.concurrent.JdkFutureAdapters;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
@@ -42,38 +44,32 @@ public class OpendaylightMeterStatisticsServiceImpl extends CommonService implem
     @Override
     public Future<RpcResult<GetAllMeterConfigStatisticsOutput>> getAllMeterConfigStatistics(
             final GetAllMeterConfigStatisticsInput input) {
+        return this
+                .<GetAllMeterConfigStatisticsOutput, Void> handleServiceCall(
+                        PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestMeterConfigCaseBuilder caseBuilder =
+                                new MultipartRequestMeterConfigCaseBuilder();
+                        MultipartRequestMeterConfigBuilder mprMeterConfigBuild =
+                                new MultipartRequestMeterConfigBuilder();
+                        mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
+                                org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
+                                .types.rev130731.Meter.OFPMALL.getIntValue())));
+                        caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
+
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils
+                                .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext
+                                .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters
+                                .listenInPoolThread(resultFromOFLib);
+                    }});
 
-        final RequestContext<GetAllMeterConfigStatisticsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllMeterConfigStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-
-            final Xid xid = deviceContext.getNextXid();
-
-            MultipartRequestMeterConfigCaseBuilder caseBuilder =
-                    new MultipartRequestMeterConfigCaseBuilder();
-            MultipartRequestMeterConfigBuilder mprMeterConfigBuild =
-                    new MultipartRequestMeterConfigBuilder();
-            mprMeterConfigBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
-                    org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
-                            .types.rev130731.Meter.OFPMALL.getIntValue())));
-            caseBuilder.setMultipartRequestMeterConfig(mprMeterConfigBuild.build());
-
-            MultipartRequestInputBuilder mprInput = RequestInputUtils
-                    .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext
-                    .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters
-                    .listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetAllMeterConfigStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
     }
 
     @Override
index 2271a499613065f7896ae34efd8e682caca47c69..99e67dfb6bd9c3842b98e5d777707ae97b467c69 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import org.opendaylight.openflowplugin.api.OFConstants;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
@@ -35,70 +34,61 @@ public class OpendaylightPortStatisticsServiceImpl extends CommonService impleme
     @Override
     public Future<RpcResult<GetAllNodeConnectorsStatisticsOutput>> getAllNodeConnectorsStatistics(
             final GetAllNodeConnectorsStatisticsInput input) {
-        final RequestContext<GetAllNodeConnectorsStatisticsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllNodeConnectorsStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
+        return this
+                .<GetAllNodeConnectorsStatisticsOutput, Void> handleServiceCall(
+                        PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
 
-        if (!result.isDone()) {
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
 
-            final Xid xid = deviceContext.getNextXid();
+                        MultipartRequestPortStatsCaseBuilder caseBuilder =
+                                new MultipartRequestPortStatsCaseBuilder();
+                        MultipartRequestPortStatsBuilder mprPortStatsBuilder =
+                                new MultipartRequestPortStatsBuilder();
+                        // Select all ports
+                        mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
+                        caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
 
-            MultipartRequestPortStatsCaseBuilder caseBuilder =
-                    new MultipartRequestPortStatsCaseBuilder();
-            MultipartRequestPortStatsBuilder mprPortStatsBuilder =
-                    new MultipartRequestPortStatsBuilder();
-            // Select all ports
-            mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
-            caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
-
-            MultipartRequestInputBuilder mprInput = RequestInputUtils
-                    .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext
-                    .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetAllNodeConnectorsStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.<Void>processResultFromOfJava(futureResultFromOfLib);
-
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils
+                                .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext
+                                .getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }});
     }
 
     @Override
     public Future<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(
             final GetNodeConnectorStatisticsInput input) {
-        final RequestContext<GetNodeConnectorStatisticsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetNodeConnectorStatisticsOutput>> result = rpcContext.storeOrFail(requestContext);
+        return this
+                .<GetNodeConnectorStatisticsOutput, Void> handleServiceCall(
+                        PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
 
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
 
-            MultipartRequestPortStatsCaseBuilder caseBuilder =
-                    new MultipartRequestPortStatsCaseBuilder();
-            MultipartRequestPortStatsBuilder mprPortStatsBuilder =
-                    new MultipartRequestPortStatsBuilder();
-            // Set specific port
-            mprPortStatsBuilder
-                    .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
-                            OpenflowVersion.get(version),
-                            input.getNodeConnectorId()));
-            caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
+                        MultipartRequestPortStatsCaseBuilder caseBuilder =
+                                new MultipartRequestPortStatsCaseBuilder();
+                        MultipartRequestPortStatsBuilder mprPortStatsBuilder =
+                                new MultipartRequestPortStatsBuilder();
+                        // Set specific port
+                        mprPortStatsBuilder
+                        .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+                                OpenflowVersion.get(version),
+                                input.getNodeConnectorId()));
+                        caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
 
-            MultipartRequestInputBuilder mprInput = RequestInputUtils
-                    .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils
+                                .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }});
 
-            final RpcResultConvertor<GetNodeConnectorStatisticsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
     }
 
 }
index d66e2522461ca310ffb6b6767ff2210c96b6a163..eddab61b29a7665c01112ca7e39c6691ff1d52b7 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.openflowplugin.impl.services;
 
+import com.google.common.base.Function;
+import java.math.BigInteger;
 import com.google.common.util.concurrent.JdkFutureAdapters;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
 import org.opendaylight.openflowplugin.api.OFConstants;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.Xid;
 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
@@ -34,105 +33,96 @@ import java.util.concurrent.Future;
  */
 public class OpendaylightQueueStatisticsServiceImpl extends CommonService implements OpendaylightQueueStatisticsService {
 
-
     @Override
     public Future<RpcResult<GetAllQueuesStatisticsFromAllPortsOutput>> getAllQueuesStatisticsFromAllPorts(
             final GetAllQueuesStatisticsFromAllPortsInput input) {
-        final RequestContext<GetAllQueuesStatisticsFromAllPortsOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllQueuesStatisticsFromAllPortsOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-            MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
-            MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
-            // Select all ports
-            mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
-            // Select all the ports
-            mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
-            caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
-            // Set request body to main multipart request
-            MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetAllQueuesStatisticsFromAllPortsOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+        return this.<GetAllQueuesStatisticsFromAllPortsOutput, Void> handleServiceCall(
+                PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+                        MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+                        // Select all ports
+                        mprQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
+                        // Select all the ports
+                        mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
+                        caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+                        // Set request body to main multipart request
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPQUEUE, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
+
     }
 
     @Override
     public Future<RpcResult<GetAllQueuesStatisticsFromGivenPortOutput>> getAllQueuesStatisticsFromGivenPort(
             final GetAllQueuesStatisticsFromGivenPortInput input) {
-        final RequestContext<GetAllQueuesStatisticsFromGivenPortOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetAllQueuesStatisticsFromGivenPortOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-
-            MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
-            MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
-            // Select all queues
-            mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
-            // Select specific port
-            mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
-                    OpenflowVersion.get(version),
-                    input.getNodeConnectorId()));
-            caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
-            // Set request body to main multipart request
-            MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetAllQueuesStatisticsFromGivenPortOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+        return this.<GetAllQueuesStatisticsFromGivenPortOutput, Void> handleServiceCall(
+                 PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+                        MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+                        // Select all queues
+                        mprQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
+                        // Select specific port
+                        mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+                                OpenflowVersion.get(version), input.getNodeConnectorId()));
+                        caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+                        // Set request body to main multipart request
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPQUEUE, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+
+                    }
+                });
     }
 
     @Override
     public Future<RpcResult<GetQueueStatisticsFromGivenPortOutput>> getQueueStatisticsFromGivenPort(
             final GetQueueStatisticsFromGivenPortInput input) {
-        final RequestContext<GetQueueStatisticsFromGivenPortOutput> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<GetQueueStatisticsFromGivenPortOutput>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Xid xid = deviceContext.getNextXid();
-
-            MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
-            MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
-            // Select specific queue
-            mprQueueBuilder.setQueueId(input.getQueueId().getValue());
-            // Select specific port
-            mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
-                    OpenflowVersion.get(version),
-                    input.getNodeConnectorId()));
-            caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
-
-            // Set request body to main multipart request
-            MultipartRequestInputBuilder mprInput = RequestInputUtils
-                    .createMultipartHeader(MultipartType.OFPMPQUEUE, xid.getValue(), version);
-            mprInput.setMultipartRequestBody(caseBuilder.build());
-            Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
-                    .getConnectionAdapter().multipartRequest(mprInput.build());
-            ListenableFuture<RpcResult<Void>> futureResultFromOfLib = JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
-
-            final RpcResultConvertor<GetQueueStatisticsFromGivenPortOutput> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(futureResultFromOfLib);
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
+        return this.<GetQueueStatisticsFromGivenPortOutput, Void> handleServiceCall(
+                PRIMARY_CONNECTION,  new Function<BigInteger, Future<RpcResult<Void>>>() {
+
+                    @Override
+                    public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
+                        final Xid xid = deviceContext.getNextXid();
+
+                        MultipartRequestQueueCaseBuilder caseBuilder = new MultipartRequestQueueCaseBuilder();
+                        MultipartRequestQueueBuilder mprQueueBuilder = new MultipartRequestQueueBuilder();
+                        // Select specific queue
+                        mprQueueBuilder.setQueueId(input.getQueueId().getValue());
+                        // Select specific port
+                        mprQueueBuilder.setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
+                                OpenflowVersion.get(version), input.getNodeConnectorId()));
+                        caseBuilder.setMultipartRequestQueue(mprQueueBuilder.build());
+
+                        // Set request body to main multipart request
+                        MultipartRequestInputBuilder mprInput = RequestInputUtils.createMultipartHeader(
+                                MultipartType.OFPMPQUEUE, xid.getValue(), version);
+                        mprInput.setMultipartRequestBody(caseBuilder.build());
+                        Future<RpcResult<Void>> resultFromOFLib = deviceContext.getPrimaryConnectionContext()
+                                .getConnectionAdapter().multipartRequest(mprInput.build());
+                        return JdkFutureAdapters.listenInPoolThread(resultFromOFLib);
+                    }
+                });
     }
 
 }
index 1447e261822b7cb83a5a90b6fc166cb15dde5982..bd034c9da24510b064a9d8d021b1866d1a1c39cc 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- * 
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
@@ -19,6 +19,7 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 public class PacketProcessingServiceImpl extends CommonService implements PacketProcessingService {
 
     @Override
+    //TODO this implementation is incorrect. Handling of exceptional states as in ServiceCallProcessingUtil.handleServiceCall() is missing
     public Future<RpcResult<Void>> transmitPacket(final TransmitPacketInput input) {
         final PacketOutInput message = PacketOutConvertor.toPacketOutInput(input, version, deviceContext.getNextXid()
                 .getValue(), datapathId);
index c1b13032ab77d0de976cfc6bb388fce0d411f9dc..fcf0dd43d3a2b2d08fa4c4e1e69f8e39bc322c40 100644 (file)
@@ -47,8 +47,8 @@ public class SalFlowServiceImpl extends CommonService implements SalFlowService
 
     @Override
     public Future<RpcResult<AddFlowOutput>> addFlow(final AddFlowInput input) {
-        return ServiceCallProcessingUtil.<AddFlowOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION, deviceContext,
-                 new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<AddFlowOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
                     @Override
                     public ListenableFuture<RpcResult<Void>> apply(final BigInteger IDConnection) {
                         final List<FlowModInputBuilder> ofFlowModInputs = FlowConvertor.toFlowModInputs(input, version,
@@ -60,8 +60,8 @@ public class SalFlowServiceImpl extends CommonService implements SalFlowService
 
     @Override
     public Future<RpcResult<RemoveFlowOutput>> removeFlow(final RemoveFlowInput input) {
-        return ServiceCallProcessingUtil.<RemoveFlowOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION, deviceContext,
-                new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<RemoveFlowOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
                         final FlowModInputBuilder ofFlowModInput = FlowConvertor.toFlowModInput(input, version,
@@ -98,8 +98,8 @@ public class SalFlowServiceImpl extends CommonService implements SalFlowService
         allFlowMods.addAll(ofFlowModInputs);
         LOG.debug("Number of flows to push to switch: {}", allFlowMods.size());
         Collections.<String> emptyList();
-        return ServiceCallProcessingUtil.<UpdateFlowOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION, deviceContext,
-                new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<UpdateFlowOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger cookie) {
                         return chainFlowMods(allFlowMods, 0, cookie);
index c0050c3c24160b6778901d1158d7eb4dfe3c9662..fd195735d75a940d7b31c1ffe9b92a2dc42a69bb 100644 (file)
@@ -30,8 +30,8 @@ public class SalGroupServiceImpl extends CommonService implements SalGroupServic
 
     @Override
     public Future<RpcResult<AddGroupOutput>> addGroup(final AddGroupInput input) {
-        return ServiceCallProcessingUtil.<AddGroupOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<AddGroupOutput, Void> handleServiceCall( PRIMARY_CONNECTION,
+                 new Function<BigInteger,Future<RpcResult<Void>>>() {
 
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
@@ -42,8 +42,8 @@ public class SalGroupServiceImpl extends CommonService implements SalGroupServic
 
     @Override
     public Future<RpcResult<UpdateGroupOutput>> updateGroup(final UpdateGroupInput input) {
-        return ServiceCallProcessingUtil.<UpdateGroupOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<UpdateGroupOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
 
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
@@ -54,8 +54,8 @@ public class SalGroupServiceImpl extends CommonService implements SalGroupServic
 
     @Override
     public Future<RpcResult<RemoveGroupOutput>> removeGroup(final RemoveGroupInput input) {
-        return ServiceCallProcessingUtil.<RemoveGroupOutput, Void> handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<RemoveGroupOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
 
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
index e21a9720d8a048ef0110787cbaa9a1605a8cbc1f..44a94deb4d4473d30f409c159b03879c2b51b296 100644 (file)
@@ -29,8 +29,8 @@ public class SalMeterServiceImpl extends CommonService implements SalMeterServic
 
     @Override
     public Future<RpcResult<AddMeterOutput>> addMeter(final AddMeterInput input) {
-        return ServiceCallProcessingUtil.<AddMeterOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<AddMeterOutput, Void>handleServiceCall( PRIMARY_CONNECTION,
+                 new Function<BigInteger,Future<RpcResult<Void>>>() {
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
                         return convertAndSend(input, IDConnection);
@@ -40,8 +40,8 @@ public class SalMeterServiceImpl extends CommonService implements SalMeterServic
 
     @Override
     public Future<RpcResult<UpdateMeterOutput>> updateMeter(final UpdateMeterInput input) {
-        return ServiceCallProcessingUtil.<UpdateMeterOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<UpdateMeterOutput, Void>handleServiceCall( PRIMARY_CONNECTION,
+                 new Function<BigInteger,Future<RpcResult<Void>>>() {
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
                         return convertAndSend(input.getUpdatedMeter(), IDConnection);
@@ -51,8 +51,8 @@ public class SalMeterServiceImpl extends CommonService implements SalMeterServic
 
     @Override
     public Future<RpcResult<RemoveMeterOutput>> removeMeter(final RemoveMeterInput input) {
-        return ServiceCallProcessingUtil.<RemoveMeterOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<RemoveMeterOutput, Void>handleServiceCall( PRIMARY_CONNECTION,
+                 new Function<BigInteger,Future<RpcResult<Void>>>() {
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
                         return convertAndSend(input, IDConnection);
index ffb4c0d4c707928bb872c6fd01e5a70bdbdfcd22..37795a5e06a06be8cc66dd2b9a8bc168964ecf26 100644 (file)
@@ -26,8 +26,8 @@ public class SalPortServiceImpl extends CommonService implements SalPortService
 
     @Override
     public Future<RpcResult<UpdatePortOutput>> updatePort(final UpdatePortInput input) {
-        return ServiceCallProcessingUtil.<UpdatePortOutput, Void>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new Function<BigInteger,Future<RpcResult<Void>>>() {
+        return this.<UpdatePortOutput, Void> handleServiceCall(PRIMARY_CONNECTION,
+                new Function<BigInteger, Future<RpcResult<Void>>>() {
                     @Override
                     public Future<RpcResult<Void>> apply(final BigInteger IDConnection) {
                         final Port inputPort = input.getUpdatedPort().getPort().getPort().get(0);
index 9731dce9b5d4516cce4f452301a19f3f851c9a70..0d403b2f514ab8a126703b85758efe24b3f7a4ed 100644 (file)
@@ -83,8 +83,8 @@ public class SalTableServiceImpl extends CommonService implements SalTableServic
             }
         }
 
-        return ServiceCallProcessingUtil.<UpdateTableOutput, UpdateTableOutput>handleServiceCall(rpcContext, PRIMARY_CONNECTION,
-                deviceContext, new FunctionImpl());
+        return this.<UpdateTableOutput, UpdateTableOutput>handleServiceCall( PRIMARY_CONNECTION,
+                 new FunctionImpl());
     }
 
     private MultipartRequestInputBuilder createMultipartHeader(final MultipartType multipart, final Long xid) {
diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/ServiceCallProcessingUtil.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/ServiceCallProcessingUtil.java
deleted file mode 100644 (file)
index 72d3294..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.openflowplugin.impl.services;
-
-import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
-
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.SettableFuture;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
-import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.slf4j.Logger;
-import java.math.BigInteger;
-import java.util.concurrent.Future;
-
-/**
- * @author joe
- *
- */
-public class ServiceCallProcessingUtil {
-
-    private static final Logger LOG = org.slf4j.LoggerFactory.getLogger(ServiceCallProcessingUtil.class);
-
-    static <T extends DataObject, F>  Future<RpcResult<T>> handleServiceCall(final RpcContext rpcContext,
-final BigInteger connectionID, final DeviceContext deviceContext, final Function<BigInteger,Future<RpcResult<F>>> function) {
-        LOG.debug("Calling the FlowMod RPC method on MessageDispatchService");
-        // use primary connection
-
-        final RequestContext<T> requestContext = rpcContext.createRequestContext();
-        final SettableFuture<RpcResult<T>> result = rpcContext.storeOrFail(requestContext);
-
-        if (!result.isDone()) {
-            final Future<RpcResult<F>> resultFromOFLib = function.apply(connectionID);
-
-            final RpcResultConvertor<T> rpcResultConvertor = new RpcResultConvertor<>(requestContext, deviceContext);
-            rpcResultConvertor.processResultFromOfJava(resultFromOFLib);
-
-        } else {
-            RequestContextUtil.closeRequstContext(requestContext);
-        }
-        return result;
-    }
-}