Skip to content

Commit d172be8

Browse files
committed
Allow initialisation of Validators with Settings
1 parent cc0ee22 commit d172be8

8 files changed

Lines changed: 35 additions & 6 deletions

File tree

FROST-Server.Core.Model/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
3838
<groupId>de.fraunhofer.iosb.ilt</groupId>
3939
<artifactId>Configurable</artifactId>
4040
</dependency>
41+
<dependency>
42+
<groupId>de.fraunhofer.iosb.ilt</groupId>
43+
<artifactId>Settings</artifactId>
44+
</dependency>
4145
<dependency>
4246
<groupId>de.grundid.opendatalab</groupId>
4347
<artifactId>geojson-jackson</artifactId>

FROST-Server.Core.Model/src/main/java/de/fraunhofer/iosb/ilt/frostserver/model/core/EntityValidator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@
1919

2020
import com.fasterxml.jackson.annotation.JsonTypeInfo;
2121
import de.fraunhofer.iosb.ilt.frostserver.util.exception.IncompleteEntityException;
22+
import de.fraunhofer.iosb.ilt.settings.Settings;
2223

2324
/**
2425
* A validator that checks if an Entity has no missing properties.
2526
*/
2627
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
2728
public interface EntityValidator {
2829

30+
public default void init(Settings settings) {
31+
// Does nothing by default.
32+
}
33+
2934
/**
3035
* Check if all required properties are non-null on the given Entity.
3136
*

FROST-Server.Core.Model/src/main/java/de/fraunhofer/iosb/ilt/frostserver/model/loader/DefEntityType.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import de.fraunhofer.iosb.ilt.frostserver.query.OrderBy;
3434
import de.fraunhofer.iosb.ilt.frostserver.query.expression.Path;
3535
import de.fraunhofer.iosb.ilt.frostserver.util.StringHelper;
36+
import de.fraunhofer.iosb.ilt.settings.Settings;
3637
import java.util.ArrayList;
3738
import java.util.List;
3839
import org.slf4j.Logger;
@@ -157,6 +158,13 @@ public void init() {
157158
}
158159

159160
public EntityType getEntityType(ModelRegistry modelRegistry) {
161+
if (entityType == null) {
162+
throw new IllegalStateException("EntityType " + name + " not initialised!");
163+
}
164+
return entityType;
165+
}
166+
167+
public EntityType getEntityType(ModelRegistry modelRegistry, Settings settings) {
160168
if (entityType == null) {
161169
entityType = modelRegistry.getEntityTypeForName(name, true);
162170
if (entityType == null) {
@@ -165,7 +173,7 @@ public EntityType getEntityType(ModelRegistry modelRegistry) {
165173
entityType.setAdminOnly(adminOnly);
166174
}
167175
if (validators != null) {
168-
validators.createValidators(modelRegistry, entityType);
176+
validators.createValidators(modelRegistry, entityType, settings.getSubSettings(name + '.'));
169177
}
170178
entityType.addAnnotations(annotations);
171179
}

FROST-Server.Core.Model/src/main/java/de/fraunhofer/iosb/ilt/frostserver/model/loader/DefModel.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import de.fraunhofer.iosb.ilt.configurable.editor.EditorList;
2525
import de.fraunhofer.iosb.ilt.configurable.editor.EditorString;
2626
import de.fraunhofer.iosb.ilt.frostserver.model.ModelRegistry;
27+
import de.fraunhofer.iosb.ilt.settings.Settings;
2728
import java.util.ArrayList;
2829
import java.util.List;
2930

@@ -66,9 +67,9 @@ public void registerPropertyTypes(ModelRegistry modelRegistry) {
6667
}
6768
}
6869

69-
public void registerEntityTypes(ModelRegistry modelRegistry) {
70+
public void registerEntityTypes(ModelRegistry modelRegistry, Settings settings) {
7071
for (DefEntityType defType : entityTypes) {
71-
modelRegistry.registerEntityType(defType.getEntityType(modelRegistry));
72+
modelRegistry.registerEntityType(defType.getEntityType(modelRegistry, settings));
7273
}
7374
}
7475

FROST-Server.Core.Model/src/main/java/de/fraunhofer/iosb/ilt/frostserver/model/loader/DefValidator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import de.fraunhofer.iosb.ilt.frostserver.model.EntityType;
2727
import de.fraunhofer.iosb.ilt.frostserver.model.ModelRegistry;
2828
import de.fraunhofer.iosb.ilt.frostserver.model.core.EntityValidator;
29+
import de.fraunhofer.iosb.ilt.settings.Settings;
2930
import java.util.ArrayList;
3031
import java.util.List;
3132

@@ -53,13 +54,17 @@ public class DefValidator {
5354
*
5455
* @param modelRegistry The model to modify.
5556
* @param entityType The entity type to create the validator for.
57+
* @param settings The settings object used to load settings for the
58+
* validators.
5659
*/
57-
public void createValidators(ModelRegistry modelRegistry, EntityType entityType) {
60+
public void createValidators(ModelRegistry modelRegistry, EntityType entityType, Settings settings) {
5861
for (var namedValidator : getCreateValidators()) {
5962
entityType.addCreateValidator(namedValidator.name, namedValidator.validator);
63+
namedValidator.validator.init(settings.getSubSettings(namedValidator.name + '.'));
6064
}
6165
for (var namedValidator : getUpdateValidators()) {
6266
entityType.addUpdateValidator(namedValidator.name, namedValidator.validator);
67+
namedValidator.validator.init(settings.getSubSettings(namedValidator.name + '.'));
6368
}
6469
}
6570

Plugins/CoreModelV2/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
<artifactId>FROST-Server.Util</artifactId>
4545
<version>${project.version}</version>
4646
</dependency>
47+
<dependency>
48+
<groupId>de.fraunhofer.iosb.ilt</groupId>
49+
<artifactId>Settings</artifactId>
50+
</dependency>
4751
<dependency>
4852
<groupId>org.junit.jupiter</groupId>
4953
<artifactId>junit-jupiter</artifactId>

Plugins/ModelLoader/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/modelloader/PluginModelLoader.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
*/
6868
public class PluginModelLoader implements PluginRootDocument, PluginModel, LiquibaseUser {
6969

70+
public static final String PREFIX_DATA_MODEL = "dataModel.";
7071
private static final Logger LOGGER = LoggerFactory.getLogger(PluginModelLoader.class.getName());
7172

7273
private CoreSettings settings;
@@ -329,7 +330,8 @@ public void registerEntityTypes() {
329330

330331
ModelRegistry modelRegistry = settings.getModelRegistry();
331332
for (DefModel modelDefinition : modelDefinitions) {
332-
modelDefinition.registerEntityTypes(modelRegistry);
333+
final Settings dmSettings = settings.getSettings().getSubSettings(PREFIX_DATA_MODEL);
334+
modelDefinition.registerEntityTypes(modelRegistry, dmSettings);
333335
}
334336
}
335337

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
<version.postgis>2025.1.1</version.postgis>
134134
<version.postgres>42.7.8</version.postgres>
135135
<version.prometheus>1.4.3</version.prometheus>
136-
<version.settings>1.1</version.settings>
136+
<version.settings>1.2</version.settings>
137137
<version.slf4j-api>2.0.17</version.slf4j-api>
138138
<version.testcontainers>2.0.3</version.testcontainers>
139139
<version.testcontainers-keycloak>4.1.0</version.testcontainers-keycloak>

0 commit comments

Comments
 (0)