public FilterConfBean parseConfig(String filterConfFileName) throws Exception { // 载入filter配置文件 InputStream is = loadFile(filterConfFileName); if (is == null) { return null; } // byte[] data = new byte[1024]; // int index = is.read(data); // System.out.println(new String(data)); FilterConfBean filterConfBean = new FilterConfBean(); DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = fac.newDocumentBuilder(); Document doc = builder.parse(is); NodeList nodeList = doc.getElementsByTagName(FilterConfElementEnum.ELEMENT_CHAIN.getValue()); Map<String, List<FilterDescBean>> chainMap = new HashMap<String, List<FilterDescBean>>(); for (int i = 0; i < nodeList.getLength(); i++) { Element chainElement = (Element) nodeList.item(i); List<FilterDescBean> chain = parseChain(chainElement); chainMap.put( chainElement.getAttribute(FilterConfElementEnum.ELEMENT_ATTRBUTE_NAME.getValue()), chain); } nodeList = doc.getElementsByTagName(FilterConfElementEnum.ELEMENT_EXTENTION.getValue()); for (int i = 0; i < nodeList.getLength(); i++) { if (nodeList.item(i) instanceof Element && ((Element) nodeList.item(i)).getAttribute("value") != null && ((Element) nodeList.item(i)).getAttribute("value").equalsIgnoreCase("true")) { filterConfBean.setExtension(true); } } filterConfBean.setChainMap(chainMap); return filterConfBean; }
private FilterDescBean parseFilter(Element filterElement) { FilterDescBean filterDesc = new FilterDescBean(); String v = filterElement.getAttribute(FilterConfElementEnum.ELEMENT_ATTR_FACTORY.getValue()); if (v != null && v.trim().length() > 0) filterDesc.setFactoryClass(v.trim()); v = filterElement.getAttribute(FilterConfElementEnum.ELEMENT_ATTR_IMPL_CLASS.getValue()); if (v != null && v.trim().length() > 0) filterDesc.setImplClass(v.trim()); v = filterElement.getAttribute(FilterConfElementEnum.ELEMENT_ATTR_INTERFACE.getValue()); if (v != null && v.trim().length() > 0) filterDesc.setIntfClass(v); v = filterElement.getAttribute(FilterConfElementEnum.ELEMENT_ATTR_METHOD.getValue()); if (v != null && v.trim().length() > 0) filterDesc.setMethodName(v); v = filterElement.getAttribute(FilterConfElementEnum.ELEMENT_ATTR_EXCLUSION.getValue()); if (v != null && v.trim().length() > 0) filterDesc.setExclusion(v); NodeList params = filterElement.getChildNodes(); for (int i = 0; i < params.getLength(); i++) { Node param = params.item(i); if (param instanceof Element) { filterDesc.setAttribute( ((Element) param).getAttribute(FilterConfElementEnum.ELEMENT_ATTRBUTE_NAME.getValue()), ((Element) param).getTextContent().trim()); } } return filterDesc; }