Skip to content

Commit b81d6bc

Browse files
committed
fix: validate the effective configuration
1 parent 517b90b commit b81d6bc

2 files changed

Lines changed: 9 additions & 8 deletions

File tree

model/rest/src/main/java/ai/timefold/solver/model/rest/impl/AbstractModelAPIResource.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -656,12 +656,13 @@ public Multi<Metadata<Score_>> streamMetadata(
656656
@Produces(MediaType.APPLICATION_JSON)
657657
public ValidationResult<ValidationIssue_> getValidationResult(
658658
@Parameter(description = "Unique identifier of the schedule", required = true) @PathParam("id") String id) {
659-
ValidationBuilder validationBuilder = new ValidationBuilder();
660-
ModelRequest<ModelInput_, ModelConfigurationOverrides_> modelRequest = storageService.getModelRequest(id);
661-
if (modelRequest.modelInput() == null) {
659+
ModelInput_ modelInput = storageService.getModelInput(id);
660+
var modelConfig = Configuration.getSafeModelConfig(storageService.getConfiguration(id));
661+
if (modelInput == null) {
662662
throw new ItemNotFoundException(ErrorCodes.STORAGE_NO_JOB_FOUND, id);
663663
}
664-
modelValidator.validate(validationBuilder, modelRequest.modelInput(), modelRequest.getModelConfig());
664+
ValidationBuilder validationBuilder = new ValidationBuilder();
665+
modelValidator.validate(validationBuilder, modelInput, modelConfig);
665666
return validationBuilder.build();
666667
}
667668

model/worker/src/main/java/ai/timefold/solver/model/worker/impl/SolverWorker.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import ai.timefold.solver.model.definition.api.domain.Configuration;
4141
import ai.timefold.solver.model.definition.api.domain.Metadata;
4242
import ai.timefold.solver.model.definition.api.domain.ModelConfig;
43-
import ai.timefold.solver.model.definition.api.domain.ModelRequest;
4443
import ai.timefold.solver.model.definition.api.enrichment.SolverModelEnricherService;
4544
import ai.timefold.solver.model.definition.api.enrichment.SolverModelEnrichmentDirectorService;
4645
import ai.timefold.solver.model.definition.api.metrics.InputMetricsAware;
@@ -446,8 +445,8 @@ private LegacyValidationResult validateAndUpdateRun(String id) {
446445
return LegacyValidationResult.successful();
447446
}
448447

449-
ModelRequest modelRequest = storageService.getModelRequest(id);
450-
if (modelRequest.modelInput() == null) {
448+
ModelInput modelInput = storageService.getModelInput(id);
449+
if (modelInput == null) {
451450
logUnreadableInput(id);
452451
/*
453452
* The only case of input being null is when it cannot be parsed, in which case the metadata already
@@ -456,8 +455,9 @@ private LegacyValidationResult validateAndUpdateRun(String id) {
456455
return storageService.getMetadata(id).getValidationResult();
457456
}
458457

458+
var modelConfig = Configuration.getSafeModelConfig(storageService.getConfiguration(id));
459459
ValidationBuilder validationBuilder = new ValidationBuilder();
460-
modelValidator.validate(validationBuilder, modelRequest.modelInput(), modelRequest.getModelConfig());
460+
modelValidator.validate(validationBuilder, modelInput, modelConfig);
461461

462462
// We store both the new and old validation result format for backward compatibility.
463463
ValidationResult validationResponse = validationBuilder.build();

0 commit comments

Comments
 (0)