diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-01-24 16:23:49 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-01-24 16:23:49 +0100 |
commit | 9e4475ac75b367361f742324a864799f8bbbbb4c (patch) | |
tree | ac84a58b1ae2e206ee7496020ef9e735cfeb689b | |
parent | 4ee97e3a8b6a6be751f11e0f931029057a46664d (diff) |
Simplify
-rw-r--r-- | config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java | 20 | ||||
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/SchemaBuilder.java | 31 |
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) {} + } } |