final Map<String, MetaBean> copies = new HashMap<String, MetaBean>(all.size()); boolean nothing = true; XMLMetaBeanFactory.XMLResult carrier = new XMLMetaBeanFactory.XMLResult(); for (XMLMetaBeanInfos xmlMetaBeanInfos : infosArray) { carrier.xmlInfos = xmlMetaBeanInfos;
@Override public Map<String, MetaBean> buildAll() throws Exception { final Map<String, MetaBean> all = super.buildAll(); if (xmlFactory != null) { xmlFactory.visitXMLBeanMeta(null, new XMLMetaBeanFactory.Visitor() { @Override public void visit(XMLMetaBean empty, XMLMetaBeanInfos xmlInfos) throws Exception { if (xmlInfos.getBeans() == null) return; // empty file, ignore XMLMetaBeanFactory.XMLResult carrier = new XMLMetaBeanFactory.XMLResult(null, xmlInfos); for (XMLMetaBean xmlMeta : xmlInfos.getBeans()) { MetaBean meta = all.get(xmlMeta.getId()); if (meta == null) { meta = createMetaBean(xmlMeta); all.put(xmlMeta.getId(), meta); } carrier.xmlMeta = xmlMeta; xmlFactory.enrichMetaBean(meta, carrier); } } @Override public MetaBean getMetaBean() { return null; // do nothing } }); } return all; }
/** * find a bean by the bean-id (=bean.name) * * @return null or the bean found from the first loader that has it. */ protected XMLResult findXMLBeanMeta(String beanId) { for (Map.Entry<XMLMetaBeanLoader, XMLMetaBeanInfos> entry : resources.entrySet()) { if (entry.getValue() == null) { // load when not already loaded try { entry.setValue(entry.getKey().load()); } catch (IOException e) { handleLoadException(entry.getKey(), e); } } if (entry.getValue() != null) { // search in loaded infos for the 'name' XMLMetaBean found = entry.getValue().getBean(beanId); if (found != null) { return new XMLResult(found, entry.getValue()); } } } return null; // not found! }
@Override public MetaBean buildForId(String beanInfoId) throws Exception { final XMLMetaBeanFactory.Visitor v; assertXmlFactory(); xmlFactory.visitXMLBeanMeta(beanInfoId, v = new XMLMetaBeanFactory.Visitor() { private MetaBean meta; @Override public MetaBean getMetaBean() { return meta; } @Override public void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos) throws Exception { if (meta == null) { meta = createMetaBean(xmlMeta); } xmlFactory.enrichMetaBean(meta, new XMLMetaBeanFactory.XMLResult(xmlMeta, xmlInfos)); } }); if (v.getMetaBean() == null) { throw new IllegalArgumentException("MetaBean " + beanInfoId + " not found"); } return v.getMetaBean(); }
@Override public void buildMetaBean(final MetaBean metaBean) throws Exception { if (metaBean.getId() == null) return; visitXMLBeanMeta(metaBean.getId(), new Visitor() { @Override public void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos) throws Exception { enrichMetaBean(metaBean, new XMLResult(xmlMeta, xmlInfos)); } @Override public MetaBean getMetaBean() { return metaBean; } }); }
@Override public void visit(XMLMetaBean empty, XMLMetaBeanInfos xmlInfos) throws Exception { if (xmlInfos.getBeans() == null) return; // empty file, ignore XMLMetaBeanFactory.XMLResult carrier = new XMLMetaBeanFactory.XMLResult(null, xmlInfos); for (XMLMetaBean xmlMeta : xmlInfos.getBeans()) { MetaBean meta = all.get(xmlMeta.getId()); if (meta == null) { meta = createMetaBean(xmlMeta); all.put(xmlMeta.getId(), meta); } carrier.xmlMeta = xmlMeta; xmlFactory.enrichMetaBean(meta, carrier); } }
@Override public void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos) throws Exception { if (meta == null) { meta = createMetaBean(xmlMeta); } xmlFactory.enrichMetaBean(meta, new XMLMetaBeanFactory.XMLResult(xmlMeta, xmlInfos)); }
@Override public void visit(XMLMetaBean xmlMeta, XMLMetaBeanInfos xmlInfos) throws Exception { enrichMetaBean(metaBean, new XMLResult(xmlMeta, xmlInfos)); }