@Override public Optional<Bean> getLazy(BeanId id) throws AbortRuntimeException { try { if (!begin()) { return Optional.absent(); } List<Bean> bean = findLazy(Sets.newHashSet(id)); if (bean.size() == 0) { if (id.isSingleton()) { return Optional.of(Bean.create(id)); } return Optional.absent(); } commit(); return Optional.of(bean.get(0)); } catch (AbortRuntimeException e) { rollback(); throw e; } catch (Throwable e) { rollback(); throw new RuntimeException(e); } }
@Override public Optional<Bean> getEager(BeanId id) { try { if (!begin()) { return Optional.absent(); } List<Bean> beans = findEager(Sets.newHashSet(id)); if (beans.size() == 0) { if (id.isSingleton()) { return Optional.of(Bean.create(id)); } return Optional.absent(); } commit(); return Optional.of(beans.get(0)); } catch (AbortRuntimeException e) { rollback(); if (id.isSingleton()) { return Optional.of(Bean.create(id)); } else { throw e; } } catch (Throwable e) { rollback(); throw new RuntimeException(e); } }
@Override public Optional<Bean> getSingleton(String schemaName) throws IllegalArgumentException { for (Bean bean : storage.all()) { if (bean.getId().getSchemaName().equals(schemaName)) { if (!bean.getId().isSingleton()) { throw new IllegalArgumentException("Schema [" + schemaName + "] is not a get."); } BeanId singletonId = bean.getId(); return getEagerly(singletonId); } } return Optional.of(Bean.create(BeanId.createSingleton(schemaName))); }
@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; }
public XmlBean(Bean bean) { this.id = bean.getId().getInstanceId(); this.name = bean.getId().getSchemaName(); this.singleton = bean.getId().isSingleton(); for (String name : bean.getPropertyNames()) { List<String> values = bean.getValues(name); if (values == null || values.size() == 0) { continue; } properties.add(new XmlBeanPropertyList(name, values)); } for (String name : bean.getReferenceNames()) { List<BeanId> ids = bean.getReference(name); if (ids == null || ids.size() == 0) { continue; } String schemaName = ids.get(0).getSchemaName(); references.add(new XmlBeanPropertyRefList(name, schemaName, ids)); } } }
private static void checkDeleteSingleton(Bean bean) { if (bean == null) { return; } if (bean.getId().isSingleton()) { throw CFG307_SINGELTON_REMOVAL(bean.getId()); } }
private static void checkCreateSingleton(Bean bean, Map<BeanId, Bean> storage) { for (Bean b : storage.values()) { if (bean.getId().getSchemaName().equals(b.getId().getSchemaName())) { if (b.getId().isSingleton()) { throw CFG308_SINGELTON_CREATION(bean.getId()); } } } }