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

com.aol.micro.server.boot.config.MicrobootConfigurator Maven / Gradle / Ivy

The newest version!
package com.aol.micro.server.boot.config;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.pcollections.HashTreePMap;
import org.pcollections.HashTreePSet;

import com.aol.cyclops.lambda.monads.SequenceM;
import com.aol.micro.server.Plugin;
import com.aol.micro.server.PluginLoader;
import com.aol.micro.server.config.Config;
import com.aol.micro.server.config.Configurer;

import com.nurkiewicz.lazyseq.LazySeq;

public class MicrobootConfigurator implements Configurer{
	

		public Config buildConfig(Class class1) {
			Microboot microserver = (Microboot)class1.getAnnotation(Microboot.class);
			if(microserver==null)
				return Config.instance();
			List classes = buildClasses(class1, microserver);
			
			Map properties = buildProperties(microserver);
			
			return Config.instance().withEntityScan(microserver.entityScan()).withClasses(HashTreePSet.from(classes))
					.withPropertiesName(microserver.propertiesName()).withProperties(HashTreePMap.from(properties)).set();
		}

		private Map buildProperties(Microboot 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, Microboot microserver) {
			List classes = new ArrayList();
			classes.add(class1);
			if(microserver.classes()!=null)
				classes.addAll(Arrays.asList(microserver.classes()));
			List modules = PluginLoader.INSTANCE.plugins.get();
			if(modules.size()>0)
				classes.addAll(SequenceM.fromStream(modules.stream()).flatMap(module -> module.springClasses().stream()).toList());
			return classes;
		}
	}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy