private Map<BeanId, Bean> getDirectPredecessors(Bean bean, Map<BeanId, Bean> all) { Map<BeanId, Bean> predecessors = new HashMap<BeanId, Bean>(); for (BeanId ref : bean.getReferences()) { Bean predecessor = all.get(ref); if (predecessor == null) { throw CFG304_BEAN_DOESNT_EXIST(ref); } predecessors.put(predecessor.getId(), predecessor); } return predecessors; }
private Map<BeanId, Bean> getDirectPredecessors(Bean bean) { Map<BeanId, Bean> predecessors = new HashMap<>(); for (BeanId ref : bean.getReferences()) { Bean predecessor = storage.get(ref); if (predecessor == null) { throw CFG304_BEAN_DOESNT_EXIST(ref); } predecessors.put(predecessor.getId(), predecessor); } return predecessors; }
private static void checkInstanceExist(Bean bean, Map<BeanId, Bean> storage) { Collection<Bean> beans = storage.values(); for (Bean existingBean : beans) { if (existingBean.getId().equals(bean.getId())) { return; } } throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); }
private void mergeJpaBeans(Collection<Bean> beans) { Map<BeanId, Bean> mapBeans = uniqueIndex(beans); List<Bean> stored = findEager(mapBeans.keySet()); for (Bean bean : beans) { if (!stored.contains(bean)) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } } mergeProperties(mapBeans, stored); mergeReferences(mapBeans, stored); }
@Override public Bean getLazy(BeanId id) throws AbortRuntimeException { Map<BeanId, Bean> all = readValuesAsMap(); Bean bean = all.get(id); if (bean == null) { throw CFG304_BEAN_DOESNT_EXIST(id); } for (BeanId ref : bean.getReferences()) { Bean refBean = all.get(ref); if (bean == null) { throw CFG301_MISSING_RUNTIME_REF(ref); } ref.setBean(refBean); } return bean; }
@Override public void merge(Bean bean) { Map<BeanId, Bean> beans = readValuesAsMap(); Bean b = beans.get(bean.getId()); if (b == null) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } replace(b, bean, beans); writeValues(beans); }
@Override public void merge(Collection<Bean> bean) { Map<BeanId, Bean> beans = readValuesAsMap(); for (Bean replace : bean) { Bean target = beans.get(replace.getId()); if (target == null) { throw Events.CFG304_BEAN_DOESNT_EXIST(replace.getId()); } replace(target, replace, beans); } writeValues(beans); }
@Override public void merge(Bean bean) { Bean b = storage.get(bean.getId()); if (b == null) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } replace(b, bean); }
@Override public void set(Bean bean) { Map<BeanId, Bean> values = readValuesAsMap(); Bean existing = values.get(bean.getId()); if (existing == null) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } checkReferencesExist(bean, values); checkInstanceExist(bean, values); values.put(bean.getId(), bean); writeValues(values); }
@Override public void set(Bean bean) { Bean existing = storage.get(bean.getId()); if (existing == null) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } checkReferencesExist(bean, new ArrayList<Bean>()); checkInstanceExist(bean); storage.put(bean); }
@Override public Bean getSingleton(String schemaName) throws IllegalArgumentException { Map<BeanId, Bean> all = readValuesAsMap(); for (Bean bean : all.values()) { if (bean.getId().getSchemaName().equals(schemaName)) { if (!bean.getId().isSingleton()) { throw new IllegalArgumentException("Schema [" + schemaName + "] is not a singleton."); } BeanId singletonId = bean.getId(); Bean singleton = getEagerly(singletonId, all); if (singleton == null) { throw CFG304_BEAN_DOESNT_EXIST(singletonId); } return singleton; } } return null; }
@Override public void set(Collection<Bean> set) { Map<BeanId, Bean> beans = readValuesAsMap(); // TODO: check that provided beans are unique among themselves. // references may not exist in storage, but are provided // as part of the transactions, so add them before validating references. for (Bean bean : set) { Bean existing = beans.get(bean.getId()); if (existing == null) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } beans.put(bean.getId(), bean); } for (Bean bean : set) { checkReferencesExist(bean, beans); } writeValues(beans); }
private static void checkInstanceExist(Bean bean) { Collection<Bean> beans = storage.all(); for (Bean existingBean : beans) { if (existingBean.getId().equals(bean.getId())) { return; } } throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); }
private Bean getEagerly(BeanId id, Map<BeanId, Bean> all) { Bean result = all.get(id); if (result == null) { throw CFG304_BEAN_DOESNT_EXIST(id); } // bean found, initalize references. for (BeanId ref : result.getReferences()) { if (ref.getBean() != null) { continue; } Bean refBean = all.get(ref); if (refBean == null) { throw CFG301_MISSING_RUNTIME_REF(result.getId(), ref); } ref.setBean(refBean); getEagerly(ref, all); } return result; }
@Override public void merge(Collection<Bean> bean) { for (Bean replace : bean) { Bean target = storage.get(replace.getId()); if (target == null) { throw Events.CFG304_BEAN_DOESNT_EXIST(replace.getId()); } replace(target, replace); storage.put(target); } }
@Override public void set(Collection<Bean> set) { // TODO: check that provided beans are unique among themselves. // references may not exist in storage, but are provided // as part of the transactions, so add them before validating references. for (Bean bean : set) { Bean existing = storage.get(bean.getId()); if (existing == null) { throw CFG304_BEAN_DOESNT_EXIST(bean.getId()); } storage.put(bean); } for (Bean bean : set) { checkReferencesExist(bean, set); } }
@Override public <T> T get(String id, Class<T> clazz) { doLookup(); Schema s = getSchema(clazz); Map<String, Schema> schemas = schemaManager.getSchemas(); BeanId beanId = BeanId.create(id, s.getName()); Bean bean = beanManager.getEager(beanId); if (bean == null) { throw Events.CFG304_BEAN_DOESNT_EXIST(beanId); } setSchema(bean, schemas); setSingletonReferences(bean, schemas); return conversion.convert(bean, clazz); }