Skip to content

Commit b99631f

Browse files
authored
Merge pull request #147 from scalecube/feature/146/predicate-shortcuts
Feature/146/predicate shortcuts
2 parents 472e454 + 6c42f78 commit b99631f

13 files changed

+296
-208
lines changed

config-examples/src/main/java/io/scalecube/config/examples/ConfigRegistryExample.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import io.scalecube.config.audit.Slf4JConfigEventListener;
77
import io.scalecube.config.http.server.ConfigRegistryHttpServer;
88
import io.scalecube.config.source.ClassPathConfigSource;
9-
import io.scalecube.config.source.DirectoryConfigSource;
9+
import io.scalecube.config.source.FileDirectoryConfigSource;
1010
import java.nio.file.Path;
1111
import java.util.function.Predicate;
1212

@@ -28,7 +28,7 @@ public static void main(String[] args) {
2828
ConfigRegistrySettings.builder()
2929
.addLastSource("classpath", new ClassPathConfigSource(propsPredicate))
3030
.addLastSource(
31-
"configDirectory", new DirectoryConfigSource(basePath, propsPredicate))
31+
"configDirectory", new FileDirectoryConfigSource(basePath, propsPredicate))
3232
.addListener(new Slf4JConfigEventListener())
3333
.jmxEnabled(true)
3434
.jmxMBeanName("config.exporter:name=ConfigRegistry")

config-examples/src/main/java/io/scalecube/config/examples/DemoConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import io.scalecube.config.mongo.MongoConfigConnector;
1010
import io.scalecube.config.mongo.MongoConfigEventListener;
1111
import io.scalecube.config.mongo.MongoConfigRepository;
12-
import io.scalecube.config.source.DirectoryConfigSource;
12+
import io.scalecube.config.source.FileDirectoryConfigSource;
1313
import java.nio.file.Path;
1414
import java.util.function.Predicate;
1515

@@ -45,7 +45,7 @@ public static void main(String[] args) {
4545
ConfigRegistry.create(
4646
ConfigRegistrySettings.builder()
4747
.addLastSource(
48-
"ConfigDirectory", new DirectoryConfigSource(basePath, propsPredicate))
48+
"ConfigDirectory", new FileDirectoryConfigSource(basePath, propsPredicate))
4949
.addLastSource("MongoConfig", mongoConfigSource)
5050
.addListener(new Slf4JConfigEventListener())
5151
.addListener(new MongoConfigEventListener(connector, auditLogCollectionName))

config-examples/src/main/java/io/scalecube/config/examples/LocalResourceConfigExample.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import io.scalecube.config.ConfigRegistrySettings;
55
import io.scalecube.config.StringConfigProperty;
66
import io.scalecube.config.source.ClassPathConfigSource;
7-
import io.scalecube.config.source.DirectoryConfigSource;
7+
import io.scalecube.config.source.FileDirectoryConfigSource;
88
import java.nio.file.Path;
99
import java.util.function.Predicate;
1010

@@ -26,7 +26,7 @@ public static void main(String[] args) {
2626
ConfigRegistrySettings.builder()
2727
.addLastSource("classpath", new ClassPathConfigSource(propsPredicate))
2828
.addLastSource(
29-
"configDirectory", new DirectoryConfigSource(basePath, propsPredicate))
29+
"configDirectory", new FileDirectoryConfigSource(basePath, propsPredicate))
3030
.jmxEnabled(false)
3131
.build());
3232

config-examples/src/main/java/io/scalecube/config/examples/PredicateOrderingConfigExample.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import io.scalecube.config.source.SystemPropertiesConfigSource;
88
import java.nio.file.Path;
99
import java.util.function.Predicate;
10+
import java.util.stream.Collectors;
11+
import java.util.stream.Stream;
1012

1113
@SuppressWarnings("OptionalGetWithoutIsPresent")
1214
public class PredicateOrderingConfigExample {
@@ -38,13 +40,15 @@ public static void main(String[] args) {
3840
new SystemPropertiesConfigSource(new ClassPathConfigSource(customSysPredicate)))
3941
.addLastSource(
4042
"classpath",
41-
new ClassPathConfigSource(firstPredicate, secondPredicate, rootPredicate))
43+
new ClassPathConfigSource(
44+
Stream.of(firstPredicate, secondPredicate, rootPredicate)
45+
.collect(Collectors.toList())))
4246
.build());
4347

4448
StringConfigProperty orderedProp1 = configRegistry.stringProperty("orderedProp1");
45-
String foo = configRegistry.stringValue("foo", null);
46-
String bar = configRegistry.stringValue("bar", null);
47-
String sysFoo = configRegistry.stringValue("sys.foo", null);
49+
String foo = configRegistry.stringProperty("foo").valueOrThrow();
50+
String bar = configRegistry.stringProperty("bar").valueOrThrow();
51+
String sysFoo = configRegistry.stringProperty("sys.foo").valueOrThrow();
4852

4953
System.out.println(
5054
"### Matched by first predicate: orderedProp1=" + orderedProp1.value().get());
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package io.scalecube.config.examples;
2+
3+
import io.scalecube.config.ConfigRegistry;
4+
import io.scalecube.config.ConfigRegistrySettings;
5+
import io.scalecube.config.StringConfigProperty;
6+
import io.scalecube.config.source.ClassPathConfigSource;
7+
import io.scalecube.config.source.SystemPropertiesConfigSource;
8+
import java.util.stream.Collectors;
9+
import java.util.stream.Stream;
10+
11+
@SuppressWarnings("OptionalGetWithoutIsPresent")
12+
public class PredicateShortcutsConfigExample {
13+
14+
/**
15+
* Main method for example of predicate ordering.
16+
*
17+
* @param args program arguments
18+
*/
19+
public static void main(String[] args) {
20+
// Emulate scenario where sys.foo was also given from system properties
21+
// System.setProperty("sys.foo", "sys foo from java system properties");
22+
23+
String mask = ".*config\\.props";
24+
25+
ConfigRegistry configRegistry =
26+
ConfigRegistry.create(
27+
ConfigRegistrySettings.builder()
28+
.addLastSource("sysProps", new SystemPropertiesConfigSource())
29+
.addLastSource(
30+
"customSysProps",
31+
new SystemPropertiesConfigSource(
32+
ClassPathConfigSource.createWithPattern(
33+
mask, Stream.of("customSys").collect(Collectors.toList()))))
34+
.addLastSource(
35+
"classpath",
36+
ClassPathConfigSource.createWithPattern(
37+
mask, Stream.of("order1", "order2").collect(Collectors.toList())))
38+
.build());
39+
40+
StringConfigProperty orderedProp1 = configRegistry.stringProperty("orderedProp1");
41+
String foo = configRegistry.stringProperty("foo").valueOrThrow();
42+
String bar = configRegistry.stringProperty("bar").valueOrThrow();
43+
String sysFoo = configRegistry.stringProperty("sys.foo").valueOrThrow();
44+
45+
System.out.println(
46+
"### Matched by first predicate: orderedProp1=" + orderedProp1.value().get());
47+
System.out.println("### Regardeless of predicates: foo=" + foo + ", bar=" + bar);
48+
System.out.println(
49+
"### Custom system property: sysFoo="
50+
+ sysFoo
51+
+ ", System.getProperty(sysFoo)="
52+
+ System.getProperty("sys.foo"));
53+
}
54+
}

config-examples/src/main/java/io/scalecube/config/examples/ReloadableLocalResourceConfigExample.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import io.scalecube.config.ObjectConfigProperty;
88
import io.scalecube.config.StringConfigProperty;
99
import io.scalecube.config.audit.Slf4JConfigEventListener;
10-
import io.scalecube.config.source.DirectoryConfigSource;
10+
import io.scalecube.config.source.FileDirectoryConfigSource;
1111
import java.io.BufferedWriter;
1212
import java.io.File;
1313
import java.io.FileWriter;
@@ -18,6 +18,8 @@
1818
import java.util.Map;
1919
import java.util.concurrent.TimeUnit;
2020
import java.util.function.Predicate;
21+
import java.util.stream.Collectors;
22+
import java.util.stream.Stream;
2123

2224
@SuppressWarnings("OptionalGetWithoutIsPresent")
2325
public class ReloadableLocalResourceConfigExample {
@@ -39,7 +41,10 @@ public static void main(String[] args) throws Exception {
3941
ConfigRegistrySettings.builder()
4042
.addLastSource(
4143
"configDirectory",
42-
new DirectoryConfigSource(basePath, reloadablePropsPredicate, propsPredicate))
44+
new FileDirectoryConfigSource(
45+
basePath,
46+
Stream.of(reloadablePropsPredicate, propsPredicate)
47+
.collect(Collectors.toList())))
4348
.addListener(new Slf4JConfigEventListener())
4449
.reloadIntervalSec(1)
4550
.build());

config/src/main/java/io/scalecube/config/audit/Slf4JConfigEventListener.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ public void onEvents(Collection<ConfigEvent> events) {
1414
if (!events.isEmpty()) {
1515
StringBuilder sb = new StringBuilder();
1616
sb.append("[");
17-
events
18-
.stream()
17+
events.stream()
1918
.sorted(Comparator.comparing(ConfigEvent::getName))
2019
.forEach(
2120
event -> {
@@ -30,7 +29,7 @@ public void onEvents(Collection<ConfigEvent> events) {
3029
sb.append(originAsString(event));
3130
});
3231
sb.append("\n").append("]");
33-
LOGGER.info("Config property changed: {}", sb);
32+
LOGGER.info(sb.toString());
3433
}
3534
}
3635

0 commit comments

Comments
 (0)