From: Robert Varga Date: Tue, 11 Feb 2014 23:16:39 +0000 (+0100) Subject: Simplify StatisticsManagerActivator/StatisticsProvider contract X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~468^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=0a40bd5b8ca97e933ca5d2aaf4b01aa79ccb1c21;ds=sidebyside Simplify StatisticsManagerActivator/StatisticsProvider contract Get rid of the need for the StatisticsManagerActivator to keep around the Provider session -- it is only ever referenced from StatisticsProvider.start(). Same goes for the various services which are set into it. Change-Id: I8014dbdd03e8830bb929e083672f988504d02994 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsManagerActivator.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsManagerActivator.java index 653cc8081a..b59482e96b 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsManagerActivator.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsManagerActivator.java @@ -16,32 +16,23 @@ import org.opendaylight.controller.sal.binding.api.data.DataProviderService; import org.osgi.framework.BundleContext; public class StatisticsManagerActivator extends AbstractBindingAwareProvider { + private StatisticsProvider statsProvider; - private static ProviderContext pSession; - - private static StatisticsProvider statsProvider = new StatisticsProvider(); - @Override public void onSessionInitiated(ProviderContext session) { - - pSession = session; - DataProviderService dps = session.getSALService(DataProviderService.class); - StatisticsManagerActivator.statsProvider.setDataService(dps); - DataBrokerService dbs = session.getSALService(DataBrokerService.class); - StatisticsManagerActivator.statsProvider.setDataBrokerService(dbs); - NotificationProviderService nps = session.getSALService(NotificationProviderService.class); - StatisticsManagerActivator.statsProvider.setNotificationService(nps); - StatisticsManagerActivator.statsProvider.start(); + final DataBrokerService dbs = session.getSALService(DataBrokerService.class); + final DataProviderService dps = session.getSALService(DataProviderService.class); + final NotificationProviderService nps = session.getSALService(NotificationProviderService.class); + statsProvider = new StatisticsProvider(dps); + statsProvider.start(dbs, nps, session); } - + @Override protected void stopImpl(BundleContext context) { - StatisticsManagerActivator.statsProvider.close(); - } - - public static ProviderContext getProviderContext(){ - return pSession; + if (statsProvider != null) { + statsProvider.close(); + statsProvider = null; + } } - } diff --git a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsProvider.java b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsProvider.java index f2b181cf47..353c3336cf 100644 --- a/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsProvider.java +++ b/opendaylight/md-sal/statistics-manager/src/main/java/org/opendaylight/controller/md/statistics/manager/StatisticsProvider.java @@ -17,6 +17,7 @@ import java.util.concurrent.Future; import org.eclipse.xtext.xbase.lib.Exceptions; import org.opendaylight.controller.md.statistics.manager.MultipartMessageManager.StatsRequestType; import org.opendaylight.controller.sal.binding.api.NotificationProviderService; +import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry; import org.opendaylight.controller.sal.binding.api.data.DataBrokerService; import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; @@ -71,6 +72,8 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Preconditions; + /** * Following are main responsibilities of the class: * 1) Invoke statistics request thread to send periodic statistics request to all the @@ -84,14 +87,16 @@ import org.slf4j.LoggerFactory; * */ public class StatisticsProvider implements AutoCloseable { + public static final int STATS_THREAD_EXECUTION_TIME= 15000; - public final static Logger spLogger = LoggerFactory.getLogger(StatisticsProvider.class); - - private DataProviderService dps; + private static final Logger spLogger = LoggerFactory.getLogger(StatisticsProvider.class); - private DataBrokerService dbs; + private final MultipartMessageManager multipartMessageManager = new MultipartMessageManager(); + private final InstanceIdentifier nodesIdentifier = InstanceIdentifier.builder(Nodes.class).toInstance(); + private final DataProviderService dps; - private NotificationProviderService nps; + //Local caching of stats + private final ConcurrentMap statisticsCache = new ConcurrentHashMap<>(); private OpendaylightGroupStatisticsService groupStatsService; @@ -105,44 +110,15 @@ public class StatisticsProvider implements AutoCloseable { private OpendaylightQueueStatisticsService queueStatsService; - private final MultipartMessageManager multipartMessageManager = new MultipartMessageManager(); - private StatisticsUpdateHandler statsUpdateHandler; private Thread statisticsRequesterThread; private Thread statisticsAgerThread; - private final InstanceIdentifier nodesIdentifier = InstanceIdentifier.builder(Nodes.class).toInstance(); - - public static final int STATS_THREAD_EXECUTION_TIME= 15000; - //Local caching of stats - - private final ConcurrentMap statisticsCache = - new ConcurrentHashMap(); - - public DataProviderService getDataService() { - return this.dps; - } - - public void setDataService(final DataProviderService dataService) { - this.dps = dataService; - } - - public DataBrokerService getDataBrokerService() { - return this.dbs; - } - - public void setDataBrokerService(final DataBrokerService dataBrokerService) { - this.dbs = dataBrokerService; - } - - public NotificationProviderService getNotificationService() { - return this.nps; - } - public void setNotificationService(final NotificationProviderService notificationService) { - this.nps = notificationService; + public StatisticsProvider(final DataProviderService dataService) { + this.dps = Preconditions.checkNotNull(dataService); } public MultipartMessageManager getMultipartMessageManager() { @@ -153,34 +129,20 @@ public class StatisticsProvider implements AutoCloseable { private Registration listenerRegistration; - public void start() { + public void start(final DataBrokerService dbs, final NotificationProviderService nps, final RpcConsumerRegistry rpcRegistry) { - NotificationProviderService nps = this.getNotificationService(); - Registration registerNotificationListener = nps.registerNotificationListener(this.updateCommiter); - this.listenerRegistration = registerNotificationListener; + this.listenerRegistration = nps.registerNotificationListener(this.updateCommiter); statsUpdateHandler = new StatisticsUpdateHandler(StatisticsProvider.this); - - registerDataStoreUpdateListener(this.getDataBrokerService()); + registerDataStoreUpdateListener(dbs); // Get Group/Meter statistics service instance - groupStatsService = StatisticsManagerActivator.getProviderContext(). - getRpcService(OpendaylightGroupStatisticsService.class); - - meterStatsService = StatisticsManagerActivator.getProviderContext(). - getRpcService(OpendaylightMeterStatisticsService.class); - - flowStatsService = StatisticsManagerActivator.getProviderContext(). - getRpcService(OpendaylightFlowStatisticsService.class); - - portStatsService = StatisticsManagerActivator.getProviderContext(). - getRpcService(OpendaylightPortStatisticsService.class); - - flowTableStatsService = StatisticsManagerActivator.getProviderContext(). - getRpcService(OpendaylightFlowTableStatisticsService.class); - - queueStatsService = StatisticsManagerActivator.getProviderContext(). - getRpcService(OpendaylightQueueStatisticsService.class); + groupStatsService = rpcRegistry.getRpcService(OpendaylightGroupStatisticsService.class); + meterStatsService = rpcRegistry.getRpcService(OpendaylightMeterStatisticsService.class); + flowStatsService = rpcRegistry.getRpcService(OpendaylightFlowStatisticsService.class); + portStatsService = rpcRegistry.getRpcService(OpendaylightPortStatisticsService.class); + flowTableStatsService = rpcRegistry.getRpcService(OpendaylightFlowTableStatisticsService.class); + queueStatsService = rpcRegistry.getRpcService(OpendaylightQueueStatisticsService.class); statisticsRequesterThread = new Thread( new Runnable(){ @@ -263,8 +225,6 @@ public class StatisticsProvider implements AutoCloseable { } protected DataModificationTransaction startChange() { - - DataProviderService dps = this.getDataService(); return dps.beginTransaction(); }