package org.quickbundle.project.init; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Element; import org.dom4j.Node; import org.quickbundle.base.web.servlet.RmHolderServlet; import org.quickbundle.config.RmClusterConfig; import org.quickbundle.config.RmClusterConfig.NodeKey; import org.quickbundle.config.RmConfig; import org.quickbundle.tools.support.log.RmLogHelper; public class ClusterConfigLoaderXml extends AbstractClusterConfigLoader { public ClusterConfigLoaderXml(Element eleClusterConfigLoader) { super(eleClusterConfigLoader); } @SuppressWarnings("unchecked") public void init() { Element node = (Element) eleLoadCluster.selectSingleNode("node[@id=../@thisId]"); List<Node> keyValues = node.selectNodes("*|@*"); for(Node keyValue : keyValues) { selfNode.put(keyValue.getName(), keyValue.getText().trim()); } if (RmHolderServlet.getDefaultServletContext() != null) { try { selfNode.put(RmClusterConfig.NodeKey.contentPath.name(), RmHolderServlet.getDefaultServletContext().getContextPath()); } catch (Throwable e) { e.printStackTrace(); RmLogHelper.getLogger(this.getClass()).error("JavaEE version to low: " + e.toString()); } } //集群模式的判断 RmConfig.getSingleton().setClusterMode(eleLoadCluster.selectNodes("node").size() > 1); } @Override @SuppressWarnings("unchecked") public Map<String, Map<String, String>> getNodes() { Map<String, Map<String, String>> result = new HashMap<String, Map<String, String>>(); List<Element> nodes = eleLoadCluster.selectNodes("node"); for(Element node : nodes) { Map<String, String> nodeMap = new HashMap<String, String>(); List<Node> keyValues = node.selectNodes("*|@*"); for(Node keyValue : keyValues) { nodeMap.put(keyValue.getName(), keyValue.getText().trim()); } result.put(nodeMap.get(NodeKey.id.name()), nodeMap); } return result; } @Override public void destroy() { //ignore } }