@Override public void delete(String name, Collection<String> instances) { Preconditions.checkNotNull(name); if (instances == null || instances.isEmpty()) { return; } doLookup(); ConfigChanges changes = notificationManager.deleted(name, instances); Collection<Bean> beans = beanManager.delete(name, instances); schemaManager.setSchema(beans); if (cacheManager.isPresent()) { cacheManager.get().remove(name, instances); } notificationManager.fire(changes); }
private void doLookup() { if (LOOKUP_DONE.get()) { return; } beanManager = BeanManager.lookup(); schemaManager = SchemaManager.lookup(); notificationManager = NotificationManager.lookup(); cacheManager = CacheManager.lookup(); validationManager = ValidationManager.lookup(); LOOKUP_DONE.set(true); } }
@Override public void registerObserver(ConfigObserver observer) { doLookup(); notificationManager.register(observer); }
@Override public void set(Collection<Bean> beans) { if (beans == null || beans.isEmpty()) { return; } doLookup(); beanManager.initializeReferences(beans); schemaManager.setSchema(beans); schemaManager.validateSchema(beans); if (validationManager.isPresent()) { validateSet(Bean.copy(beans)); } schemaManager.setSchema(beans); ConfigChanges changes = notificationManager.updated(beans); beanManager.set(beans); if (cacheManager.isPresent()) { cacheManager.get().putAll(beans); } notificationManager.fire(changes); }
/** * Fire a notification for a collection of beans that have been created. * * @param beans created beans */ public final void fireCreate(Collection<Bean> beans) { ConfigChanges changes = new ConfigChanges(); for (Bean bean : beans) { changes.add(ConfigChange.created(bean)); } fire(changes); }
@Override public void delete(BeanId beanId) { Preconditions.checkNotNull(beanId); doLookup(); Optional<Bean> before = get(beanId); if (!before.isPresent()) { throw Events.CFG304_BEAN_DOESNT_EXIST(beanId); } Bean bean = beanManager.delete(beanId); if (bean == null) { throw Events.CFG304_BEAN_DOESNT_EXIST(beanId); } if (cacheManager.isPresent()) { cacheManager.get().remove(beanId); } notificationManager.fireDelete(Arrays.asList(before.get())); }
@Override public void create(Collection<Bean> beans) { if (beans == null || beans.isEmpty()) { return; } doLookup(); beanManager.initializeReferences(beans); schemaManager.setSchema(beans); schemaManager.validateSchema(beans); if (validationManager.isPresent()) { // ready to validate Collection<Object> objects = schemaManager.convertBeans(beans); validationManager.get().validate(objects); } beanManager.create(beans); if (cacheManager.isPresent()) { cacheManager.get().putAll(beans); } notificationManager.fireCreate(beans); }
@Override public void merge(Collection<Bean> beans) { if (beans == null || beans.isEmpty()) { return; } doLookup(); schemaManager.setSchema(beans); schemaManager.validateSchema(beans); // ok to not have validation manager available if (validationManager.isPresent()) { validateMerge(Bean.copy(beans)); } schemaManager.setSchema(beans); ConfigChanges changes = notificationManager.updated(beans); beanManager.merge(beans); if (cacheManager.isPresent()) { for (Bean bean : beans) { // must refresh the bean from storage since it is merged. Optional<Bean> refreshed = beanManager.getEager(bean.getId()); if (refreshed.isPresent()) { cacheManager.get().put(refreshed.get()); } } } notificationManager.fire(changes); }
/** * Fire a notification for a collection of beans that have been deleted. * * @param beans deleted beans */ public final void fireDelete(List<Bean> beans) { ConfigChanges changes = new ConfigChanges(); for (Bean bean : beans) { changes.add(ConfigChange.deleted(bean)); } fire(changes); }
/** * Fire a notification for a collection of beans that have been created. * * @param beans created beans */ public final void fireCreate(Collection<Bean> beans) { ConfigChanges changes = new ConfigChanges(); for (Bean bean : beans) { changes.add(ConfigChange.created(bean)); } fire(changes); }
public void doLookup() { if (LOOKUP_DONE.get()) { return; } propertyManager = PropertyManager.lookup(); schemaManager = SchemaManager.lookup(); beanManager = BeanManager.lookup(); validationManager = ValidationManager.lookup(); notificationManager = NotificationManager.lookup(); cacheManager = CacheManager.lookup(); LOOKUP_DONE.set(true); } }
/** * Fire a notification for a collection of beans that have been deleted. * * @param beans deleted beans */ public final void fireDelete(List<Bean> beans) { ConfigChanges changes = new ConfigChanges(); for (Bean bean : beans) { changes.add(ConfigChange.deleted(bean)); } fire(changes); }