package org.javers.core.metamodel.scanner;
import org.javers.common.collections.Lists;
import org.javers.core.JaversCoreConfiguration;
import org.javers.core.MappingStyle;
import org.javers.core.pico.LateInstantiatingModule;
import org.picocontainer.MutablePicoContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collection;
/**
* @author bartosz.walacik
*/
public class ScannerModule extends LateInstantiatingModule {
private static final Logger logger = LoggerFactory.getLogger(ScannerModule.class);
public ScannerModule(JaversCoreConfiguration configuration, MutablePicoContainer container) {
super(configuration, container);
}
@Override
protected Collection<Class> getImplementations() {
MappingStyle mappingStyle = getConfiguration().getMappingStyle();
logger.info("using "+mappingStyle.name()+ " mappingStyle");
Class<? extends PropertyScanner> usedPropertyScanner;
if (mappingStyle == MappingStyle.BEAN){
usedPropertyScanner = BeanBasedPropertyScanner.class;
} else if (mappingStyle == MappingStyle.FIELD){
usedPropertyScanner = FieldBasedPropertyScanner.class;
} else{
throw new RuntimeException("not implementation for "+mappingStyle);
}
return (Collection) Lists.asList(
ClassScanner.class,
ClassAnnotationsScanner.class,
AnnotationNamesProvider.class,
usedPropertyScanner
);
}
}