@Override public Iterator<RegisterEntry> iterator() { return entries.iterator(); }
public Config withClassesArray(Class... classes) { PersistentSet<Class> org = this.classes; for (Class c : classes) org = org.plus(c); return this.withClasses(org); }
public ModuleBean getModuleBean(Module module) { return modulePort.getOrElse(module.getContext(),null); }
@Bean public Properties propertyFactory() throws IOException { List<Resource> resources = loadPropertyResource(); PropertiesFactoryBean factory = new PropertiesFactoryBean(); factory.setLocations(resources.toArray(new Resource[resources.size()])); factory.afterPropertiesSet(); Properties props = factory.getObject(); new ConfigAccessor().get() .getProperties() .stream() .forEach(e -> { if (props.getProperty(e._1()) == null) { props.put(e._1(), e._2()); } }); System.getProperties() .entrySet() .forEach(e -> props.put(e.getKey(), e.getValue())); return props; }
public SpringContextFactory(Config config, Class<?> c, Set<Class<?>> classes) { PersistentSet<Class> s = config.getClasses() .plusAll(classes); s= s.plus(c); Microserver microserver = c.getAnnotation(Microserver.class); final PersistentSet<Class> immutableS = s; s = Optional.ofNullable(microserver) .flatMap(ms -> Optional.ofNullable(ms.blacklistedClasses())) .map(bl -> { Set<Class> blacklistedClasses = Arrays.stream(bl) .collect(Collectors.toSet()); return (PersistentSet<Class>)immutableS.stream() .filter(clazz -> !blacklistedClasses.contains(clazz)).hashSet(); }) .orElse(immutableS); this.classes = s; this.config = config; springBuilder = ReactiveSeq.fromStream(PluginLoader.INSTANCE.plugins.get() .stream()) .filter(m -> m.springBuilder() != null) .map(Plugin::springBuilder) .findFirst() .orElse(new SpringApplicationConfigurator()); }
public List<Thread> run() { register.ifPresent( reg -> reg.register( apps.stream().map(app -> app.getServerData()) .collect(Collectors.toList()) .toArray(new ServerData[0]))); Map<ServerApplication,CompletableFuture> mapFutures = new HashMap<>(); apps.stream().forEach(app -> mapFutures.put(app,new CompletableFuture())); List<Thread> threads = apps.stream().map(app -> start(app, app.getServerData().getModule(),mapFutures.get(app))).collect(Collectors.toList()); mapFutures.values().forEach(future -> get(future)); logger.info("Started {} Rest applications ", apps.size()); return threads; }
public SpringContextFactory(SpringBuilder builder, Config config, Class<?> c, Set<Class<?>> classes) { PersistentSet<Class> s = config.getClasses(); for(Class next : classes){ s = s.plus(next); } s = s.plus(c); Microserver microserver = c.getAnnotation(Microserver.class); final PersistentSet<Class> immutableS = s; s = Optional.ofNullable(microserver) .flatMap(ms -> Optional.ofNullable(ms.blacklistedClasses())) .map(bl -> { Set<Class> blacklistedClasses = Arrays.stream(bl) .collect(Collectors.toSet()); PersistentSet<Class> rs = immutableS.stream() .filter(clazz -> !blacklistedClasses.contains(clazz)) .hashSet(); return rs; }) .orElse(immutableS); this.classes = s; this.config = config; springBuilder = builder; }
/** * Define the packages that hibernate should scan for Hibernate entities * Should be used in conjunction Microserver Spring Configuration classes @See Classes#HIBERNATE_CLASSES * * @param packages Packages to scan for hibernate entities * @return New Config object, with configured packages */ public Config withEntityScan(String... packages) { return this.withDataSources(dataSources.put(defaultDataSourceName, Arrays.asList(packages))); }
@Test public void testGetters() { assertThat(serverData.getBaseUrlPattern(), is("url")); assertThat(serverData.getResources().size(), is(1)); assertThat(serverData.getRootContext(), is(rootContext)); assertThat(serverData.getModule().getContext(), is("context")); assertThat(serverData.getPort(), is(8080)); }
public ReactiveSeq<Tuple2<String,String>> extractResources() { return resources.stream().peek(resource -> logMissingPath(resource)) .filter(resource-> resource.getClass().getAnnotation(Path.class)!=null) .map(resource -> Tuple.tuple(resource.getClass().getName(), resource.getClass().getAnnotation(Path.class).value())); }
@Override public E toEnumOrElse(int e, E value) { return seq.getOrElse(e,value); } @Override
public void assureModule(Module module) { if (!modulePort.containsKey(module.getContext())) { HashMap<String, ModuleBean> builder = HashMap.empty(); builder = builder.putAll(modulePort); builder = builder.put(module.getContext(), ModuleBean.builder().host(getHost(module)).port(getPort(module)).build()); modulePort = builder; } }
public ApplicationContext createSpringContext() { try { ApplicationContext springContext = springBuilder.createSpringApp(config, classes.stream().toArray(i->new Class[classes.size()])); return springContext; } catch (Exception e) { logger.error(InternalErrorCode.STARTUP_FAILED_SPRING_INITIALISATION.toString(), e.getMessage()); ExceptionSoftener.throwSoftenedException(e); } return null; } public Class[] classes() {
@Override public ConfigurableApplicationContext createSpringApp(Config config, Class... classes) { logger.debug("Configuring Spring"); AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); rootContext.setAllowCircularReferences(config.isAllowCircularReferences()); rootContext.register(classes); rootContext.scan(config.getBasePackages()); rootContext.refresh(); logger.debug("Configuring Additional Spring Beans"); ConfigurableListableBeanFactory beanFactory = ((ConfigurableApplicationContext) rootContext).getBeanFactory(); config.getDataSources() .stream() .map(Tuple2::_1) .filter(it -> !new ConfigAccessor().get() .getDefaultDataSourceName() .equals(it)) .forEach(name -> { List<SpringDBConfig> dbConfig = getConfig(config, rootContext, beanFactory); dbConfig.forEach(spring -> spring.createSpringApp(name)); }); logger.debug("Finished Configuring Spring"); return rootContext; }
@Test public void entityScan() { Config config = configurer.buildConfig(MicroserverConfigurerTest.class); assertThat(config.getDataSources().getOrElse(config.getDefaultDataSourceName(), Arrays.asList()), hasItem("packages")); }
public Config withEntityScanDataSource(String dataSource, String... packages) { PersistentMap<String, List<String>> nm = dataSources.put(dataSource, Arrays.asList(packages)); return this.withDataSources(nm); }
@Test public void properties() { assertThat(configurer.buildConfig(MicroserverConfigurerTest.class).getProperties().stream().map(Tuple2::_1).toSet(), hasItem("hello")); assertThat(configurer.buildConfig(MicroserverConfigurerTest.class).getProperties().stream().map(Tuple2::_2).toSet(), hasItem("world")); }