From 5ee6562771b322f21d5a54dfc65379793c339a14 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Wed, 18 May 2022 23:08:58 +0200 Subject: Allow rank profiles in subdirectories --- .../config/model/test/MockApplicationPackage.java | 18 ++++++++++++------ .../com/yahoo/searchdefinition/ApplicationBuilder.java | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) (limited to 'config-model/src/main') diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java index 6351232b789..8892de0a88d 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/MockApplicationPackage.java @@ -145,15 +145,21 @@ public class MockApplicationPackage implements ApplicationPackage { @Override public List getFiles(Path dir, String fileSuffix, boolean recurse) { + if (dir.elements().contains(ApplicationPackage.SEARCH_DEFINITIONS_DIR.getName())) + return List.of(); // No legacy paths + return getFiles(new File(root, dir.getName()), fileSuffix, recurse); + } + + private List getFiles(File dir, String fileSuffix, boolean recurse) { try { - if (dir.elements().contains(ApplicationPackage.SEARCH_DEFINITIONS_DIR.getName())) return List.of(); // No legacy paths - File dirFile = new File(root, dir.getName()); - if ( ! dirFile.exists()) return List.of(); - if (recurse) throw new RuntimeException("Recurse not implemented"); + if ( ! dir.exists()) return List.of(); List readers = new ArrayList<>(); - for (var i = Files.list(dirFile.toPath()).filter(p -> p.getFileName().toString().endsWith(fileSuffix)).iterator(); i.hasNext(); ) { + for (var i = Files.list(dir.toPath()).iterator(); i.hasNext(); ) { var file = i.next(); - readers.add(new NamedReader(file.toString(), IOUtils.createReader(file.toString()))); + if (file.getFileName().toString().endsWith(fileSuffix)) + readers.add(new NamedReader(file.toString(), IOUtils.createReader(file.toString()))); + else if (recurse) + readers.addAll(getFiles(new File(dir, file.getFileName().toString()), fileSuffix, recurse)); } return readers; } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/ApplicationBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/ApplicationBuilder.java index 51c183a21d9..fe0044ecfa4 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/ApplicationBuilder.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/ApplicationBuilder.java @@ -197,7 +197,8 @@ public class ApplicationBuilder { } Path rankProfilePath = ApplicationPackage.SCHEMAS_DIR.append(schemaName); - for (NamedReader reader : applicationPackage.getFiles(rankProfilePath, ".profile")) { + for (NamedReader reader : applicationPackage.getFiles(rankProfilePath, ".profile", true)) { + System.out.println("Got " + reader); mediator.addRankProfileFile(schemaName, reader); } } -- cgit v1.2.3