Skip to content

Commit c83a2e3

Browse files
committed
flex schema resolver
Signed-off-by: Bartosz Michalik <[email protected]> Signed-off-by: Bartosz Michalik <[email protected]>
1 parent 0a437b5 commit c83a2e3

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

‎src/main/java/com/amartus/sonata/blender/impl/util/IdSchemaResolver.java

+14-7
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.nio.file.Files;
3030
import java.nio.file.Path;
3131
import java.util.List;
32+
import java.util.Objects;
3233
import java.util.function.Predicate;
3334
import java.util.stream.Collectors;
3435
import java.util.stream.Stream;
@@ -39,11 +40,15 @@ public class IdSchemaResolver {
3940
private final UrnPredicate urnPredicate;
4041

4142
public IdSchemaResolver(String functionName) {
42-
this.urnPredicate = new UrnPredicate(functionName);
43+
this.urnPredicate = new UrnPredicate(disc -> disc.endsWith("all") || disc.endsWith(functionName));
44+
}
45+
46+
public IdSchemaResolver(Predicate<String> discrMatcher) {
47+
this.urnPredicate = new UrnPredicate(Objects.requireNonNull(discrMatcher));
4348
}
4449

4550
public List<Path> findProductSpecifications(Path rootPath) {
46-
var walker = new FileWalker<>(Files::isRegularFile, p -> urnPredicate.test(p));
51+
var walker = new FileWalker<>(Files::isRegularFile, urnPredicate::test);
4752

4853
try (Stream<Pair<Path, Boolean>> allFiles = walker.walk(rootPath)) {
4954
return allFiles
@@ -61,15 +66,17 @@ static class UrnPredicate implements Predicate<Path> {
6166
private final ObjectMapper json;
6267
private final ObjectMapper yaml;
6368
private final UrnBasedNamingStrategy namingStrategy;
64-
private final String functionName;
6569

66-
private UrnPredicate(String functionName) {
70+
private final Predicate<String> discriminatorMatcher;
71+
72+
private UrnPredicate(Predicate<String> discriminatorMatcher) {
6773
this.json = SerializationUtils.jsonMapper();
6874
this.yaml = SerializationUtils.yamlMapper();
6975
this.namingStrategy = new UrnBasedNamingStrategy();
70-
this.functionName = functionName;
76+
this.discriminatorMatcher = discriminatorMatcher;
7177
}
7278

79+
7380
@Override
7481
public boolean test(Path path) {
7582
var content = read(path);
@@ -80,11 +87,11 @@ public boolean test(Path path) {
8087
var toInclude = namingStrategy.provideNameAndDiscriminator(null, content)
8188
.map(n -> {
8289
String disc = n.getDiscriminatorValue();
83-
return (disc.endsWith("all") || disc.endsWith(functionName));
90+
return discriminatorMatcher.test(disc);
8491
})
8592
.orElse(false);
8693
if (!toInclude) {
87-
log.info("{} is not a valid MEF URN for {} function. skipping", path, functionName);
94+
log.info("{} is has no recognized ID. skipping", path);
8895
}
8996
return toInclude;
9097
}

0 commit comments

Comments
 (0)