Skip to content

Commit 7304638

Browse files
committed
Fixed bug in method createWithPAtter
1 parent b99631f commit 7304638

File tree

6 files changed

+34
-29
lines changed

6 files changed

+34
-29
lines changed

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,31 +20,33 @@ public static void main(String[] args) {
2020
// Emulate scenario where sys.foo was also given from system properties
2121
// System.setProperty("sys.foo", "sys foo from java system properties");
2222

23-
String mask = ".*config\\.props";
23+
String filename = "config.props";
2424

2525
ConfigRegistry configRegistry =
2626
ConfigRegistry.create(
2727
ConfigRegistrySettings.builder()
28-
.addLastSource("sysProps", new SystemPropertiesConfigSource())
28+
.addLastSource("system", new SystemPropertiesConfigSource())
2929
.addLastSource(
30-
"customSysProps",
30+
"system.from.file",
3131
new SystemPropertiesConfigSource(
3232
ClassPathConfigSource.createWithPattern(
33-
mask, Stream.of("customSys").collect(Collectors.toList()))))
33+
filename, Stream.of("system").collect(Collectors.toList()))))
3434
.addLastSource(
3535
"classpath",
3636
ClassPathConfigSource.createWithPattern(
37-
mask, Stream.of("order1", "order2").collect(Collectors.toList())))
37+
filename, Stream.of("order1", "order2").collect(Collectors.toList())))
3838
.build());
3939

4040
StringConfigProperty orderedProp1 = configRegistry.stringProperty("orderedProp1");
4141
String foo = configRegistry.stringProperty("foo").valueOrThrow();
4242
String bar = configRegistry.stringProperty("bar").valueOrThrow();
43+
String baz = configRegistry.stringProperty("baz").valueOrThrow();
4344
String sysFoo = configRegistry.stringProperty("sys.foo").valueOrThrow();
4445

4546
System.out.println(
4647
"### Matched by first predicate: orderedProp1=" + orderedProp1.value().get());
47-
System.out.println("### Regardeless of predicates: foo=" + foo + ", bar=" + bar);
48+
System.out.println(
49+
"### Regardeless of predicates: foo=" + foo + ", bar=" + bar + ", baz=" + baz);
4850
System.out.println(
4951
"### Custom system property: sysFoo="
5052
+ sysFoo
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
foo=foo
22
bar=bar
3+
baz=baz
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
sys.foo=very cool custom system property
2+
baz=custom baz

config/src/main/java/io/scalecube/config/source/ClassPathConfigSource.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ public ClassPathConfigSource(List<Predicate<Path>> predicates) {
5454
}
5555

5656
/**
57-
* Factory method to create {@code ClassPathConfigSource} instance by configuration file mask plus
58-
* its prefixes.
57+
* Factory method to create {@code ClassPathConfigSource} instance using filename plus its
58+
* prefixes.
5959
*
60-
* @param mask mask for template of configuration property file
60+
* @param filename filename for template of configuration property file
6161
* @param prefixes list of prefixes (comma separated list of strings)
6262
* @return new {@code ClassPathConfigSource} instance
6363
*/
64-
public static ClassPathConfigSource createWithPattern(String mask, List<String> prefixes) {
65-
Objects.requireNonNull(mask, "ClassPathConfigSource: mask is required");
64+
public static ClassPathConfigSource createWithPattern(String filename, List<String> prefixes) {
65+
Objects.requireNonNull(filename, "ClassPathConfigSource: filename is required");
6666
Objects.requireNonNull(prefixes, "ClassPathConfigSource: prefixes is required");
67-
return new ClassPathConfigSource(preparePatternPredicates(mask, prefixes));
67+
return new ClassPathConfigSource(preparePatternPredicates(filename, prefixes));
6868
}
6969

7070
@Override

config/src/main/java/io/scalecube/config/source/FileDirectoryConfigSource.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,20 @@ public FileDirectoryConfigSource(String directory, List<Predicate<Path>> predica
4343
}
4444

4545
/**
46-
* Factory method to create {@code FileDirectoryConfigSource} instance by configuration file mask
47-
* plus its prefixes.
46+
* Factory method to create {@code FileDirectoryConfigSource} instance using filename plus its
47+
* prefixes.
4848
*
4949
* @param directory directory with configuration files
50-
* @param mask mask for template of configuration property file
50+
* @param filename filename for template of configuration property file
5151
* @param prefixes list of prefixes (comma separated list of strings)
5252
* @return new {@code FileDirectoryConfigSource} instance
5353
*/
5454
public static FileDirectoryConfigSource createWithPattern(
55-
String directory, String mask, List<String> prefixes) {
55+
String directory, String filename, List<String> prefixes) {
5656
Objects.requireNonNull(directory, "FileDirectoryConfigSource: directory is required");
57-
Objects.requireNonNull(mask, "FileDirectoryConfigSource: mask is required");
57+
Objects.requireNonNull(filename, "FileDirectoryConfigSource: filename is required");
5858
Objects.requireNonNull(prefixes, "FileDirectoryConfigSource: prefixes is required");
59-
return new FileDirectoryConfigSource(directory, preparePatternPredicates(mask, prefixes));
59+
return new FileDirectoryConfigSource(directory, preparePatternPredicates(filename, prefixes));
6060
}
6161

6262
@Override

config/src/main/java/io/scalecube/config/source/FilteredPathConfigSource.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.scalecube.config.utils.ThrowableUtil;
44
import java.io.InputStream;
55
import java.nio.file.Path;
6+
import java.util.ArrayList;
67
import java.util.Collection;
78
import java.util.Collections;
89
import java.util.Enumeration;
@@ -14,9 +15,7 @@
1415
import java.util.Properties;
1516
import java.util.function.BiConsumer;
1617
import java.util.function.Predicate;
17-
import java.util.regex.Pattern;
1818
import java.util.stream.Collectors;
19-
import java.util.stream.Stream;
2019

2120
public abstract class FilteredPathConfigSource implements ConfigSource {
2221
protected final List<Predicate<Path>> predicates;
@@ -32,16 +31,18 @@ protected final Map<Path, Map<String, String>> loadConfigMap(Collection<Path> pa
3231
.collect(Collectors.toMap(path -> path, FilteredPathConfigSource::loadProperties));
3332
}
3433

35-
static List<Predicate<Path>> preparePatternPredicates(String mask, List<String> prefixes) {
36-
Pattern pattern = Pattern.compile(mask);
37-
Predicate<Path> patternPredicate = path -> pattern.matcher(path.toString()).matches();
34+
static List<Predicate<Path>> preparePatternPredicates(String filename, List<String> prefixes) {
35+
final List<String> finalPrefixes = new ArrayList<>(prefixes);
36+
finalPrefixes.add(null); // add last one as null
3837

39-
Stream<Predicate<Path>> stream =
40-
prefixes.stream()
41-
.map(p -> (Predicate<Path>) path -> path.getFileName().toString().startsWith(p))
42-
.map(p -> p.and(patternPredicate));
43-
44-
return Stream.concat(stream, Stream.of(patternPredicate)).collect(Collectors.toList());
38+
return finalPrefixes.stream()
39+
.<Predicate<Path>>map(
40+
p ->
41+
(Path path) -> {
42+
String name = path.getFileName().toString();
43+
return name.equals(p != null ? p + "." + filename : filename);
44+
})
45+
.collect(Collectors.toList());
4546
}
4647

4748
static void filterAndCollectInOrder(

0 commit comments

Comments
 (0)