public void close(boolean removeJobs) { cacheManager.dispose(); environment.close(); registry.remove(identifier); TimerService timerService = TimerServiceRegistry.getInstance().get(getIdentifier() + TimerServiceRegistry.TIMER_SERVICE_SUFFIX); if (timerService != null) { try { if (removeJobs && timerService instanceof GlobalTimerService) { ((GlobalTimerService) timerService).destroy(); } timerService.shutdown(); GlobalSchedulerService schedulerService = ((SchedulerProvider) environment).getSchedulerService(); if (schedulerService != null) { schedulerService.shutdown(); } } finally { TimerServiceRegistry.getInstance().remove(getIdentifier() + TimerServiceRegistry.TIMER_SERVICE_SUFFIX); } } this.closed = true; }
@Test public void testDispose() throws Exception { CacheManager cacheManager = new CacheManagerImpl(); Cacheable cacheable = mock(Cacheable.class); Cacheable otherCacheable = mock(Cacheable.class); Object cached = new Object(); cacheManager.add("cacheable", cacheable); cacheManager.add("other_cacheable", otherCacheable); cacheManager.add("cached", cached); // verify that objects have been added correctly assertEquals(cacheable, cacheManager.get("cacheable")); assertEquals(otherCacheable, cacheManager.get("other_cacheable")); assertEquals(cached, cacheManager.get("cached")); cacheManager.dispose(); // cache should be empty after dispose assertNull(cacheManager.get("cacheable")); assertNull(cacheManager.get("other_cacheable")); assertNull(cacheManager.get("cached")); // close() method has been called on cached objects which implement Cacheable verify(cacheable).close(); verify(otherCacheable).close(); }
public void close(boolean removeJobs) { cacheManager.dispose(); environment.close(); registry.remove(identifier); TimerService timerService = TimerServiceRegistry.getInstance().get(getIdentifier() + TimerServiceRegistry.TIMER_SERVICE_SUFFIX); if (timerService != null) { try { if (removeJobs && timerService instanceof GlobalTimerService) { ((GlobalTimerService) timerService).destroy(); } timerService.shutdown(); GlobalSchedulerService schedulerService = ((SchedulerProvider) environment).getSchedulerService(); if (schedulerService != null) { schedulerService.shutdown(); } } finally { TimerServiceRegistry.getInstance().remove(getIdentifier() + TimerServiceRegistry.TIMER_SERVICE_SUFFIX); } } this.closed = true; }