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; }
/** * 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))); }
@Override public int size() { return host.size(); }
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; } }
@Override public boolean isEmpty() { return host.isEmpty(); }
default boolean contains(Tuple2<K, V> t) { return get(t._1()).filter(v-> Objects.equals(v,t._2())).isPresent(); } default MapView<K,V> mapView(){
/** * <pre> * {@code * PersistentMap<Integer,String> q = Reducers.toPersistentMap() .foldMap(Stream.of(Arrays.asList("hello",1),Arrays.asList("world",2))); * * } * </pre> * @return Reducer for PersistentMap */ public static <K, V> Reducer<PersistentMap<K, V>,Tuple2<K,V>> toPersistentMap() { return Reducer.of(HashMap.empty(), (final PersistentMap<K, V> a) -> b -> a.putAll(b), (in) -> { Tuple2<K, V> w = in; return HashMap.of((K) w._1(), (V) w._2()); }); }
default boolean isEmpty(){ return size()==0; }
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; } }
@Override public boolean isEmpty() { return host.isEmpty(); }
default boolean contains(Tuple2<K, V> t) { return get(t._1()).filter(v-> Objects.equals(v,t._2())).isPresent(); } default MapView<K,V> mapView(){
/** * <pre> * {@code * PersistentMap<Integer,String> q = Reducers.toPersistentMap() .foldMap(Stream.of(Arrays.asList("hello",1),Arrays.asList("world",2))); * * } * </pre> * @return Reducer for PersistentMap */ public static <K, V> Reducer<PersistentMap<K, V>,Tuple2<K,V>> toPersistentMap() { return Reducer.of(HashMap.empty(), (final PersistentMap<K, V> a) -> b -> a.putAll(b), (in) -> { Tuple2<K, V> w = in; return HashMap.of((K) w._1(), (V) w._2()); }); }
@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); }
@Override public int size() { return host.size(); }
@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")); }