From 6b32f86f4a06c81576ef92f3959d45be4d2ac389 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 24 Jan 2022 22:56:16 +0100 Subject: Make Application immutable --- .../com/yahoo/searchdefinition/Application.java | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/Application.java') diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/Application.java b/config-model/src/main/java/com/yahoo/searchdefinition/Application.java index fe29c9cf313..9c1cc839092 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/Application.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/Application.java @@ -20,23 +20,28 @@ import java.util.Map; public class Application { private final ApplicationPackage applicationPackage; - private final Map schemas = new LinkedHashMap<>(); + private final Map schemas; private final DocumentModel documentModel = new DocumentModel(); - public Application(ApplicationPackage applicationPackage) { + public Application(ApplicationPackage applicationPackage, List schemas, DeployLogger logger) { this.applicationPackage = applicationPackage; - } - public ApplicationPackage applicationPackage() { return applicationPackage; } + Map schemaMap = new LinkedHashMap<>(); + for (Schema schema : schemas) { + if (schemaMap.containsKey(schema.getName())) + throw new IllegalArgumentException("Duplicate schema '" + schema.getName() + "' in " + this); + schemaMap.put(schema.getName(), schema); + } + this.schemas = Collections.unmodifiableMap(schemaMap); - public void add(Schema schema) { - if (schemas.containsKey(schema.getName())) - throw new IllegalArgumentException("Duplicate schema '" + schema.getName() + "' in " + this); - schemas.put(schema.getName(), schema); + schemas.forEach(schema -> schema.setOwner(this)); + schemas.forEach(schema -> schema.validate(logger)); } + public ApplicationPackage applicationPackage() { return applicationPackage; } + /** Returns an unmodifiable list of the schemas of this application */ - public Map schemas() { return Collections.unmodifiableMap(schemas); } + public Map schemas() { return schemas; } public void buildDocumentModel(List schemasSomewhatOrdered) { var builder = new DocumentModelBuilder(documentModel); @@ -45,11 +50,6 @@ public class Application { public DocumentModel documentModel() { return documentModel; } - /** Validates this. Must be called after all content is added to it. */ - public void validate(DeployLogger logger) { - schemas.values().forEach(schema -> schema.validate(logger)); - } - @Override public String toString() { return "application " + applicationPackage.getApplicationId(); } -- cgit v1.2.3