package net.sourceforge.wurfl.spring.config;
import net.sourceforge.wurfl.spring.WurflDeviceResolver;
import net.sourceforge.wurfl.spring.WurflManagerFactoryBean;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
class WurflDeviceResolverBeanDefinitionParser extends AbstractBeanDefinitionParser {
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
Object source = parserContext.extractSource(element);
RootBeanDefinition serviceDef = new RootBeanDefinition(WurflDeviceResolver.class);
serviceDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
serviceDef.setSource(source);
RootBeanDefinition managerDef = new RootBeanDefinition(WurflManagerFactoryBean.class);
managerDef.getConstructorArgumentValues().addIndexedArgumentValue(0, element.getAttribute("root-location"));
if (element.hasAttribute("patch-locations")) {
managerDef.getPropertyValues().add("patchLocations", element.getAttribute("patch-locations"));
}
managerDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
managerDef.setSource(source);
serviceDef.getConstructorArgumentValues().addIndexedArgumentValue(0, managerDef);
return serviceDef;
}
}