package org.finra.datagenerator.scaffolding.utils; import com.google.common.collect.Lists; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.TypeFilter; import org.springframework.stereotype.Service; import java.util.List; import java.util.Set; /** * Created by dkopel on 7/5/16. */ @Service public class SimpleClassPathScanner implements ClassPathScanner { private AdvancedClassPathScanner provider; public SimpleClassPathScanner() {} public SimpleClassPathScanner(List<String> basePackages, Boolean useDefaults) { this.basePackages = basePackages; this.provider = new AdvancedClassPathScanner(useDefaults); } public SimpleClassPathScanner(String basePackage) { this(Lists.newArrayList(basePackage), false); } public SimpleClassPathScanner(List<String> basePackages) { this(basePackages, false); } @Value("${classpathScanner.basePackages:'org.finra'}") private List<String> basePackages; @Override public ClassPathScanner reset() { provider.resetFilters(false); return this; } @Override public ClassPathScanner addIncludeFilter(TypeFilter typeFilter) { provider.addIncludeFilter(typeFilter); return this; } @Override public ClassPathScanner addExcludeFilter(TypeFilter typeFilter) { provider.addExcludeFilter(typeFilter); return this; } @Override public ClassPathScanner setBasePackages(List<String> basePackages) { this.basePackages = basePackages; return this; } @Override public void includeConcrete() { provider.setConcrete(true); } @Override public void excludeNotConcrete() { provider.setConcrete(false); } @Override public Set<BeanDefinition> findComponents() { return provider.findCandidateComponents(basePackages); } @Override public ClassPathScanningCandidateComponentProvider getProvider() { return provider; } }