X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fimpl%2Fstatistics%2Fservices%2Fdirect%2FOpendaylightDirectStatisticsServiceImpl.java;h=5b4ef7879ef0046e20b7bf93f767f3dea570ecfa;hb=73776c548ab153dee35ca4165ca0ef2413969704;hp=b96ae21ec102bc81bc997823ff2a73253f134ff8;hpb=18dc690ea2106eea6c2111d998581e8ded03231c;p=openflowplugin.git diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/OpendaylightDirectStatisticsServiceImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/OpendaylightDirectStatisticsServiceImpl.java index b96ae21ec1..5b4ef7879e 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/OpendaylightDirectStatisticsServiceImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/services/direct/OpendaylightDirectStatisticsServiceImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.impl.statistics.services.direct; +import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetFlowStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetGroupStatisticsInput; @@ -20,13 +21,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511 import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetQueueStatisticsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.OpendaylightDirectStatisticsService; import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.common.RpcError; +import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; -import java.util.Optional; -import java.util.concurrent.Future; - /** * The Opendaylight direct statistics service. * This service handles RPC requests, sends them to registered handlers and returns their replies. @@ -44,63 +42,49 @@ public class OpendaylightDirectStatisticsServiceImpl implements OpendaylightDire } @Override - public Future> getGroupStatistics(GetGroupStatisticsInput input) { - final Optional service = provider.lookup(GroupDirectStatisticsService.class); - - if (!service.isPresent()) { - return missingImplementation(GroupDirectStatisticsService.class); - } - - return service.get().handleAndReply(input); + @SuppressWarnings("unchecked") + public ListenableFuture> getGroupStatistics(GetGroupStatisticsInput input) { + return provider.lookup(AbstractGroupDirectStatisticsService.class) + .map(service -> service.handleAndReply(input)) + .orElse(missingImplementation(AbstractGroupDirectStatisticsService.class)); } @Override - public Future> getQueueStatistics(GetQueueStatisticsInput input) { - final Optional service = provider.lookup(QueueDirectStatisticsService.class); - - if (!service.isPresent()) { - return missingImplementation(QueueDirectStatisticsService.class); - } - - return service.get().handleAndReply(input); + @SuppressWarnings("unchecked") + public ListenableFuture> getQueueStatistics(GetQueueStatisticsInput input) { + return provider.lookup(AbstractQueueDirectStatisticsService.class) + .map(service -> service.handleAndReply(input)) + .orElse(missingImplementation(AbstractQueueDirectStatisticsService.class)); } @Override - public Future> getFlowStatistics(GetFlowStatisticsInput input) { - final Optional service = provider.lookup(FlowDirectStatisticsService.class); - - if (!service.isPresent()) { - return missingImplementation(FlowDirectStatisticsService.class); - } - - return service.get().handleAndReply(input); + @SuppressWarnings("unchecked") + public ListenableFuture> getFlowStatistics(GetFlowStatisticsInput input) { + return provider.lookup(AbstractFlowDirectStatisticsService.class) + .map(service -> service.handleAndReply(input)) + .orElse(missingImplementation(AbstractFlowDirectStatisticsService.class)); } @Override - public Future> getMeterStatistics(GetMeterStatisticsInput input) { - final Optional service = provider.lookup(MeterDirectStatisticsService.class); - - if (!service.isPresent()) { - return missingImplementation(MeterDirectStatisticsService.class); - } - - return service.get().handleAndReply(input); + @SuppressWarnings("unchecked") + public ListenableFuture> getMeterStatistics(GetMeterStatisticsInput input) { + return provider.lookup(AbstractMeterDirectStatisticsService.class) + .map(service -> service.handleAndReply(input)) + .orElse(missingImplementation(AbstractMeterDirectStatisticsService.class)); } @Override - public Future> getNodeConnectorStatistics(GetNodeConnectorStatisticsInput input) { - final Optional service = provider.lookup(NodeConnectorDirectStatisticsService.class); - - if (!service.isPresent()) { - return missingImplementation(NodeConnectorDirectStatisticsService.class); - } - - return service.get().handleAndReply(input); + @SuppressWarnings("unchecked") + public ListenableFuture> + getNodeConnectorStatistics(GetNodeConnectorStatisticsInput input) { + return provider.lookup(AbstractPortDirectStatisticsService.class) + .map(service -> service.handleAndReply(input)) + .orElse(missingImplementation(AbstractPortDirectStatisticsService.class)); } - private Future> missingImplementation(Class service) { + private static ListenableFuture> missingImplementation(Class service) { return RpcResultBuilder.failed().withError( - RpcError.ErrorType.APPLICATION, + ErrorType.APPLICATION, String.format("No implementation found for direct statistics service %s.", service.getCanonicalName())) .buildFuture(); }