Simplify CommonService interface
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / statistics / services / OpendaylightMeterStatisticsServiceImpl.java
index 4c1c4d0ced1890b2786652446cbc936e1d9693fc..ecee95ef785df4229edf5bcafe0ee42c70996a36 100644 (file)
@@ -7,17 +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.openflowjava.protocol.api.util.BinContent;
 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.impl.services.CommonService;
-import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
-import org.opendaylight.openflowplugin.impl.util.StatisticsServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterStatisticsInput;
@@ -27,127 +19,39 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetMeterStatisticsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.OpendaylightMeterStatisticsService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
-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.MultipartRequestMeterCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeterBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfigBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
-/**
- * @author joe
- */
-public class OpendaylightMeterStatisticsServiceImpl extends CommonService implements OpendaylightMeterStatisticsService {
-
-
-    public OpendaylightMeterStatisticsServiceImpl(final RequestContextStack requestContextStack, DeviceContext deviceContext) {
-        super(requestContextStack, deviceContext);
+public class OpendaylightMeterStatisticsServiceImpl implements OpendaylightMeterStatisticsService {
+    private final AllMeterConfigStatsService allMeterConfig;
+    private final AllMeterStatsService allMeterStats;
+    private final MeterFeaturesService meterFeatures;
+    private final MeterStatsService meterStats;
+
+    public OpendaylightMeterStatisticsServiceImpl(final RequestContextStack requestContextStack, final DeviceContext deviceContext) {
+        allMeterConfig = new AllMeterConfigStatsService(requestContextStack, deviceContext);
+        allMeterStats = new AllMeterStatsService(requestContextStack, deviceContext);
+        meterFeatures = new MeterFeaturesService(requestContextStack, deviceContext);
+        meterStats = new MeterStatsService(requestContextStack, deviceContext);
     }
 
     @Override
     public Future<RpcResult<GetAllMeterConfigStatisticsOutput>> getAllMeterConfigStatistics(
             final GetAllMeterConfigStatisticsInput input) {
-        return handleServiceCall(new Function<RequestContext<GetAllMeterConfigStatisticsOutput>,
-                ListenableFuture<RpcResult<GetAllMeterConfigStatisticsOutput>>>() {
-
-                    @Override
-                    public ListenableFuture<RpcResult<GetAllMeterConfigStatisticsOutput>> apply(final RequestContext<GetAllMeterConfigStatisticsOutput> requestContext) {
-
-                        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());
-
-                        final Xid xid = requestContext.getXid();
-                        MultipartRequestInputBuilder mprInput = RequestInputUtils
-                                .createMultipartHeader(MultipartType.OFPMPMETERCONFIG, xid.getValue(), getVersion());
-                        mprInput.setMultipartRequestBody(caseBuilder.build());
-                        MultipartRequestInput multipartRequestInput = mprInput.build();
-                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
-                    }
-                });
-
+        return allMeterConfig.handleServiceCall(input);
     }
 
     @Override
     public Future<RpcResult<GetAllMeterStatisticsOutput>> getAllMeterStatistics(final GetAllMeterStatisticsInput input) {
-
-        return handleServiceCall(
-                new Function<RequestContext<GetAllMeterStatisticsOutput>, ListenableFuture<RpcResult<GetAllMeterStatisticsOutput>>>() {
-                    @Override
-                    public ListenableFuture<RpcResult<GetAllMeterStatisticsOutput>> apply(final RequestContext<GetAllMeterStatisticsOutput> requestContext) {
-
-                        MultipartRequestMeterCaseBuilder caseBuilder =
-                                new MultipartRequestMeterCaseBuilder();
-                        MultipartRequestMeterBuilder mprMeterBuild =
-                                new MultipartRequestMeterBuilder();
-                        mprMeterBuild.setMeterId(new MeterId(BinContent.intToUnsignedLong(
-                                org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
-                                        .types.rev130731.Meter.OFPMALL.getIntValue())));
-                        caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
-
-                        final Xid xid = requestContext.getXid();
-                        MultipartRequestInputBuilder mprInput = RequestInputUtils
-                                .createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion());
-                        mprInput.setMultipartRequestBody(caseBuilder.build());
-                        MultipartRequestInput multipartRequestInput = mprInput.build();
-                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
-                    }
-                }
-        );
-
+        return allMeterStats.handleServiceCall(input);
     }
 
     @Override
     public Future<RpcResult<GetMeterFeaturesOutput>> getMeterFeatures(final GetMeterFeaturesInput input) {
-        return handleServiceCall(
-                new Function<RequestContext<GetMeterFeaturesOutput>, ListenableFuture<RpcResult<GetMeterFeaturesOutput>>>() {
-                    @Override
-                    public ListenableFuture<RpcResult<GetMeterFeaturesOutput>> apply(final RequestContext<GetMeterFeaturesOutput> requestContext) {
-
-                        MultipartRequestMeterFeaturesCaseBuilder mprMeterFeaturesBuild =
-                                new MultipartRequestMeterFeaturesCaseBuilder();
-
-                        final Xid xid = requestContext.getXid();
-                        MultipartRequestInputBuilder mprInput =
-                                RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETERFEATURES, xid.getValue(), getVersion());
-                        mprInput.setMultipartRequestBody(mprMeterFeaturesBuild.build());
-                        MultipartRequestInput multipartRequestInput = mprInput.build();
-                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
-                    }
-                });
+        return meterFeatures.handleServiceCall(input);
     }
 
     @Override
     public Future<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(final GetMeterStatisticsInput input) {
-        return handleServiceCall(
-                new Function<RequestContext<GetMeterStatisticsOutput>, ListenableFuture<RpcResult<GetMeterStatisticsOutput>>>() {
-                    @Override
-                    public ListenableFuture<RpcResult<GetMeterStatisticsOutput>> apply(final RequestContext<GetMeterStatisticsOutput> requestContext) {
-                        MultipartRequestMeterCaseBuilder caseBuilder =
-                                new MultipartRequestMeterCaseBuilder();
-                        MultipartRequestMeterBuilder mprMeterBuild =
-                                new MultipartRequestMeterBuilder();
-                        mprMeterBuild.setMeterId(new MeterId(input.getMeterId().getValue()));
-                        caseBuilder.setMultipartRequestMeter(mprMeterBuild.build());
-
-                        final Xid xid = requestContext.getXid();
-                        MultipartRequestInputBuilder mprInput =
-                                RequestInputUtils.createMultipartHeader(MultipartType.OFPMPMETER, xid.getValue(), getVersion());
-                        mprInput.setMultipartRequestBody(caseBuilder.build());
-                        MultipartRequestInput multipartRequestInput = mprInput.build();
-                        return StatisticsServiceUtil.getRpcResultListenableFuture(xid, multipartRequestInput, getDeviceContext());
-                    }
-                });
-
+        return meterStats.handleServiceCall(input);
     }
-
 }