Package com.log4ic.utils.support.scanner.filter

Source Code of com.log4ic.utils.support.scanner.filter.AnnotationFilter

package com.log4ic.utils.support.scanner.filter;

import com.log4ic.utils.io.scanner.FileScanner;
import com.log4ic.utils.io.scanner.filter.IScannerFilter;
import javolution.util.FastList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.Logger;

import javax.persistence.Entity;
import java.lang.annotation.Annotation;
import java.net.URL;
import java.util.List;

/**
* @author 张立鑫 IntelligentCode
* @date: 12-1-28
* @time: 上午3:26
*/
public class AnnotationFilter implements IScannerFilter {

    private static final Log LOGGER = LogFactory.getLog(AnnotationFilter.class);

    private List<Class> classList = new FastList<Class>();

    public boolean filter(String urlStr, URL url, ClassLoader classLoader) {
        String classPathStr = urlStr.replace("/", ".");
        classPathStr = classPathStr.substring(0, classPathStr.length() - 6);
        try {
            Class clazz = classLoader.loadClass(classPathStr);
            if (clazz.isAnnotationPresent(Entity.class)) {
                classList.add(clazz);
                return true;
            } else {
                return false;
            }
        } catch (ClassNotFoundException e) {
            LOGGER.error(e);
        }
        return false;
    }

    public List<Class> getClassList() {
        return classList;
    }

    public static void main(String[] args) {
        FileScanner fileScanner = new FileScanner(new AnnotationFilter());
        List<URL> list = fileScanner.find("com.log4ic.entity");
        for (URL url : list) {
            System.out.println(url.getPath());
        }
    }
}
TOP

Related Classes of com.log4ic.utils.support.scanner.filter.AnnotationFilter

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.