aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/Application.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-01-24 22:56:16 +0100
committerJon Bratseth <bratseth@gmail.com>2022-01-24 22:56:16 +0100
commit6b32f86f4a06c81576ef92f3959d45be4d2ac389 (patch)
tree942c7308dc36010ceba5f70d1ac1c6c8691f9e9c /config-model/src/main/java/com/yahoo/searchdefinition/Application.java
parentc9be2d021bdf5b57a00fab40db35a3e3ece95760 (diff)
Make Application immutable
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/Application.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/Application.java28
1 files changed, 14 insertions, 14 deletions
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<String, Schema> schemas = new LinkedHashMap<>();
+ private final Map<String, Schema> schemas;
private final DocumentModel documentModel = new DocumentModel();
- public Application(ApplicationPackage applicationPackage) {
+ public Application(ApplicationPackage applicationPackage, List<Schema> schemas, DeployLogger logger) {
this.applicationPackage = applicationPackage;
- }
- public ApplicationPackage applicationPackage() { return applicationPackage; }
+ Map<String, Schema> 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<String, Schema> schemas() { return Collections.unmodifiableMap(schemas); }
+ public Map<String, Schema> schemas() { return schemas; }
public void buildDocumentModel(List<Schema> 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(); }