aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-01-24 16:23:49 +0100
committerJon Bratseth <bratseth@gmail.com>2022-01-24 16:23:49 +0100
commit9e4475ac75b367361f742324a864799f8bbbbb4c (patch)
treeac84a58b1ae2e206ee7496020ef9e735cfeb689b /config-model
parent4ee97e3a8b6a6be751f11e0f931029057a46664d (diff)
Simplify
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java20
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java31
2 files changed, 26 insertions, 25 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
index fb7fa00ed88..3175252011c 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
@@ -474,31 +474,13 @@ public class DeployState implements ConfigDefinitionStore {
private SearchDocumentModel createSearchDocumentModel(RankProfileRegistry rankProfileRegistry,
QueryProfiles queryProfiles,
ValidationParameters validationParameters) {
- Collection<NamedReader> readers = applicationPackage.getSchemas();
SchemaBuilder builder = new SchemaBuilder(applicationPackage, fileRegistry, logger, properties,
rankProfileRegistry, queryProfiles.getRegistry());
- for (NamedReader reader : readers) {
- try {
- String readerName = reader.getName();
- String topLevelName = builder.importReader(reader, readerName);
- } catch (ParseException e) {
- throw new IllegalArgumentException("Could not parse schema file '" + reader.getName() + "'", e);
- } catch (IOException e) {
- throw new IllegalArgumentException("Could not read schema file '" + reader.getName() + "'", e);
- } finally {
- closeIgnoreException(reader.getReader());
- }
- }
+ builder.importFromApplicationPackage();
builder.build(! validationParameters.ignoreValidationErrors());
return SearchDocumentModel.fromBuilder(builder);
}
- @SuppressWarnings("EmptyCatchBlock")
- private static void closeIgnoreException(Reader reader) {
- try {
- reader.close();
- } catch(Exception e) {}
- }
}
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java b/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java
index 3db9017fa8d..1e3447acb46 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java
@@ -28,6 +28,7 @@ import com.yahoo.yolean.Exceptions;
import java.io.File;
import java.io.IOException;
+import java.io.Reader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
@@ -148,22 +149,34 @@ public class SchemaBuilder {
return importFile(file.toString());
}
+ public void importFromApplicationPackage() {
+ for (NamedReader reader : application.applicationPackage().getSchemas()) {
+ try {
+ importFrom(reader);
+ } catch (ParseException e) {
+ throw new IllegalArgumentException("Could not parse schema file '" + reader.getName() + "'", e);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Could not read schema file '" + reader.getName() + "'", e);
+ } finally {
+ closeIgnoreException(reader.getReader());
+ }
+ }
+ }
+
/**
* Reads and parses the schema string provided by the given reader. Once all schemas have been
* imported, call {@link #build()}.
*
* @param reader the reader whose content to import
- * @param schemaDir the path to use when resolving file references
* @return the name of the imported schema
* @throws ParseException thrown if the file does not contain a valid search definition
*/
- public String importReader(NamedReader reader, String schemaDir) throws IOException, ParseException {
- String schemaName = importString(IOUtils.readAll(reader), schemaDir);
+ private String importFrom(NamedReader reader) throws IOException, ParseException {
+ String schemaName = importString(IOUtils.readAll(reader), reader.getName());
String schemaFileName = stripSuffix(reader.getName(), ApplicationPackage.SD_NAME_SUFFIX);
if ( ! schemaFileName.equals(schemaName)) {
- throw new IllegalArgumentException("Schema file name ('" + schemaFileName + "') and name of " +
- "top level element ('" + schemaName +
- "') are not equal for file '" + reader.getName() + "'");
+ throw new IllegalArgumentException("The file containing schema '" + schemaName + "' must be named '" +
+ schemaName + ApplicationPackage.SD_NAME_SUFFIX + "', not " + reader.getName());
}
return schemaName;
}
@@ -563,4 +576,10 @@ public class SchemaBuilder {
public DeployLogger getDeployLogger() { return deployLogger; }
+ @SuppressWarnings("EmptyCatchBlock")
+ private static void closeIgnoreException(Reader reader) {
+ try {
+ reader.close();
+ } catch(Exception e) {}
+ }
}