/** * Create a new MetaBeanCache instance. * @param beans */ public MetaBeanCache(Map<String, MetaBean> beans) { this(); for (MetaBean bean : beans.values()) { cache(bean); } }
@Override public synchronized void addLoader(XMLMetaBeanLoader loader) { ((XMLMetaBeanBuilder) builder).addLoader(loader); cache.clear(); // clear because new loaders can affect ALL MetaBeans // already created! complete = false; }
Map<String, MetaBean> allBuilt = builder.buildAll(); for (MetaBean meta : allBuilt.values()) { MetaBean cached = cache.findForId(meta.getId()); if (cached == null) { cache.cache(meta); Map<String, MetaBean> map = cache.findAll(); for (Object oentry : map.values()) { MetaBean meta = (MetaBean) oentry; return cache.findAll();
/** * {@inheritDoc} */ @Override public MetaBean findForId(final String beanInfoId) { MetaBean beanInfo = cache.findForId(beanInfoId); if (beanInfo != null) { return beanInfo; } try { beanInfo = builder.buildForId(beanInfoId); cache.cache(beanInfo); computeRelationships(beanInfo); return beanInfo; } catch (final RuntimeException e) { throw e; // do not wrap runtime exceptions } catch (final Exception e) { throw new IllegalArgumentException("error creating beanInfo with id: " + beanInfoId, e); } }
/** * {@inheritDoc} */ @Override public MetaBean findForClass(final Class<?> clazz) { if (clazz == null) { return null; } MetaBean beanInfo = cache.findForClass(clazz); if (beanInfo != null) { return beanInfo; } try { beanInfo = builder.buildForClass(clazz); cache.cache(beanInfo); computeRelationships(beanInfo); return beanInfo; } catch (final RuntimeException e) { throw e; // do not wrap runtime exceptions } catch (final Exception e) { throw new IllegalArgumentException("error creating beanInfo for " + clazz, e); } }