package com.aol.micro.server.config; import java.util.ArrayList; import java.util.List; import lombok.Getter; import nonautoscan.com.aol.micro.server.AopConfig; import nonautoscan.com.aol.micro.server.SSLConfig; import nonautoscan.com.aol.micro.server.ScheduleAndAsyncConfig; import com.aol.micro.server.module.ConfigureEnviroment; import com.aol.micro.server.servers.AccessLogConfig; import com.aol.micro.server.spring.properties.PropertyFileConfig; /** * * Collections of Spring configuration classes (Classes annotated with @Configuration) * that configure various useful pieces of functionality - such as property file loading, * datasources, scheduling etc * * @author johnmcclean * */ public class Classes { /** * CORE CLASSES are the Core Microserver Spring Configuration classes * Property support, Guava Event Bus, Spring AOP & Scheduling * Codahale Metrics, Event tracking etc */ public static final Classes CORE_CLASSES = new Classes(PropertyFileConfig.class, AopConfig.class, ScheduleAndAsyncConfig.class, ConfigureEnviroment.class, AccessLogConfig.class, SSLConfig.class); @Getter private final Class[] classes; public Classes(Class... classes) { this.classes = classes; } public Classes combine(Classes c){ List<Class> c1 = new ArrayList<>(); for(Class next : classes) c1.add(next); for(Class next : c.classes) c1.add(next); return new Classes(c1.toArray(new Class[0])); } }