Package org.nutz.ioc.aop.config.impl

Source Code of org.nutz.ioc.aop.config.impl.XmlAopConfigration

package org.nutz.ioc.aop.config.impl;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;

import org.nutz.lang.Lang;
import org.nutz.resource.NutResource;
import org.nutz.resource.Scans;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/**
*
* 通过Xml配置文件判断需要拦截哪些方法
* @author wendal(wendal1985@gmail.com)
*
*/
public class XmlAopConfigration extends AbstractAopConfigration {

  public XmlAopConfigration(String... fileNames) throws ParserConfigurationException,
      SAXException, IOException {
    DocumentBuilder builder = Lang.xmls();
    Document document;
    List<AopConfigrationItem> aopList = new ArrayList<AopConfigrationItem>();
    List<NutResource> list = Scans.me().loadResource(null, fileNames);
    for (NutResource nutResource : list) {
      document = builder.parse(nutResource.getInputStream());
      document.normalizeDocument();
      NodeList nodeListZ = ((Element) document.getDocumentElement()).getElementsByTagName("class");
      for (int i = 0; i < nodeListZ.getLength(); i++)
        aopList.add(parse((Element) nodeListZ.item(i)));
    }
    setAopItemList(aopList);
  }

  private AopConfigrationItem parse(Element item) {
    AopConfigrationItem aopItem = new AopConfigrationItem();
    aopItem.setClassName(item.getAttribute("name"));
    aopItem.setMethodName(item.getAttribute("method"));
    aopItem.setInterceptor(item.getAttribute("interceptor"));
    if (item.hasAttribute("singleton"))
      aopItem.setSingleton(Boolean.parseBoolean(item.getAttribute("singleton")));
    return aopItem;
  }

}
TOP

Related Classes of org.nutz.ioc.aop.config.impl.XmlAopConfigration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.