com.aol.micro.server.config.MicroserverConfigurer Maven / Gradle / Ivy
package com.aol.micro.server.config;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.nurkiewicz.lazyseq.LazySeq;
public class MicroserverConfigurer implements Configurer {
public Config buildConfig(Class class1) {
Microserver microserver = (Microserver) class1.getAnnotation(Microserver.class);
if (microserver == null){
microserver = Microserver.Instance.class.getAnnotation(Microserver.class);
}
String[] basePackages=microserver.basePackages();
if(basePackages.length==0){
String[] basePackagesFromClass ={class1.getPackage().getName()};
basePackages = basePackagesFromClass;
}
List classes = buildClasses(class1, microserver);
Map properties = buildProperties(microserver);
return Config.instance().withBasePackages(basePackages).withEntityScan(microserver.entityScan()).withClasses(ImmutableSet.copyOf(classes))
.withPropertiesName(microserver.propertiesName()).withInstancePropertiesName(microserver.instancePropertiesName())
.withAllowCircularReferences(microserver.allowCircularDependencies()).withProperties(ImmutableMap.copyOf(properties)).set();
}
private Map buildProperties(Microserver microserver) {
Map properties = LazySeq.of(microserver.properties()).grouped(2).stream()
.collect(Collectors.toMap(prop -> prop.get(0), prop -> prop.get(1)));
return properties;
}
private List buildClasses(Class class1, Microserver microserver) {
List classes = new ArrayList();
classes.add(class1);
if (microserver.classes() != null)
classes.addAll(Arrays.asList(microserver.classes()));
Stream.of(microserver.springClasses()).map(cl -> cl.getClasses()).forEach(array -> classes.addAll(Arrays.asList(array)));
return classes;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy