package org.theonefx.wcframework.mvc;
import org.theonefx.wcframework.core.BeanDefinitionRegistry;
import org.theonefx.wcframework.core.XmlParseContext;
import org.theonefx.wcframework.core.XmlParser;
import org.theonefx.wcframework.core.XmlParserDelegate;
import org.theonefx.wcframework.utils.StringUtils;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class MVCXmlParser implements XmlParser {
private final String MVC_CONFIG = "mvc-config";
private final String MVC_CONFIG_EXTENSION = "extension";
private final String MVC_CONFIG_IGNORE = "ignore";
private final String MVC_CONFIG_ENCODING = "default-encoding";
private final String MVC_CONFIG_BASE = "base";
private final String MVC_CONFIG_OBJECT_FACTORY = "object-factory";
@Override
public void parse(XmlParserDelegate delegate, Element root, BeanDefinitionRegistry registry, XmlParseContext context) {
if (MVC_CONFIG.equals(root.getNodeName())) {
NodeList nodelist = root.getChildNodes();
for (int i = 0; i < nodelist.getLength(); i++) {
Node node = nodelist.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
if (MVC_CONFIG_EXTENSION.equals(element.getNodeName())) {
MVCConfig.extention = element.getTextContent().trim();
} else if (MVC_CONFIG_IGNORE.equals(element.getNodeName())) {
MVCConfig.ignorePatten = element.getTextContent().trim();
} else if (MVC_CONFIG_ENCODING.equals(element.getNodeName())) {
MVCConfig.defaultEncoding = StringUtils.isBlank(element.getTextContent()) ? null : element.getTextContent().trim();
} else if (MVC_CONFIG_OBJECT_FACTORY.equals(element.getNodeName())) {
MVCConfig.objectFactory = StringUtils.isBlank(element.getTextContent()) ? WebApplicationContext.WCF_OBJECT_FACTORY : element
.getTextContent().trim();
} else if (MVC_CONFIG_BASE.equals(element.getNodeName())) {
String base = element.getTextContent();
if (StringUtils.isNotBlank(base)) {
if (!base.endsWith("/")) {
base = base + "/";
}
MVCConfig.base = base;
}
}
}
}
}
}
}