Class<?> abstractBind = null;
try {
// carico la relativa instanza
abstractBind = Class.forName( binder.getClassName() );
List<ISetProperty> lstProp = binder.getProperties();
hshBinds.put(binder.getName(), new XmlBindingFactory(abstractBind, lstProp));
} catch (Exception ex) {
LOG.error("Error di inizializzazione della classe " + binder.getClassName());
}
}
}
//3� step: Iniziallizzo i binder
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
BeanDefinitions beanDefinitions = xConfig.getBeanDefinitions();
if (beanDefinitions!=null) {
List<IocSpring> lstIocSpring = beanDefinitions.getIocSprings();
for (IocSpring spring : lstIocSpring) {
Resource resource;
try {
resource = new UrlResource(ResourceUtils.getRealPath(spring.getResource(), servletContext));
} catch (FileNotFoundException e) {
throw new RuntimeException(e.getMessage());
} catch (MalformedURLException e) {
throw new RuntimeException(e.getMessage());
}
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(beanFactory);
xmlReader.loadBeanDefinitions(resource);
}
}
TransformerDefinitions definitions = xConfig.getTransformerDefinitions();
//4� step: Configuro il trasformer per i Bean
org.salamandra.web.core.config.digester.Transformer transformerBean = new org.salamandra.web.core.config.digester.Transformer();
transformerBean.setId(BeanTransformer.TRANSFORMER_BEAN_ID);
transformerBean.setType(BeanTransformer.class.getName());
definitions.addTransformer(transformerBean);
//5� step: Inizializzo i Transformer
// per ogni Transformer
List<org.salamandra.web.core.config.digester.Transformer> lstTrans = definitions.getTransformers();
for (Iterator<org.salamandra.web.core.config.digester.Transformer> iter = lstTrans.iterator(); iter.hasNext();) {
org.salamandra.web.core.config.digester.Transformer trans = iter.next();
Transformer transformer = createTransformerInstance(servletContext, trans, beanFactory);
// Ottengo le proprety del Transformer
List<ISetProperty> lstProp = trans.getSetProperties();
for (Iterator<ISetProperty> iterator = lstProp.iterator(); iterator.hasNext();) {
ISetProperty prop = (ISetProperty) iterator.next();
transformer.addInitParameter( prop.getProperty(), prop.getValue() );
}
// ottengo la struttura del nodo
Structure structure = trans.getStructure();
XmlBindingFactory bindFactory = null;
if (structure!=null) {
// assegno il nome al nodo
transformer.getStructure().setName(trans.getStructure().getName());
//
List<AddNode> listNode = structure.getAddNodes();
for (Iterator<AddNode> iterator = listNode.iterator(); iterator.hasNext();) {
AddNode node = iterator.next();
String nameNode = node.getName();
String typeNode = node.getType();
if ((node.getBinder()!=null) &&
hshBinds.containsKey(node.getBinder())) {
bindFactory = (XmlBindingFactory) hshBinds.get(node.getBinder());
}
transformer.getStructure().addNode(nameNode, typeNode, bindFactory);
}
} else {
SingleNode singleNode = trans.getSingleNode();
if (singleNode!=null) {
String typeNode = singleNode.getType();
if ((singleNode.getBinder()!=null) &&
hshBinds.containsKey(singleNode.getBinder())) {
bindFactory = (XmlBindingFactory) hshBinds.get(singleNode.getBinder());
}
transformer.setSingleNode(typeNode, bindFactory);
}
}
if ((bindFactory!=null) &&
(transformer instanceof SAXTransformer)) {
bindFactory.setSAXTransformer((SAXTransformer) transformer);
}
}
} catch (SalamandraConfigException e) {
LOG.error(e.getMessage(), e);
throw e;