@Override public void stateUpdated(Item item, State state) { handleStateEvent(item, false); }
protected void deactivate() { itemRegistry.removeRegistryChangeListener(this); started = false; removeTimers(); removeItemStateChangeListeners(); }
private void startEventHandling(final String dbId) { synchronized (persistenceServiceConfigs) { final PersistenceServiceConfiguration config = persistenceServiceConfigs.get(dbId); if (config == null) { return; } for (SimpleItemConfiguration itemConfig : config.getConfigs()) { if (hasStrategy(dbId, itemConfig, SimpleStrategy.Globals.RESTORE)) { for (Item item : getAllItems(itemConfig)) { initialize(item); } } } createTimers(dbId, config.getStrategies()); } }
/** * Calls all persistence services which use change or update policy for the given item * * @param item the item to persist * @param onlyChanges true, if it has the change strategy, false otherwise */ private void handleStateEvent(Item item, boolean onlyChanges) { synchronized (persistenceServiceConfigs) { for (Entry<String, PersistenceServiceConfiguration> entry : persistenceServiceConfigs.entrySet()) { final String serviceName = entry.getKey(); final PersistenceServiceConfiguration config = entry.getValue(); if (persistenceServices.containsKey(serviceName)) { for (SimpleItemConfiguration itemConfig : config.getConfigs()) { if (hasStrategy(serviceName, itemConfig, onlyChanges ? SimpleStrategy.Globals.CHANGE : SimpleStrategy.Globals.UPDATE)) { if (appliesToItem(itemConfig, item)) { persistenceServices.get(serviceName).store(item, itemConfig.getAlias()); } } } } } } }
@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) protected void addPersistenceService(PersistenceService persistenceService) { logger.debug("Initializing {} persistence service.", persistenceService.getId()); persistenceServices.put(persistenceService.getId(), persistenceService); stopEventHandling(persistenceService.getId()); startEventHandling(persistenceService.getId()); }
private void stopEventHandling(String dbId) { synchronized (persistenceServiceConfigs) { removeTimers(dbId); } }
@Override public void allItemsChanged(Collection<String> oldItemNames) { for (Item item : itemRegistry.getItems()) { added(item); } }
@Reference protected void setItemRegistry(ItemRegistry itemRegistry) { this.itemRegistry = itemRegistry; itemRegistry.addRegistryChangeListener(this); allItemsChanged(null); }
@Override public void added(Item item) { initialize(item); if (item instanceof GenericItem) { GenericItem genericItem = (GenericItem) item; genericItem.addStateChangeListener(this); } }
@Override public void addConfig(final String dbId, final PersistenceServiceConfiguration config) { synchronized (persistenceServiceConfigs) { this.persistenceServiceConfigs.put(dbId, config); if (itemRegistry != null && persistenceServices.containsKey(dbId)) { startEventHandling(dbId); } } }
@Override public void run() { synchronized (manager.persistenceServiceConfigs) { final PersistenceService persistenceService = manager.persistenceServices.get(dbId); final PersistenceServiceConfiguration config = manager.persistenceServiceConfigs.get(dbId); if (persistenceService != null) { for (SimpleItemConfiguration itemConfig : config.getConfigs()) { if (hasStrategy(config.getDefaults(), itemConfig, strategyName)) { for (Item item : manager.getAllItems(itemConfig)) { long startTime = System.nanoTime(); persistenceService.store(item, itemConfig.getAlias()); logger.trace("Storing item '{}' with persistence service '{}' took {}ms", item.getName(), dbId, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime)); } } } } } }
@Override public void startEventHandling(final String dbId) { synchronized (persistenceServiceConfigs) { final PersistenceServiceConfiguration config = persistenceServiceConfigs.get(dbId); if (config == null) { return; } if (itemRegistry != null) { for (SimpleItemConfiguration itemConfig : config.getConfigs()) { if (hasStrategy(dbId, itemConfig, SimpleStrategy.Globals.RESTORE)) { for (Item item : getAllItems(itemConfig)) { initialize(item); } } } } createTimers(dbId, config.getStrategies()); } }
/** * Calls all persistence services which use change or update policy for the given item * * @param item the item to persist * @param onlyChanges true, if it has the change strategy, false otherwise */ private void handleStateEvent(Item item, boolean onlyChanges) { synchronized (persistenceServiceConfigs) { for (Entry<String, PersistenceServiceConfiguration> entry : persistenceServiceConfigs.entrySet()) { final String serviceName = entry.getKey(); final PersistenceServiceConfiguration config = entry.getValue(); if (persistenceServices.containsKey(serviceName)) { for (SimpleItemConfiguration itemConfig : config.getConfigs()) { if (hasStrategy(serviceName, itemConfig, onlyChanges ? SimpleStrategy.Globals.CHANGE : SimpleStrategy.Globals.UPDATE)) { if (appliesToItem(itemConfig, item)) { persistenceServices.get(serviceName).store(item, itemConfig.getAlias()); } } } } } } }
@Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) protected void addPersistenceService(PersistenceService persistenceService) { logger.debug("Initializing {} persistence service.", persistenceService.getId()); persistenceServices.put(persistenceService.getId(), persistenceService); if (started) { stopEventHandling(persistenceService.getId()); startEventHandling(persistenceService.getId()); } }
@Override public void stopEventHandling(String modelName) { synchronized (persistenceServiceConfigs) { removeTimers(modelName); } }
@Override public void allItemsChanged(Collection<String> oldItemNames) { for (Item item : itemRegistry.getItems()) { added(item); } }
protected void activate() { allItemsChanged(null); started = true; itemRegistry.addRegistryChangeListener(this); }
@Override public void added(Item item) { initialize(item); if (item instanceof GenericItem) { GenericItem genericItem = (GenericItem) item; genericItem.addStateChangeListener(this); } }
@Override public void addConfig(final String dbId, final PersistenceServiceConfiguration config) { synchronized (persistenceServiceConfigs) { this.persistenceServiceConfigs.put(dbId, config); if (persistenceServices.containsKey(dbId)) { startEventHandling(dbId); } } }