Simplify CommonService interface
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / services / OpendaylightPortStatisticsServiceImpl.java
index fed18d7f6dd8e6e3d4eff7bee84773e88f030445..4258c01331901e7d3b16bde9a331580a7ac6ba69 100644 (file)
@@ -7,24 +7,9 @@
  */
 package org.opendaylight.openflowplugin.impl.statistics.services;
 
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.Future;
-import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
-import org.opendaylight.openflowplugin.api.openflow.device.RequestContext;
 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
-import org.opendaylight.openflowplugin.api.openflow.device.Xid;
-import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
-import org.opendaylight.openflowplugin.impl.services.CommonService;
-import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
-import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
-import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStatsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetAllNodeConnectorsStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.GetNodeConnectorStatisticsInput;
@@ -32,74 +17,24 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.G
 import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.OpendaylightPortStatisticsService;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
-/**
- * @author joe
- */
-public class OpendaylightPortStatisticsServiceImpl extends CommonService implements OpendaylightPortStatisticsService {
+public class OpendaylightPortStatisticsServiceImpl implements OpendaylightPortStatisticsService {
+    private final AllPortStatsService allPortStats;
+    private final PortStatsService portStats;
 
-    public OpendaylightPortStatisticsServiceImpl(final RequestContextStack requestContextStack, DeviceContext deviceContext) {
-        super(requestContextStack, deviceContext);
+    public OpendaylightPortStatisticsServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) {
+        allPortStats = new AllPortStatsService(requestContextStack, deviceContext);
+        portStats = new PortStatsService(requestContextStack, deviceContext);
     }
 
     @Override
     public Future<RpcResult<GetAllNodeConnectorsStatisticsOutput>> getAllNodeConnectorsStatistics(
             final GetAllNodeConnectorsStatisticsInput input) {
-        return handleServiceCall(
-                        new Function<RequestContext<GetAllNodeConnectorsStatisticsOutput>,
-                        ListenableFuture<RpcResult<GetAllNodeConnectorsStatisticsOutput>>>() {
-
-                            @Override
-                            public ListenableFuture<RpcResult<GetAllNodeConnectorsStatisticsOutput>> apply(final RequestContext<GetAllNodeConnectorsStatisticsOutput> requestContext) {
-
-                                MultipartRequestPortStatsCaseBuilder caseBuilder =
-                                        new MultipartRequestPortStatsCaseBuilder();
-                                MultipartRequestPortStatsBuilder mprPortStatsBuilder =
-                                        new MultipartRequestPortStatsBuilder();
-                                // Select all ports
-                                mprPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
-                                caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
-
-                                final Xid xid = requestContext.getXid();
-                                MultipartRequestInputBuilder mprInput = RequestInputUtils
-                                        .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), getVersion());
-                                mprInput.setMultipartRequestBody(caseBuilder.build());
-                                MultipartRequestInput multipartRequestInput = mprInput.build();
-                                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
-                            }
-                        });
+        return allPortStats.handleServiceCall(input);
     }
 
     @Override
     public Future<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(
             final GetNodeConnectorStatisticsInput input) {
-        return handleServiceCall(
-                        new Function<RequestContext<GetNodeConnectorStatisticsOutput>,
-                        ListenableFuture<RpcResult<GetNodeConnectorStatisticsOutput>>>() {
-
-                            @Override
-                            public ListenableFuture<RpcResult<GetNodeConnectorStatisticsOutput>> apply(final RequestContext<GetNodeConnectorStatisticsOutput> requestContext) {
-
-                                MultipartRequestPortStatsCaseBuilder caseBuilder =
-                                        new MultipartRequestPortStatsCaseBuilder();
-                                MultipartRequestPortStatsBuilder mprPortStatsBuilder =
-                                        new MultipartRequestPortStatsBuilder();
-                                // Set specific port
-                                final short version = getVersion();
-                                mprPortStatsBuilder
-                                        .setPortNo(InventoryDataServiceUtil.portNumberfromNodeConnectorId(
-                                                OpenflowVersion.get(version),
-                                                input.getNodeConnectorId()));
-                                caseBuilder.setMultipartRequestPortStats(mprPortStatsBuilder.build());
-
-                                final Xid xid = requestContext.getXid();
-                                MultipartRequestInputBuilder mprInput = RequestInputUtils
-                                        .createMultipartHeader(MultipartType.OFPMPPORTSTATS, xid.getValue(), version);
-                                mprInput.setMultipartRequestBody(caseBuilder.build());
-                                MultipartRequestInput multipartRequestInput = mprInput.build();
-                                return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
-                            }
-                        });
-
+        return portStats.handleServiceCall(input);
     }
-
 }