All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.qa.framework.classfinder.impl.DefaultClassScanner Maven / Gradle / Ivy

There is a newer version: 2.5
Show newest version
package com.qa.framework.classfinder.impl;

import com.qa.framework.classfinder.ClassScanner;
import com.qa.framework.classfinder.impl.support.AnnotationClassTemplate;
import com.qa.framework.classfinder.impl.support.ClassTemplate;
import com.qa.framework.classfinder.impl.support.SupperClassTemplate;

import java.lang.annotation.Annotation;
import java.util.List;


/**
 * 默认类扫描器
 */
public class DefaultClassScanner implements ClassScanner {

    @Override
    public List> getClassList(String packageName) {
        return new ClassTemplate(packageName) {
            @Override
            public boolean checkAddClass(Class cls) {
                String className = cls.getName();
                String pkgName = className.substring(0, className.lastIndexOf("."));
                return pkgName.startsWith(packageName);
            }
        }.getClassList();
    }

    @Override
    public List> getClassListByAnnotation(String packageName, Class annotationClass) {
        return new AnnotationClassTemplate(packageName, annotationClass) {
            @Override
            public boolean checkAddClass(Class cls) {
                return cls.isAnnotationPresent(annotationClass);
            }
        }.getClassList();
    }

    @Override
    public List> getClassListBySuper(String packageName, Class superClass) {
        return new SupperClassTemplate(packageName, superClass) {
            @Override
            public boolean checkAddClass(Class cls) {
                return superClass.isAssignableFrom(cls) && !superClass.equals(cls);
            }
        }.getClassList();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy