package org.opendaylight.openflowplugin.impl.statistics.services.direct;
-import java.util.Optional;
-import java.util.concurrent.Future;
+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;
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;
}
@Override
- public Future<RpcResult<GetGroupStatisticsOutput>> getGroupStatistics(GetGroupStatisticsInput input) {
- final Optional<GroupDirectStatisticsService> service = provider.lookup(GroupDirectStatisticsService.class);
-
- if (!service.isPresent()) {
- return missingImplementation(GroupDirectStatisticsService.class);
- }
-
- return service.get().handleAndReply(input);
+ @SuppressWarnings("unchecked")
+ public ListenableFuture<RpcResult<GetGroupStatisticsOutput>> getGroupStatistics(GetGroupStatisticsInput input) {
+ return provider.lookup(AbstractGroupDirectStatisticsService.class)
+ .map(service -> service.handleAndReply(input))
+ .orElse(missingImplementation(AbstractGroupDirectStatisticsService.class));
}
@Override
- public Future<RpcResult<GetQueueStatisticsOutput>> getQueueStatistics(GetQueueStatisticsInput input) {
- final Optional<QueueDirectStatisticsService> service = provider.lookup(QueueDirectStatisticsService.class);
-
- if (!service.isPresent()) {
- return missingImplementation(QueueDirectStatisticsService.class);
- }
-
- return service.get().handleAndReply(input);
+ @SuppressWarnings("unchecked")
+ public ListenableFuture<RpcResult<GetQueueStatisticsOutput>> getQueueStatistics(GetQueueStatisticsInput input) {
+ return provider.lookup(AbstractQueueDirectStatisticsService.class)
+ .map(service -> service.handleAndReply(input))
+ .orElse(missingImplementation(AbstractQueueDirectStatisticsService.class));
}
@Override
- public Future<RpcResult<GetFlowStatisticsOutput>> getFlowStatistics(GetFlowStatisticsInput input) {
- final Optional<FlowDirectStatisticsService> service = provider.lookup(FlowDirectStatisticsService.class);
-
- if (!service.isPresent()) {
- return missingImplementation(FlowDirectStatisticsService.class);
- }
-
- return service.get().handleAndReply(input);
+ @SuppressWarnings("unchecked")
+ public ListenableFuture<RpcResult<GetFlowStatisticsOutput>> getFlowStatistics(GetFlowStatisticsInput input) {
+ return provider.lookup(AbstractFlowDirectStatisticsService.class)
+ .map(service -> service.handleAndReply(input))
+ .orElse(missingImplementation(AbstractFlowDirectStatisticsService.class));
}
@Override
- public Future<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(GetMeterStatisticsInput input) {
- final Optional<MeterDirectStatisticsService> service = provider.lookup(MeterDirectStatisticsService.class);
-
- if (!service.isPresent()) {
- return missingImplementation(MeterDirectStatisticsService.class);
- }
-
- return service.get().handleAndReply(input);
+ @SuppressWarnings("unchecked")
+ public ListenableFuture<RpcResult<GetMeterStatisticsOutput>> getMeterStatistics(GetMeterStatisticsInput input) {
+ return provider.lookup(AbstractMeterDirectStatisticsService.class)
+ .map(service -> service.handleAndReply(input))
+ .orElse(missingImplementation(AbstractMeterDirectStatisticsService.class));
}
@Override
- public Future<RpcResult<GetNodeConnectorStatisticsOutput>> getNodeConnectorStatistics(GetNodeConnectorStatisticsInput input) {
- final Optional<NodeConnectorDirectStatisticsService> service = provider.lookup(NodeConnectorDirectStatisticsService.class);
-
- if (!service.isPresent()) {
- return missingImplementation(NodeConnectorDirectStatisticsService.class);
- }
-
- return service.get().handleAndReply(input);
+ @SuppressWarnings("unchecked")
+ public ListenableFuture<RpcResult<GetNodeConnectorStatisticsOutput>>
+ getNodeConnectorStatistics(GetNodeConnectorStatisticsInput input) {
+ return provider.lookup(AbstractPortDirectStatisticsService.class)
+ .map(service -> service.handleAndReply(input))
+ .orElse(missingImplementation(AbstractPortDirectStatisticsService.class));
}
- private <T extends DataObject> Future<RpcResult<T>> missingImplementation(Class service) {
+ private static <T extends DataObject> ListenableFuture<RpcResult<T>> missingImplementation(Class service) {
return RpcResultBuilder.<T>failed().withError(
- RpcError.ErrorType.APPLICATION,
+ ErrorType.APPLICATION,
String.format("No implementation found for direct statistics service %s.", service.getCanonicalName()))
.buildFuture();
}