diff --git a/docs/src/modules/ROOT/pages/running-timefold-solver/service/rest-api.adoc b/docs/src/modules/ROOT/pages/running-timefold-solver/service/rest-api.adoc index 67813933cbd..bcdcb79196b 100644 --- a/docs/src/modules/ROOT/pages/running-timefold-solver/service/rest-api.adoc +++ b/docs/src/modules/ROOT/pages/running-timefold-solver/service/rest-api.adoc @@ -195,7 +195,7 @@ Additionally, more fields might be added for specific model implementations: [NOTE] ==== -This envelope is represented in Java/Kotlin by the `ModelResponse` record (`ai.timefold.solver.service.definition.api.domain.ModelResponse`). +This envelope is represented in Java/Kotlin by the `ModelResponse` record (`ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse`). Its accessor is named `outputMetrics()`, not `kpis()`; only the JSON serialization uses the `kpis` key (via `@JsonProperty("kpis")`). The score itself is not a top-level field: it's nested inside `metadata.score`, not `metadata.run.score` or a top-level `score`. ==== diff --git a/service/definition/pom.xml b/service/definition/pom.xml index 0331529d80c..ed2c93163b9 100644 --- a/service/definition/pom.xml +++ b/service/definition/pom.xml @@ -58,6 +58,10 @@ org.revapi revapi-maven-plugin + + + true + diff --git a/service/definition/src/build/revapi-differences.json b/service/definition/src/build/revapi-differences.json index ae2a6823f5a..19088e4c7fa 100644 --- a/service/definition/src/build/revapi-differences.json +++ b/service/definition/src/build/revapi-differences.json @@ -46,6 +46,36 @@ "new": "class ai.timefold.solver.service.definition.api.domain.RunConfiguration", "annotationType": "org.eclipse.microprofile.openapi.annotations.media.Schema", "justification": "RunConfiguration now carries a free-form options map, so the class-level @Schema(additionalProperties = Schema.False.class) was intentionally removed to allow arbitrary option keys." + }, + { + "ignore": true, + "code": "java.class.removed", + "old": "class ai.timefold.solver.service.definition.api.data.AbstractBasicDemoDataGenerator", + "justification": "Not yet ready as a public API" + }, + { + "ignore": true, + "code": "java.class.removed", + "old": "class ai.timefold.solver.service.definition.api.data.DemoData", + "justification": "Not yet ready as a public API" + }, + { + "ignore": true, + "code": "java.class.removed", + "old": "class ai.timefold.solver.service.definition.api.data.DemoDataConfigEntry", + "justification": "Not yet ready as a public API" + }, + { + "ignore": true, + "code": "java.class.removed", + "old": "interface ai.timefold.solver.service.definition.api.data.DemoDataGenerator", + "justification": "Not yet ready as a public API" + }, + { + "ignore": true, + "code": "java.class.removed", + "old": "class ai.timefold.solver.service.definition.api.data.DemoMetaData", + "justification": "Not yet ready as a public API" } ] } diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/AbstractSimpleModel.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/AbstractSimpleModel.java index 3f127346cfa..64a33b50047 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/AbstractSimpleModel.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/AbstractSimpleModel.java @@ -3,6 +3,8 @@ import ai.timefold.solver.core.api.domain.solution.PlanningScore; import ai.timefold.solver.core.api.domain.solution.PlanningSolution; import ai.timefold.solver.core.api.score.HardMediumSoftScore; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConfigOverrides.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConfigOverrides.java deleted file mode 100644 index 44d05a03c68..00000000000 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConfigOverrides.java +++ /dev/null @@ -1,5 +0,0 @@ -package ai.timefold.solver.service.definition.api; - -public interface ModelConfigOverrides { - -} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInput.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInput.java deleted file mode 100644 index 5b6732a33ae..00000000000 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInput.java +++ /dev/null @@ -1,5 +0,0 @@ -package ai.timefold.solver.service.definition.api; - -public interface ModelInput { - -} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelOutput.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelOutput.java deleted file mode 100644 index b6b07e53cc6..00000000000 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelOutput.java +++ /dev/null @@ -1,5 +0,0 @@ -package ai.timefold.solver.service.definition.api; - -public interface ModelOutput { - -} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ResourceType.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ResourceType.java deleted file mode 100644 index e563788fa31..00000000000 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ResourceType.java +++ /dev/null @@ -1,4 +0,0 @@ -package ai.timefold.solver.service.definition.api; - -public record ResourceType(String value) { -} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/UserModel.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/UserModel.java deleted file mode 100644 index a68e51a393a..00000000000 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/UserModel.java +++ /dev/null @@ -1,25 +0,0 @@ -package ai.timefold.solver.service.definition.api; - -import ai.timefold.solver.core.api.score.Score; -import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; - -public interface UserModel, Status_ extends Status> { - - Score_ getScore(); - - Status_ getStatus(); - - void setStatus(Status_ status); - - Status_ newStatus(String name); - - // TODO remove this from user model once we do request/response payload split - default SolverTerminationConfig getTermination() { // TODO remove this from user model once we do request/response payload split - return null; - } - - // TODO remove this from user model once we do request/response payload split - default void setTermination(SolverTerminationConfig termination) { - // no-op - } -} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConvertor.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/conversion/ModelConvertor.java similarity index 86% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConvertor.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/conversion/ModelConvertor.java index 31a9b728ff7..5a969133a81 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConvertor.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/conversion/ModelConvertor.java @@ -1,11 +1,15 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.conversion; import java.util.Optional; import ai.timefold.solver.core.api.score.Score; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; +import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; import org.jspecify.annotations.NullMarked; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConvertorBase.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/conversion/ModelConvertorBase.java similarity index 80% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConvertorBase.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/conversion/ModelConvertorBase.java index 73301f1fd08..9cffe56db7b 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConvertorBase.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/conversion/ModelConvertorBase.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.conversion; /** * Root interface for all {@link ModelConvertor} implementations. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoData.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoData.java deleted file mode 100644 index 3d39eed209a..00000000000 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoData.java +++ /dev/null @@ -1,9 +0,0 @@ -package ai.timefold.solver.service.definition.api.data; - -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; - -public record DemoData(DemoMetaData metaData, - ModelRequest modelRequest) { -} \ No newline at end of file diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ConstraintReference.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/description/ConstraintReference.java similarity index 92% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ConstraintReference.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/description/ConstraintReference.java index c236c84712f..85ac6ce9c6b 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ConstraintReference.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/description/ConstraintReference.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.description; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelMaturityLevel.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/description/ModelMaturityLevel.java similarity index 79% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelMaturityLevel.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/description/ModelMaturityLevel.java index b1529ba519e..e2427b592c1 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelMaturityLevel.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/description/ModelMaturityLevel.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.description; import com.fasterxml.jackson.annotation.JsonAlias; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/Configuration.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/Configuration.java similarity index 90% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/Configuration.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/Configuration.java index efafb06cb6f..7e48fb23d33 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/Configuration.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/Configuration.java @@ -1,8 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; - -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.configuration.MapsConfiguration; -import ai.timefold.solver.service.definition.api.configuration.ResourcesConfiguration; +package ai.timefold.solver.service.definition.api.dto.dataset; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/MapsConfiguration.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/MapsConfiguration.java similarity index 97% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/MapsConfiguration.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/MapsConfiguration.java index c541f3bd190..a6428c2b86b 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/MapsConfiguration.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/MapsConfiguration.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.configuration; +package ai.timefold.solver.service.definition.api.dto.dataset; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/Metadata.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/Metadata.java similarity index 97% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/Metadata.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/Metadata.java index ab15ae63911..890eb124e1f 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/Metadata.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/Metadata.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.dto.dataset; import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; @@ -8,10 +8,9 @@ import java.util.Set; import java.util.UUID; -import ai.timefold.solver.service.definition.api.SolvingStatus; -import ai.timefold.solver.service.definition.api.Status; -import ai.timefold.solver.service.definition.api.validation.LegacyValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.LegacyValidationResult; import ai.timefold.solver.service.definition.api.validation.ModelValidator; +import ai.timefold.solver.service.definition.internal.dataset.Status; import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelConfig.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelConfig.java similarity index 86% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelConfig.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelConfig.java index ddb1b88f722..b4960f49bc5 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelConfig.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelConfig.java @@ -1,6 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; - -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +package ai.timefold.solver.service.definition.api.dto.dataset; import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelConfigOverrides.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelConfigOverrides.java new file mode 100644 index 00000000000..bde03030830 --- /dev/null +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelConfigOverrides.java @@ -0,0 +1,5 @@ +package ai.timefold.solver.service.definition.api.dto.dataset; + +public interface ModelConfigOverrides { + +} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelInput.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelInput.java new file mode 100644 index 00000000000..e789b44583e --- /dev/null +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelInput.java @@ -0,0 +1,5 @@ +package ai.timefold.solver.service.definition.api.dto.dataset; + +public interface ModelInput { + +} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelOutput.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelOutput.java new file mode 100644 index 00000000000..790e02dd847 --- /dev/null +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelOutput.java @@ -0,0 +1,5 @@ +package ai.timefold.solver.service.definition.api.dto.dataset; + +public interface ModelOutput { + +} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelRequest.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelRequest.java similarity index 90% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelRequest.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelRequest.java index e9d074f2b12..c27efe8f4f0 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelRequest.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelRequest.java @@ -1,7 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; - -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; +package ai.timefold.solver.service.definition.api.dto.dataset; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelResponse.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelResponse.java similarity index 93% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelResponse.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelResponse.java index 19ff8042926..60a20697aa4 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelResponse.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ModelResponse.java @@ -1,6 +1,5 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.dto.dataset; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/ResourcesConfiguration.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ResourcesConfiguration.java similarity index 93% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/ResourcesConfiguration.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ResourcesConfiguration.java index 4aff4a67e6c..362349bf62f 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/ResourcesConfiguration.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/ResourcesConfiguration.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.configuration; +package ai.timefold.solver.service.definition.api.dto.dataset; import java.util.Map; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/RunConfiguration.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/RunConfiguration.java similarity index 95% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/RunConfiguration.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/RunConfiguration.java index 6b503a17df6..00ce189a409 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/RunConfiguration.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/RunConfiguration.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.dto.dataset; import java.util.Map; import java.util.Set; @@ -6,7 +6,7 @@ import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.Size; -import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; +import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/SolvingStatus.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/SolvingStatus.java similarity index 94% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/SolvingStatus.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/SolvingStatus.java index 445d2e50507..ac76e4edaec 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/SolvingStatus.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/dataset/SolvingStatus.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.dto.dataset; /** * Represents the dateset lifecycle. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/error/ErrorInfo.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/error/ErrorInfo.java similarity index 96% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/error/ErrorInfo.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/error/ErrorInfo.java index 11ce00e0560..bdc75db766a 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/error/ErrorInfo.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/error/ErrorInfo.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.error; +package ai.timefold.solver.service.definition.api.dto.error; import java.util.UUID; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/error/ValidationErrorInfo.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/error/ValidationErrorInfo.java similarity index 93% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/error/ValidationErrorInfo.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/error/ValidationErrorInfo.java index 73811f094ae..3a3a6dbe441 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/error/ValidationErrorInfo.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/error/ValidationErrorInfo.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.error; +package ai.timefold.solver.service.definition.api.dto.error; import java.util.List; import java.util.UUID; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/log/LogInfo.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/log/LogInfo.java similarity index 90% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/log/LogInfo.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/log/LogInfo.java index 5af6afea7d5..0d21d0cce3e 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/log/LogInfo.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/log/LogInfo.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.log; +package ai.timefold.solver.service.definition.api.dto.log; import com.fasterxml.jackson.annotation.JsonIncludeProperties; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInputPatch.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatch.java similarity index 94% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInputPatch.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatch.java index 903e45690e5..852ce80bcd1 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInputPatch.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatch.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.dto.patch; import java.util.Collection; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInputPatchOp.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatchOp.java similarity index 53% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInputPatchOp.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatchOp.java index e6d904cc11e..ec41044570c 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelInputPatchOp.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatchOp.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.dto.patch; public enum ModelInputPatchOp { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelInputPatchRequest.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatchRequest.java similarity index 73% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelInputPatchRequest.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatchRequest.java index 8b59e003d50..0b0dd9b8863 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ModelInputPatchRequest.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/patch/ModelInputPatchRequest.java @@ -1,9 +1,9 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.dto.patch; import java.util.List; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInputPatch; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConstraintJustification.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ModelConstraintJustification.java similarity index 76% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConstraintJustification.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ModelConstraintJustification.java index 0bcdda4cc76..f89cce56868 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelConstraintJustification.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ModelConstraintJustification.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.api.dto.scoreanalysis; import ai.timefold.solver.core.api.score.stream.ConstraintJustification; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ScoreAnalysisConfig.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ScoreAnalysisConfig.java similarity index 78% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ScoreAnalysisConfig.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ScoreAnalysisConfig.java index ef476838650..c7a63ef0406 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ScoreAnalysisConfig.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ScoreAnalysisConfig.java @@ -1,4 +1,6 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.dto.scoreanalysis; + +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ScoreAnalysisRequest.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ScoreAnalysisRequest.java similarity index 84% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ScoreAnalysisRequest.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ScoreAnalysisRequest.java index 4d7418321cb..86e083e51ca 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/ScoreAnalysisRequest.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/scoreanalysis/ScoreAnalysisRequest.java @@ -1,7 +1,7 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.dto.scoreanalysis; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfig.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/solve/SolverTerminationConfig.java similarity index 99% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfig.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/solve/SolverTerminationConfig.java index 6c4d9585118..dc8f836ff39 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfig.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/solve/SolverTerminationConfig.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.termination; +package ai.timefold.solver.service.definition.api.dto.solve; import java.time.Duration; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/LegacyValidationResult.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/LegacyValidationResult.java similarity index 95% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/LegacyValidationResult.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/LegacyValidationResult.java index 5357f520686..cf1eb0b6fe4 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/LegacyValidationResult.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/LegacyValidationResult.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation; import java.util.List; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/dto/ValidationIssueTypes.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationIssueTypes.java similarity index 68% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/dto/ValidationIssueTypes.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationIssueTypes.java index a77a66fb141..b34d565e164 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/dto/ValidationIssueTypes.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationIssueTypes.java @@ -1,8 +1,8 @@ -package ai.timefold.solver.service.definition.api.validation.dto; +package ai.timefold.solver.service.definition.api.dto.validation; import java.util.Collection; -import ai.timefold.solver.service.definition.api.validation.IssueType; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/dto/ValidationResult.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationResult.java similarity index 73% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/dto/ValidationResult.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationResult.java index f2d29252ff0..aba595ad4ba 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/dto/ValidationResult.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationResult.java @@ -1,9 +1,8 @@ -package ai.timefold.solver.service.definition.api.validation.dto; +package ai.timefold.solver.service.definition.api.dto.validation; import java.util.Collection; -import ai.timefold.solver.service.definition.api.validation.Issue; -import ai.timefold.solver.service.definition.api.validation.ValidationStatus; +import ai.timefold.solver.service.definition.api.dto.validation.issue.Issue; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ValidationStatus.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationStatus.java similarity index 59% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ValidationStatus.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationStatus.java index c4e1ee453cb..e53f2c430ad 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ValidationStatus.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/ValidationStatus.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation; public enum ValidationStatus { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/AbstractIssue.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/AbstractIssue.java similarity index 92% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/AbstractIssue.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/AbstractIssue.java index 080ea153f57..1d80e08172b 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/AbstractIssue.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/AbstractIssue.java @@ -1,8 +1,9 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation.issue; import java.util.Collections; import java.util.List; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; import ai.timefold.solver.service.definition.impl.validation.ValidationIssueTypeCatalog; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Issue.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/Issue.java similarity index 87% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Issue.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/Issue.java index 784283da9c6..4d3d815275c 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Issue.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/Issue.java @@ -1,7 +1,9 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation.issue; import java.util.List; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; + import org.jspecify.annotations.NonNull; /** diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueCode.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueCode.java similarity index 80% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueCode.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueCode.java index feb06a33de7..77c0d26a4c3 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueCode.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueCode.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation.issue; import java.util.Objects; @@ -6,8 +6,7 @@ import io.quarkus.runtime.annotations.RecordableConstructor; -public record IssueCode( - @JsonValue String value) { +public record IssueCode(@JsonValue String value) { @RecordableConstructor public IssueCode(String value) { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueSeverity.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueSeverity.java similarity index 90% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueSeverity.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueSeverity.java index 3e78f02a2cf..a4df4b4e541 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueSeverity.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueSeverity.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation.issue; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueType.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueType.java similarity index 78% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueType.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueType.java index a54caef0345..f8e04c181ce 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueType.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/IssueType.java @@ -1,8 +1,9 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.dto.validation.issue; import java.util.List; -import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/metadata/IssueMessage.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/metadata/IssueMessage.java similarity index 58% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/metadata/IssueMessage.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/metadata/IssueMessage.java index 286189d3a0b..a80b8c93e50 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/metadata/IssueMessage.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/metadata/IssueMessage.java @@ -1,9 +1,11 @@ -package ai.timefold.solver.service.definition.api.validation.metadata; - -import ai.timefold.solver.service.definition.api.validation.IssueMetadata; +package ai.timefold.solver.service.definition.api.dto.validation.issue.metadata; import io.quarkus.runtime.annotations.RecordableConstructor; +/** + * Represents a human-readable message related to an + * {@link ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType}. + */ public record IssueMessage(String message) implements IssueMetadata { public static final String TYPE = "Message"; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueMetadata.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/metadata/IssueMetadata.java similarity index 70% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueMetadata.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/metadata/IssueMetadata.java index 840931e0d86..e038b5819b4 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/IssueMetadata.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/dto/validation/issue/metadata/IssueMetadata.java @@ -1,6 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; - -import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; +package ai.timefold.solver.service.definition.api.dto.validation.issue.metadata; import org.eclipse.microprofile.openapi.annotations.media.Schema; @@ -15,7 +13,7 @@ @Schema(oneOf = { IssueMessage.class }) public interface IssueMetadata { - @Schema(description = "The type of the issue type detail.", implementation = String.class, readOnly = true) + @Schema(description = "The type of the issue metadata.", implementation = String.class, readOnly = true) @JsonProperty(value = "type", access = JsonProperty.Access.READ_ONLY) String getType(); } diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/DataFormat.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/metrics/DataFormat.java similarity index 94% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/DataFormat.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/metrics/DataFormat.java index d8bdfd27bd5..7eef37b424c 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/domain/DataFormat.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/metrics/DataFormat.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.domain; +package ai.timefold.solver.service.definition.api.metrics; import java.util.Arrays; import java.util.stream.Stream; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ModelValidator.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ModelValidator.java index c35d725342d..73e4fe46c79 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ModelValidator.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ModelValidator.java @@ -1,8 +1,9 @@ package ai.timefold.solver.service.definition.api.validation; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; /** * Provides a complex validation of the model input before the solving, or other operation, starts. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ValidationBuilder.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/model/ValidationBuilder.java similarity index 85% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ValidationBuilder.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/model/ValidationBuilder.java index e86fca3d58d..75e91ab3868 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/ValidationBuilder.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/model/ValidationBuilder.java @@ -1,10 +1,15 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.validation.model; import java.util.ArrayList; import java.util.List; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; -import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.dto.validation.LegacyValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationStatus; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.Issue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMessage; import ai.timefold.solver.service.definition.impl.validation.AbstractLegacyIssue; /** diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Validated.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/schema/Validated.java similarity index 76% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Validated.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/schema/Validated.java index ce7cd60bf4b..dd60e44096a 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Validated.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/schema/Validated.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.api.validation.schema; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/solver/SolverWorkerFacade.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/solver/SolverWorkerFacade.java index de1df70b297..9821bba8166 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/solver/SolverWorkerFacade.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/solver/SolverWorkerFacade.java @@ -3,15 +3,15 @@ import java.util.List; import java.util.Set; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelInputPatchRequest; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; -import ai.timefold.solver.service.definition.api.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; +import ai.timefold.solver.service.definition.api.dto.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.patch.ModelInputPatchRequest; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import ai.timefold.solver.service.definition.api.rest.DatasetSelector; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/AbstractLegacyIssue.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/AbstractLegacyIssue.java index 77f2c9d03bf..143e438fb9d 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/AbstractLegacyIssue.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/AbstractLegacyIssue.java @@ -2,10 +2,10 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueMetadata; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/JsonMappingError.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/JsonMappingError.java index b1da20ca0ee..133f9a7b193 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/JsonMappingError.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/JsonMappingError.java @@ -2,10 +2,10 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; -import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMessage; /** * Internal validation issue to translate a JSON parsing error diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/ValidationIssueTypeCatalog.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/ValidationIssueTypeCatalog.java index 20b3e7f8ba7..afc1378b1c2 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/ValidationIssueTypeCatalog.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/impl/validation/ValidationIssueTypeCatalog.java @@ -2,7 +2,7 @@ import java.util.Collection; -import ai.timefold.solver.service.definition.api.validation.IssueType; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; /** * Provides all supported {@link IssueType validation issue types}. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/ConfigurationProfile.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/configuration/ConfigurationProfile.java similarity index 96% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/ConfigurationProfile.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/configuration/ConfigurationProfile.java index 408501ea5a1..41ad0a7241f 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/configuration/ConfigurationProfile.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/configuration/ConfigurationProfile.java @@ -1,11 +1,13 @@ -package ai.timefold.solver.service.definition.api.configuration; +package ai.timefold.solver.service.definition.internal.configuration; import java.time.OffsetDateTime; import java.util.HashMap; import java.util.Map; import java.util.Objects; -import ai.timefold.solver.service.definition.api.domain.RunConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.MapsConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.ResourcesConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.RunConfiguration; public class ConfigurationProfile { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelPostProcessor.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/ModelPostProcessor.java similarity index 84% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelPostProcessor.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/ModelPostProcessor.java index 07c0bf0c5a0..5d46e91df9d 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelPostProcessor.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/ModelPostProcessor.java @@ -1,4 +1,7 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.internal.dataset; + +import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; public interface ModelPostProcessor { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/SolverInput.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/SolverInput.java similarity index 61% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/SolverInput.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/SolverInput.java index 399742c2e9d..f667046742d 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/SolverInput.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/SolverInput.java @@ -1,6 +1,6 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.internal.dataset; -import ai.timefold.solver.service.definition.api.domain.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; public record SolverInput( ModelInput_ modelInput, diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/Status.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/Status.java similarity index 84% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/Status.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/Status.java index 1d6fa1f9c2a..58115d6bf39 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/Status.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/dataset/Status.java @@ -1,8 +1,10 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.internal.dataset; import java.time.OffsetDateTime; import java.util.Map; +import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; + public interface Status { void solvingStarted(); diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/InputMetricDescriptor.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/InputMetricDescriptor.java index ccc9573d7be..e53536a3879 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/InputMetricDescriptor.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/InputMetricDescriptor.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.definition.internal.descriptor; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; /** * Defines InputMetric of the model where information is retrieved from ModelInputMetric class of the model diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelConfigParameter.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelConfigParameter.java index 25f31e185b3..f54e74d5652 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelConfigParameter.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelConfigParameter.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.definition.internal.descriptor; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import org.eclipse.microprofile.openapi.models.media.Schema.SchemaType; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelDescriptor.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelDescriptor.java similarity index 93% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelDescriptor.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelDescriptor.java index 7b4875ccf4b..e3df8b4766d 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/ModelDescriptor.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ModelDescriptor.java @@ -1,16 +1,10 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.internal.descriptor; import java.util.Collections; import java.util.List; import java.util.Map; -import ai.timefold.solver.service.definition.internal.descriptor.ConstraintGroupDescriptor; -import ai.timefold.solver.service.definition.internal.descriptor.DocumentationDescriptor; -import ai.timefold.solver.service.definition.internal.descriptor.InputMetricDescriptor; -import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigDescriptor; -import ai.timefold.solver.service.definition.internal.descriptor.OutputMetricDescriptor; -import ai.timefold.solver.service.definition.internal.descriptor.UISupport; -import ai.timefold.solver.service.definition.internal.descriptor.VisualizationPageDescriptor; +import ai.timefold.solver.service.definition.api.description.ModelMaturityLevel; import ai.timefold.solver.service.definition.internal.descriptor.usage.UniqueResource; public class ModelDescriptor { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/OutputMetricDescriptor.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/OutputMetricDescriptor.java index d1f14fbd4fb..ecec2bf06b5 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/OutputMetricDescriptor.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/OutputMetricDescriptor.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.definition.internal.descriptor; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; /** * Defines Output Metric of the model where information is retrieved from ModelOutputMetrics class of the model diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ResourceType.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ResourceType.java new file mode 100644 index 00000000000..87c60212372 --- /dev/null +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/ResourceType.java @@ -0,0 +1,4 @@ +package ai.timefold.solver.service.definition.internal.descriptor; + +public record ResourceType(String value) { +} diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/Resources.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/Resources.java similarity index 61% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/Resources.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/Resources.java index c8c1e605aa1..1e5a4c9901c 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/Resources.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/Resources.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.internal.descriptor; public record Resources(String memoryRequest, String memoryLimit, String cpuRequest, String cpuLimit) { } diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/TrialConfig.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/TrialConfig.java similarity index 86% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/TrialConfig.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/TrialConfig.java index 73447423a6d..d721a4e1a3c 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/TrialConfig.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/descriptor/TrialConfig.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api; +package ai.timefold.solver.service.definition.internal.descriptor; /** * Configuration of trial use of the model diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/AbstractDatasetEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/AbstractDatasetEvent.java index 0eb0546c21b..6b60a74a63e 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/AbstractDatasetEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/AbstractDatasetEvent.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.definition.internal.events; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Event referencing the associated {@link Metadata}. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/BestSolutionEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/BestSolutionEvent.java index 216542ecfdc..bbe8aaa9390 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/BestSolutionEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/BestSolutionEvent.java @@ -2,7 +2,7 @@ import ai.timefold.solver.core.api.solver.SolverJob; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * This event is sent when a new best solution is found during the solving process. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetComputedEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetComputedEvent.java index 1a6537ca041..4473943a1bc 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetComputedEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetComputedEvent.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.definition.internal.events; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Event sent when the outputs of a dataset are computed before solving. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetCreatedEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetCreatedEvent.java index 161e1b5be53..973e38b4c90 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetCreatedEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetCreatedEvent.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.definition.internal.events; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Event that a new dataset is submitted via the API. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetValidatedEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetValidatedEvent.java index 2bf3c5603d1..4a635878063 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetValidatedEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/DatasetValidatedEvent.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.definition.internal.events; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; import ai.timefold.solver.service.definition.api.validation.ModelValidator; /** diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FailedSolutionEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FailedSolutionEvent.java index 12ccb6aafd6..b4990a64599 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FailedSolutionEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FailedSolutionEvent.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.definition.internal.events; import ai.timefold.solver.core.api.solver.SolverJob; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Sent when a solver worker fails during solving. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FinalBestSolutionEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FinalBestSolutionEvent.java index aa521e24e83..b296997c75d 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FinalBestSolutionEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/FinalBestSolutionEvent.java @@ -2,7 +2,7 @@ import ai.timefold.solver.core.api.solver.SolverJob; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Sent when the solver worker produces the final best solution upon termination conditions. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/InitSolutionEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/InitSolutionEvent.java index 1b41ade0301..464f22643d2 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/InitSolutionEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/InitSolutionEvent.java @@ -2,7 +2,7 @@ import ai.timefold.solver.core.api.solver.SolverJob; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Sent when a solver worker produces the first, initialized, solution. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemFailed.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemFailed.java index d38de28cf16..a02b2db1c4c 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemFailed.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemFailed.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.definition.internal.events; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Event that indicates a dataset has failed during processing. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemStarted.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemStarted.java index 8b9b49044ec..002b4332eaf 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemStarted.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ItemStarted.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.definition.internal.events; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Event sent when the solver worker starts solving the dataset. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/SolverWorkerEvent.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/SolverWorkerEvent.java index b0e0bc4cf34..18bb0ad4c38 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/SolverWorkerEvent.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/SolverWorkerEvent.java @@ -2,7 +2,7 @@ import ai.timefold.solver.core.api.solver.SolverJob; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; /** * Base class for events produced by the SolverWorker. diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ValidationSummary.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ValidationSummary.java index bb8ce6283b6..7f581c742de 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ValidationSummary.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/events/ValidationSummary.java @@ -3,10 +3,10 @@ import java.util.HashMap; import java.util.Map; -import ai.timefold.solver.service.definition.api.validation.Issue; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; -import ai.timefold.solver.service.definition.api.validation.ValidationStatus; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationStatus; +import ai.timefold.solver.service.definition.api.dto.validation.issue.Issue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; /** * A compact summary of a dataset validation, carrying the overall {@link ValidationStatus} and issue counts by diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/Headers.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/rest/Headers.java similarity index 93% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/internal/Headers.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/rest/Headers.java index d83e1332070..1e283cbbe34 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/Headers.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/rest/Headers.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.internal; +package ai.timefold.solver.service.definition.internal.rest; public class Headers { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageService.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageService.java index f7d9a9a9b77..46bde87f485 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageService.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageService.java @@ -16,26 +16,26 @@ import jakarta.enterprise.inject.Instance; import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.SolverInput; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelInputPatchRequest; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; -import ai.timefold.solver.service.definition.api.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; +import ai.timefold.solver.service.definition.api.dto.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.patch.ModelInputPatchRequest; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.validation.LegacyValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.issue.Issue; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; -import ai.timefold.solver.service.definition.api.validation.Issue; -import ai.timefold.solver.service.definition.api.validation.LegacyValidationResult; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.definition.impl.storage.CompressionUtils; import ai.timefold.solver.service.definition.impl.storage.StorageObjectMapperWrapper; import ai.timefold.solver.service.definition.impl.validation.JsonMappingError; +import ai.timefold.solver.service.definition.internal.dataset.SolverInput; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; import ai.timefold.solver.service.definition.internal.error.ItemNotFoundException; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Validator.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/validation/schema/Validator.java similarity index 75% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Validator.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/internal/validation/schema/Validator.java index b5ecc01c5b6..18c821a4944 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/validation/Validator.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/internal/validation/schema/Validator.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.validation; +package ai.timefold.solver.service.definition.internal.validation.schema; import java.util.List; import java.util.UUID; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/AbstractBasicDemoDataGenerator.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/AbstractBasicDemoDataGenerator.java similarity index 87% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/AbstractBasicDemoDataGenerator.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/AbstractBasicDemoDataGenerator.java index 20302431df8..5088ef5e9ce 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/AbstractBasicDemoDataGenerator.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/AbstractBasicDemoDataGenerator.java @@ -1,10 +1,10 @@ -package ai.timefold.solver.service.definition.api.data; +package ai.timefold.solver.service.definition.preview.api.demo; import java.util.List; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; /** * Default {@link DemoDataGenerator} implementation for models that provide only a single demo data set with ID diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoData.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoData.java new file mode 100644 index 00000000000..29655871d63 --- /dev/null +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoData.java @@ -0,0 +1,9 @@ +package ai.timefold.solver.service.definition.preview.api.demo; + +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; + +public record DemoData(DemoMetaData metaData, + ModelRequest modelRequest) { +} \ No newline at end of file diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoDataConfigEntry.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoDataConfigEntry.java similarity index 85% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoDataConfigEntry.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoDataConfigEntry.java index 6a9924253de..d015b9dab96 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoDataConfigEntry.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoDataConfigEntry.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.data; +package ai.timefold.solver.service.definition.preview.api.demo; public record DemoDataConfigEntry(String key, String value) { diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoDataGenerator.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoDataGenerator.java similarity index 95% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoDataGenerator.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoDataGenerator.java index 2313f5160ea..6d24c8e99ab 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoDataGenerator.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoDataGenerator.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.data; +package ai.timefold.solver.service.definition.preview.api.demo; import java.util.List; import java.util.stream.Collectors; diff --git a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoMetaData.java b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoMetaData.java similarity index 90% rename from service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoMetaData.java rename to service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoMetaData.java index f70dc35a9c4..8507c0cf0ce 100644 --- a/service/definition/src/main/java/ai/timefold/solver/service/definition/api/data/DemoMetaData.java +++ b/service/definition/src/main/java/ai/timefold/solver/service/definition/preview/api/demo/DemoMetaData.java @@ -1,4 +1,4 @@ -package ai.timefold.solver.service.definition.api.data; +package ai.timefold.solver.service.definition.preview.api.demo; import java.util.List; diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/ModelMaturityLevelTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/ModelMaturityLevelTest.java index b2eac31252f..db6f28309e4 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/ModelMaturityLevelTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/ModelMaturityLevelTest.java @@ -1,5 +1,7 @@ package ai.timefold.solver.service.definition.api; +import ai.timefold.solver.service.definition.api.description.ModelMaturityLevel; + import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/data/DemoMetaDataTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/data/DemoMetaDataTest.java index fd3b692f5fd..edaaf39ff85 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/data/DemoMetaDataTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/data/DemoMetaDataTest.java @@ -4,6 +4,8 @@ import java.util.List; +import ai.timefold.solver.service.definition.preview.api.demo.DemoMetaData; + import org.junit.jupiter.api.Test; class DemoMetaDataTest { diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/domain/RunConfigurationTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/domain/RunConfigurationTest.java index dcbbc1023a4..eb599291938 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/domain/RunConfigurationTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/domain/RunConfigurationTest.java @@ -6,7 +6,8 @@ import java.util.Map; import java.util.Set; -import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.RunConfiguration; +import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; import org.junit.jupiter.api.Test; diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfigTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfigTest.java index 53a43691aaa..aa2474edf35 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfigTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/termination/SolverTerminationConfigTest.java @@ -5,6 +5,8 @@ import java.time.Duration; +import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; + import org.junit.jupiter.api.Test; class SolverTerminationConfigTest { diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/validation/ValidationIssueSerializationTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/validation/ValidationIssueSerializationTest.java index e773aad982e..248b76c4b0a 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/api/validation/ValidationIssueSerializationTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/api/validation/ValidationIssueSerializationTest.java @@ -2,6 +2,11 @@ import java.util.List; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.definition.impl.validation.AbstractLegacyIssue; import org.assertj.core.api.Assertions; diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/events/ValidationSummaryTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/events/ValidationSummaryTest.java index ce21415f99c..c5bf3c80e61 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/events/ValidationSummaryTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/events/ValidationSummaryTest.java @@ -5,11 +5,11 @@ import java.util.List; import java.util.Map; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; -import ai.timefold.solver.service.definition.api.validation.ValidationStatus; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationStatus; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; import org.junit.jupiter.api.Test; diff --git a/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageServiceRetryTest.java b/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageServiceRetryTest.java index 0d93c691a5b..80b172ff5a0 100644 --- a/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageServiceRetryTest.java +++ b/service/definition/src/test/java/ai/timefold/solver/service/definition/internal/storage/AbstractStorageServiceRetryTest.java @@ -13,11 +13,11 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.domain.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import ai.timefold.solver.service.definition.impl.storage.CompressionUtils; diff --git a/service/json/src/main/java/ai/timefold/solver/service/json/internal/patch/JsonPatch.java b/service/json/src/main/java/ai/timefold/solver/service/json/internal/patch/JsonPatch.java index 3302ce5c863..9b003d1ba68 100644 --- a/service/json/src/main/java/ai/timefold/solver/service/json/internal/patch/JsonPatch.java +++ b/service/json/src/main/java/ai/timefold/solver/service/json/internal/patch/JsonPatch.java @@ -3,7 +3,7 @@ import java.util.function.Function; import java.util.regex.Matcher; -import ai.timefold.solver.service.definition.api.ModelInputPatchOp; +import ai.timefold.solver.service.definition.api.dto.patch.ModelInputPatchOp; import ai.timefold.solver.service.json.impl.patch.AddByFilter; import ai.timefold.solver.service.json.impl.patch.AddByIndex; import ai.timefold.solver.service.json.impl.patch.JsonPatchConstants; diff --git a/service/json/src/main/java/ai/timefold/solver/service/json/internal/schema/JsonSchemaValidator.java b/service/json/src/main/java/ai/timefold/solver/service/json/internal/schema/JsonSchemaValidator.java index 333854f146e..6b9786db10b 100644 --- a/service/json/src/main/java/ai/timefold/solver/service/json/internal/schema/JsonSchemaValidator.java +++ b/service/json/src/main/java/ai/timefold/solver/service/json/internal/schema/JsonSchemaValidator.java @@ -12,7 +12,7 @@ import jakarta.annotation.PostConstruct; import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.validation.Validator; +import ai.timefold.solver.service.definition.internal.validation.schema.Validator; import ai.timefold.solver.service.json.api.schema.LocalDateTimeFormat; import ai.timefold.solver.service.json.api.schema.OffsetDateTimeFormat; import ai.timefold.solver.service.json.api.schema.ZoneIdFormat; diff --git a/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/MapServiceClientImpl.java b/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/MapServiceClientImpl.java index f60d32b89cc..884f62fa435 100644 --- a/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/MapServiceClientImpl.java +++ b/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/MapServiceClientImpl.java @@ -1,14 +1,14 @@ package ai.timefold.solver.service.maps.service.client.impl; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_CACHE_ID; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_INVALIDATE_MATRIX_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATIONS_CHUNK_BYTES; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATIONS_NOT_IN_MAP; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATION_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_MATRIX_HASH_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_PROVIDER_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_RESPONSE_CHUNK_BYTES; -import static ai.timefold.solver.service.definition.internal.Headers.X_TENANT_ID_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_CACHE_ID; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_INVALIDATE_MATRIX_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATIONS_CHUNK_BYTES; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATIONS_NOT_IN_MAP; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATION_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_MATRIX_HASH_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_PROVIDER_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_RESPONSE_CHUNK_BYTES; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_TENANT_ID_HEADER; import java.io.IOException; import java.io.InputStream; diff --git a/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/error/MapServiceExceptionMapper.java b/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/error/MapServiceExceptionMapper.java index 0960775f5fe..880a34a9cb4 100644 --- a/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/error/MapServiceExceptionMapper.java +++ b/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/error/MapServiceExceptionMapper.java @@ -2,7 +2,7 @@ import jakarta.ws.rs.core.Response; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; diff --git a/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/processors/SaveWaypointsPostProcessor.java b/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/processors/SaveWaypointsPostProcessor.java index e9c4d03195b..983aa688153 100644 --- a/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/processors/SaveWaypointsPostProcessor.java +++ b/service/maps/service-client/src/main/java/ai/timefold/solver/service/maps/service/client/impl/processors/SaveWaypointsPostProcessor.java @@ -8,9 +8,9 @@ import jakarta.inject.Inject; import jakarta.interceptor.Interceptor; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.ModelPostProcessor; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.internal.dataset.ModelPostProcessor; import ai.timefold.solver.service.definition.internal.storage.AbstractStorageService; import ai.timefold.solver.service.maps.api.model.Waypoints; import ai.timefold.solver.service.maps.service.integration.impl.WaypointsService; diff --git a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/impl/WaypointsServiceImplTest.java b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/impl/WaypointsServiceImplTest.java index ffe917d719c..83e7c4f4b27 100644 --- a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/impl/WaypointsServiceImplTest.java +++ b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/impl/WaypointsServiceImplTest.java @@ -5,7 +5,7 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.domain.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; import ai.timefold.solver.service.definition.internal.events.BestSolutionEvent; import ai.timefold.solver.service.definition.internal.events.FinalBestSolutionEvent; import ai.timefold.solver.service.definition.internal.events.InitSolutionEvent; diff --git a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelInput.java b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelInput.java index 1c5580ae5b8..4af4202a86c 100644 --- a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelInput.java +++ b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelInput.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.maps.service.client.util; -import ai.timefold.solver.service.definition.api.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; public class DummyModelInput implements ModelInput { } diff --git a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelOutput.java b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelOutput.java index 476ef6aec7a..a02f73e823f 100644 --- a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelOutput.java +++ b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyModelOutput.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.maps.service.client.util; -import ai.timefold.solver.service.definition.api.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; public class DummyModelOutput implements ModelOutput { } diff --git a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyStorageService.java b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyStorageService.java index 38503fe844c..af8d954a1ad 100644 --- a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyStorageService.java +++ b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/DummyStorageService.java @@ -1,9 +1,9 @@ package ai.timefold.solver.service.maps.service.client.util; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; -import ai.timefold.solver.service.definition.api.domain.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import ai.timefold.solver.service.definition.internal.storage.AbstractStorageService; diff --git a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/SampleModel.java b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/SampleModel.java index 78551e16bb4..c20cb5fc2d4 100644 --- a/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/SampleModel.java +++ b/service/maps/service-client/src/test/java/ai/timefold/solver/service/maps/service/client/util/SampleModel.java @@ -10,8 +10,6 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.HardSoftScore; -import ai.timefold.solver.service.definition.api.Status; -import ai.timefold.solver.service.definition.api.UserModel; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; @@ -21,8 +19,7 @@ @PlanningSolution public class SampleModel implements LocationsAwareSolverModel, InputMetricsAware, - OutputMetricsAware, - UserModel> { + OutputMetricsAware { private final String locationSetName; private final List locations; @@ -96,16 +93,6 @@ public ModelOutputMetrics getOutputMetrics() { return null; } - @Override - public Status getStatus() { - return null; - } - - @Override - public Status newStatus(String name) { - return null; - } - @Override public List getLocations() { return this.locations; @@ -125,9 +112,4 @@ public void setLocationsNotInMap(List locationsNotInMap) { public List getLocationsNotInMap() { return locationsNotInMap; } - - @Override - public void setStatus(Status status) { - // Noop - } } diff --git a/service/maps/service-rest/src/main/java/ai/timefold/solver/service/maps/service/rest/impl/AbstractMapsModelAPIResource.java b/service/maps/service-rest/src/main/java/ai/timefold/solver/service/maps/service/rest/impl/AbstractMapsModelAPIResource.java index a8e67c7582c..804a82e50a3 100644 --- a/service/maps/service-rest/src/main/java/ai/timefold/solver/service/maps/service/rest/impl/AbstractMapsModelAPIResource.java +++ b/service/maps/service-rest/src/main/java/ai/timefold/solver/service/maps/service/rest/impl/AbstractMapsModelAPIResource.java @@ -11,14 +11,14 @@ import jakarta.ws.rs.core.Response; import ai.timefold.solver.core.api.score.Score; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.validation.issue.Issue; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; -import ai.timefold.solver.service.definition.api.validation.Issue; import ai.timefold.solver.service.definition.api.validation.ModelValidator; import ai.timefold.solver.service.definition.impl.solver.SolverWorkerFacade; import ai.timefold.solver.service.definition.impl.validation.ValidationIssueTypeCatalog; diff --git a/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/DistanceGetUpdateResponseTransformer.java b/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/DistanceGetUpdateResponseTransformer.java index 9b71cdc4e1d..7fe3e4c0af1 100644 --- a/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/DistanceGetUpdateResponseTransformer.java +++ b/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/DistanceGetUpdateResponseTransformer.java @@ -1,9 +1,9 @@ package ai.timefold.solver.service.maps.service.test.impl; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATIONS_CHUNK_BYTES; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_MATRIX_HASH_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_PROVIDER_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_RESPONSE_CHUNK_BYTES; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATIONS_CHUNK_BYTES; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_MATRIX_HASH_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_PROVIDER_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_RESPONSE_CHUNK_BYTES; import java.io.ByteArrayInputStream; import java.io.SequenceInputStream; diff --git a/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/HaversineDistanceResponseTransformer.java b/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/HaversineDistanceResponseTransformer.java index 4b8d8f2ee33..1e5e1d205ea 100644 --- a/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/HaversineDistanceResponseTransformer.java +++ b/service/maps/service-test/src/main/java/ai/timefold/solver/service/maps/service/test/impl/HaversineDistanceResponseTransformer.java @@ -1,11 +1,11 @@ package ai.timefold.solver.service.maps.service.test.impl; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATIONS_CHUNK_BYTES; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATIONS_NOT_IN_MAP; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_LOCATION_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_MATRIX_HASH_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_PROVIDER_HEADER; -import static ai.timefold.solver.service.definition.internal.Headers.X_MAPS_RESPONSE_CHUNK_BYTES; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATIONS_CHUNK_BYTES; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATIONS_NOT_IN_MAP; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_LOCATION_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_MATRIX_HASH_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_PROVIDER_HEADER; +import static ai.timefold.solver.service.definition.internal.rest.Headers.X_MAPS_RESPONSE_CHUNK_BYTES; import java.io.ByteArrayInputStream; import java.io.InputStream; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileProcessor.java index 755954feba6..61319c6b5e1 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileProcessor.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.quarkus.deployment; -import static ai.timefold.solver.service.definition.api.configuration.ConfigurationProfile.DEFAULT_CONFIGURATION_PROFILE_ID; -import static ai.timefold.solver.service.definition.api.configuration.ConfigurationProfile.DEFAULT_CONFIGURATION_PROFILE_NAME; +import static ai.timefold.solver.service.definition.internal.configuration.ConfigurationProfile.DEFAULT_CONFIGURATION_PROFILE_ID; +import static ai.timefold.solver.service.definition.internal.configuration.ConfigurationProfile.DEFAULT_CONFIGURATION_PROFILE_NAME; import java.nio.file.Files; import java.nio.file.Path; @@ -9,11 +9,11 @@ import java.time.Duration; import java.util.Map; -import ai.timefold.solver.service.definition.api.configuration.ConfigurationProfile; -import ai.timefold.solver.service.definition.api.configuration.MapsConfiguration; -import ai.timefold.solver.service.definition.api.configuration.ResourcesConfiguration; -import ai.timefold.solver.service.definition.api.domain.RunConfiguration; -import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.MapsConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.ResourcesConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.RunConfiguration; +import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; +import ai.timefold.solver.service.definition.internal.configuration.ConfigurationProfile; import ai.timefold.solver.service.jackson.impl.SdkBuildTimeObjectMapperFactory; import ai.timefold.solver.service.quarkus.deployment.builditem.AdditionalDescriptorFilesBuildItem; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelComponentsBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelConvertorProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelConvertorProcessor.java index fa253384f21..36584e719d0 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelConvertorProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelConvertorProcessor.java @@ -6,8 +6,8 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.ModelInput; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelComponentsBuildItem; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelConvertorBuildItem; import ai.timefold.solver.service.quarkus.deployment.builditem.RestComponentsBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelDescriptorProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelDescriptorProcessor.java index eb7f6994901..f1beb522362 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelDescriptorProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelDescriptorProcessor.java @@ -36,19 +36,12 @@ import ai.timefold.solver.core.api.score.stream.ConstraintMetaModel; import ai.timefold.solver.core.api.solver.SolverFactory; import ai.timefold.solver.core.impl.util.SolverVersionUtils; -import ai.timefold.solver.service.definition.api.ModelDescriptor; -import ai.timefold.solver.service.definition.api.ModelMaturityLevel; -import ai.timefold.solver.service.definition.api.ResourceType; -import ai.timefold.solver.service.definition.api.Resources; -import ai.timefold.solver.service.definition.api.TrialConfig; -import ai.timefold.solver.service.definition.api.data.AbstractBasicDemoDataGenerator; -import ai.timefold.solver.service.definition.api.data.DemoData; -import ai.timefold.solver.service.definition.api.data.DemoDataGenerator; import ai.timefold.solver.service.definition.api.description.ConstraintGroupInfo; import ai.timefold.solver.service.definition.api.description.ConstraintInfo; -import ai.timefold.solver.service.definition.api.domain.ConstraintReference; -import ai.timefold.solver.service.definition.api.domain.DataFormat; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; +import ai.timefold.solver.service.definition.api.description.ConstraintReference; +import ai.timefold.solver.service.definition.api.description.ModelMaturityLevel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import ai.timefold.solver.service.definition.api.rest.OperationId; import ai.timefold.solver.service.definition.internal.descriptor.ConstraintDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ConstraintGroupDescriptor; @@ -58,10 +51,17 @@ import ai.timefold.solver.service.definition.internal.descriptor.ModelBuildInfo; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigParameter; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.OutputMetricDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ParameterKind; +import ai.timefold.solver.service.definition.internal.descriptor.ResourceType; +import ai.timefold.solver.service.definition.internal.descriptor.Resources; +import ai.timefold.solver.service.definition.internal.descriptor.TrialConfig; import ai.timefold.solver.service.definition.internal.descriptor.UISupport; import ai.timefold.solver.service.definition.internal.descriptor.VisualizationPageDescriptor; +import ai.timefold.solver.service.definition.preview.api.demo.AbstractBasicDemoDataGenerator; +import ai.timefold.solver.service.definition.preview.api.demo.DemoData; +import ai.timefold.solver.service.definition.preview.api.demo.DemoDataGenerator; import ai.timefold.solver.service.jackson.impl.SdkBuildTimeObjectMapperFactory; import ai.timefold.solver.service.quarkus.deployment.builditem.AdditionalDescriptorFilesBuildItem; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelArchiveBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelsProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelsProcessor.java index 5c4ee77af2b..7bc401feaf5 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelsProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldModelsProcessor.java @@ -14,14 +14,14 @@ import ai.timefold.solver.core.api.score.stream.ConstraintMetaModel; import ai.timefold.solver.quarkus.deployment.api.ConstraintMetaModelBuildItem; import ai.timefold.solver.service.definition.api.AbstractSimpleModel; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; import ai.timefold.solver.service.definition.impl.validation.AbstractLegacyIssue; import ai.timefold.solver.service.definition.impl.validation.JsonMappingError; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelComponentsBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldRESTProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldRESTProcessor.java index 28254ebb213..546689a61d6 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldRESTProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldRESTProcessor.java @@ -13,11 +13,11 @@ import jakarta.ws.rs.ext.MessageBodyReader; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.data.AbstractBasicDemoDataGenerator; -import ai.timefold.solver.service.definition.api.data.DemoDataGenerator; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ScoreAnalysisRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ScoreAnalysisRequest; +import ai.timefold.solver.service.definition.preview.api.demo.AbstractBasicDemoDataGenerator; +import ai.timefold.solver.service.definition.preview.api.demo.DemoDataGenerator; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelComponentsBuildItem; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelConvertorBuildItem; import ai.timefold.solver.service.quarkus.deployment.builditem.RestComponentsBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldStorageProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldStorageProcessor.java index aff405d3bb8..e37e4032140 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldStorageProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldStorageProcessor.java @@ -9,7 +9,7 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.domain.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; import ai.timefold.solver.service.definition.internal.storage.AbstractStorageService; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelComponentsBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldValidatorProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldValidatorProcessor.java index 2c08ab11199..d7f93ff3244 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldValidatorProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/TimefoldValidatorProcessor.java @@ -4,7 +4,7 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; import ai.timefold.solver.service.definition.api.validation.ModelValidator; import ai.timefold.solver.service.quarkus.deployment.builditem.ModelComponentsBuildItem; import ai.timefold.solver.service.quarkus.deployment.util.ProcessorUtils; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/ModelResourceTypeInfo.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/ModelResourceTypeInfo.java index aee875423f5..b185c4137e5 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/ModelResourceTypeInfo.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/ModelResourceTypeInfo.java @@ -12,7 +12,7 @@ public interface ModelResourceTypeInfo { DotName.createSimple("ai.timefold.solver.service.maps.service.integration.impl.WaypointsService"); DotName SCORE_ANALYSIS_FACADE_BASE = - DotName.createSimple("ai.timefold.solver.enterprise.service.definition.api.analysis.ScoreAnalysisFacadeBase"); + DotName.createSimple("ai.timefold.solver.enterprise.service.definition.api.scoreanalysis.ScoreAnalysisFacadeBase"); DotName modelResourceSuperClassName(); diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/DiscoveredIssueTypesBuildItem.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/DiscoveredIssueTypesBuildItem.java index 1086a2dc47b..3f3bd29db44 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/DiscoveredIssueTypesBuildItem.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/DiscoveredIssueTypesBuildItem.java @@ -2,7 +2,7 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.IssueType; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; import io.quarkus.builder.item.SimpleBuildItem; diff --git a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogProcessor.java b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogProcessor.java index f520ed63030..55dd6ae595d 100644 --- a/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogProcessor.java +++ b/service/quarkus/deployment/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogProcessor.java @@ -11,9 +11,9 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueType; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; import ai.timefold.solver.service.definition.impl.validation.ValidationIssueTypeCatalog; import ai.timefold.solver.service.jackson.impl.SdkBuildTimeObjectMapperFactory; import ai.timefold.solver.service.quarkus.deployment.builditem.AdditionalDescriptorFilesBuildItem; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileTest.java index cb7d0e8138a..58cb5e08841 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DefaultConfigProfileTest.java @@ -6,7 +6,7 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.configuration.ConfigurationProfile; +import ai.timefold.solver.service.definition.internal.configuration.ConfigurationProfile; import ai.timefold.solver.service.quarkus.deployment.testdata.defaultconfigprofile.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.defaultconfigprofile.TestdataEntity; import ai.timefold.solver.service.quarkus.deployment.testdata.defaultconfigprofile.TestdataModelConfigOverrides; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DuplicateValidationIssueTypesTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DuplicateValidationIssueTypesTest.java index 08d48da9aec..f12066862ae 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DuplicateValidationIssueTypesTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/DuplicateValidationIssueTypesTest.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.quarkus.deployment.testdata.validationduplicates.DuplicateTestIssue; import ai.timefold.solver.service.quarkus.deployment.testdata.validationduplicates.TestIssue; import ai.timefold.solver.service.quarkus.deployment.testdata.validationduplicates.TestdataAbstractIssue; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorConstraintReferenceTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorConstraintReferenceTest.java index 0fdfe6a00b0..cafd56b8a71 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorConstraintReferenceTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorConstraintReferenceTest.java @@ -7,9 +7,9 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigParameter; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ParameterKind; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigreference.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigreference.TestdataEntity; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorDefaultTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorDefaultTest.java index 1017cf4032d..5d1fbc95823 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorDefaultTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorDefaultTest.java @@ -8,10 +8,10 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelDescriptor; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigParameter; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ParameterKind; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigdefault.ObjectParameter; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigdefault.TestdataConstraintProvider; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorSchemaTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorSchemaTest.java index 3e6fd3ddb1e..15e191c8111 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorSchemaTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelConfigDescriptorSchemaTest.java @@ -8,10 +8,10 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelDescriptor; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ModelConfigParameter; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ParameterKind; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigschema.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigschema.TestdataEntity; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorResourceTypeTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorResourceTypeTest.java index 566acc99eff..6394c234bae 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorResourceTypeTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorResourceTypeTest.java @@ -7,7 +7,7 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelDescriptor; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigdefault.ObjectParameter; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigdefault.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigdefault.TestdataEntity; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorUniqueResourcesTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorUniqueResourcesTest.java index 7963d05023c..25e16358e40 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorUniqueResourcesTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelDescriptorUniqueResourcesTest.java @@ -7,7 +7,7 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelDescriptor; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.usage.UniqueResource; import ai.timefold.solver.service.quarkus.deployment.testdata.uniqueresource.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.uniqueresource.TestdataRest; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelResourceTypeParsingTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelResourceTypeParsingTest.java index b0928cdcb77..b70c9a33e47 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelResourceTypeParsingTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ModelResourceTypeParsingTest.java @@ -4,7 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import ai.timefold.solver.service.definition.api.ResourceType; +import ai.timefold.solver.service.definition.internal.descriptor.ResourceType; import org.junit.jupiter.api.Test; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ProcessModelUITest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ProcessModelUITest.java index 56e006daf37..950526d608a 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ProcessModelUITest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ProcessModelUITest.java @@ -7,7 +7,7 @@ import java.nio.file.Files; import java.nio.file.Path; -import ai.timefold.solver.service.definition.api.ModelDescriptor; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ValidationIssueTypesTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ValidationIssueTypesTest.java index 8a6835ae750..4607a126ae6 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ValidationIssueTypesTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/ValidationIssueTypesTest.java @@ -9,9 +9,9 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; -import ai.timefold.solver.service.definition.api.validation.IssueType; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.definition.impl.validation.ValidationIssueTypeCatalog; import ai.timefold.solver.service.quarkus.deployment.testdata.validation.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.validation.TestdataEntity; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertorTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertorTest.java index 594b3151f38..31d5551cfab 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertorTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertorTest.java @@ -7,10 +7,10 @@ import ai.timefold.solver.core.api.domain.solution.ConstraintWeightOverrides; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/descriptor/ConstraintGroupDescriptorTest.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/descriptor/ConstraintGroupDescriptorTest.java index 60774babec5..6708b981287 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/descriptor/ConstraintGroupDescriptorTest.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/descriptor/ConstraintGroupDescriptorTest.java @@ -8,9 +8,9 @@ import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ConstraintDescriptor; import ai.timefold.solver.service.definition.internal.descriptor.ConstraintGroupDescriptor; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; import ai.timefold.solver.service.quarkus.deployment.ExtensionTestUtil; import ai.timefold.solver.service.quarkus.deployment.testdata.constraintgroup.TestdataConstraintProvider; import ai.timefold.solver.service.quarkus.deployment.testdata.constraintgroup.TestdataEntity; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataModelConvertor.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataModelConvertor.java index 32bf66e42dd..a5f25c817a2 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataModelConvertor.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataModelConvertor.java @@ -5,8 +5,8 @@ import jakarta.enterprise.context.ApplicationScoped; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; @ApplicationScoped diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataSolution.java index fdd9aa9aa20..ff06544ff22 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/constraintgroup/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; @PlanningSolution public class TestdataSolution diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataModelConfigOverrides.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataModelConfigOverrides.java index 11a8f8408ee..b0633956c76 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataModelConfigOverrides.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataModelConfigOverrides.java @@ -2,7 +2,7 @@ import java.time.Duration; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataSolution.java index b71f8a11347..91ea4d452a0 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/defaultconfigprofile/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; @PlanningSolution public class TestdataSolution diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConfigOverrides.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConfigOverrides.java index a76b999dee9..993c11ea904 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConfigOverrides.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConfigOverrides.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; public class TestdataModelConfigOverrides implements ModelConfigOverrides { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConvertor.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConvertor.java index 4071cb6510d..bc9e10cfa58 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConvertor.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataModelConvertor.java @@ -5,8 +5,8 @@ import jakarta.enterprise.context.ApplicationScoped; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; @ApplicationScoped diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataSolution.java index ab9c9b55c4c..4c6730c67bf 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigdefault/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; @PlanningSolution public class TestdataSolution diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConfigOverrides.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConfigOverrides.java index fecfb905b52..0628ae566f0 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConfigOverrides.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConfigOverrides.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.quarkus.deployment.testdata.modelconfigreference; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.domain.ConstraintReference; +import ai.timefold.solver.service.definition.api.description.ConstraintReference; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import ai.timefold.solver.service.definition.internal.descriptor.ParameterKind; public class TestdataModelConfigOverrides implements ModelConfigOverrides { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConvertor.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConvertor.java index 34de2c2dc72..3975126812b 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConvertor.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataModelConvertor.java @@ -5,8 +5,8 @@ import jakarta.enterprise.context.ApplicationScoped; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; @ApplicationScoped diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataSolution.java index e02798aaf07..cb4d41c543e 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigreference/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.OutputMetricsAware; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelInputMetrics; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConfigOverrides.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConfigOverrides.java index cc72df3d686..6c14eee96b9 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConfigOverrides.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConfigOverrides.java @@ -3,8 +3,8 @@ import java.math.BigDecimal; import java.time.Duration; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConvertor.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConvertor.java index 8f2cdfdefdc..d62bf69a0b8 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConvertor.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataModelConvertor.java @@ -5,8 +5,8 @@ import jakarta.enterprise.context.ApplicationScoped; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; @ApplicationScoped diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataSolution.java index aaf028d2b66..1af88b01df0 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/modelconfigschema/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.OutputMetricsAware; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelInputMetrics; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConfig.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConfig.java index 2b22e908ce4..0e6d34a75e8 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConfig.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConfig.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.testdata.storage; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConstraintJustification.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConstraintJustification.java index 46ece90728f..ad1c3864686 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConstraintJustification.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConstraintJustification.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.testdata.storage; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; public class TestdataModelConstraintJustification implements ModelConstraintJustification { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConvertor.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConvertor.java index 0f47bb79261..e9dbed2d94a 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConvertor.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelConvertor.java @@ -5,8 +5,8 @@ import jakarta.enterprise.context.ApplicationScoped; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; @ApplicationScoped public class TestdataModelConvertor implements diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelInput.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelInput.java index 68d87e9863d..93d4be4cef2 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelInput.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelInput.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.testdata.storage; -import ai.timefold.solver.service.definition.api.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; public class TestdataModelInput implements ModelInput { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelOutput.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelOutput.java index dc1b8ef1926..afab3ac0810 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelOutput.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/storage/TestdataModelOutput.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.testdata.storage; -import ai.timefold.solver.service.definition.api.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; public class TestdataModelOutput implements ModelOutput { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/uniqueresource/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/uniqueresource/TestdataSolution.java index bf96277b9bb..fe35c1851a4 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/uniqueresource/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/uniqueresource/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; @PlanningSolution public class TestdataSolution implements SolverModel, ModelInput, ModelOutput { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataModelValidator.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataModelValidator.java index d05d2cc67c3..1e0d0e46972 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataModelValidator.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataModelValidator.java @@ -4,14 +4,14 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueMetadata; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; import ai.timefold.solver.service.definition.api.validation.ModelValidator; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; -import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; @ApplicationScoped diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataSolution.java index aed22e6e7f6..25286a01d7c 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validation/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; @PlanningSolution public class TestdataSolution diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/DuplicateTestIssue.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/DuplicateTestIssue.java index c3754fde2b5..bab10583bad 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/DuplicateTestIssue.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/DuplicateTestIssue.java @@ -2,7 +2,7 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; public class DuplicateTestIssue extends TestdataAbstractIssue { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestIssue.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestIssue.java index bec28f3db52..823ff40a618 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestIssue.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestIssue.java @@ -2,8 +2,8 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; public class TestIssue extends TestdataAbstractIssue { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataAbstractIssue.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataAbstractIssue.java index d9ca4920472..54edac46ce2 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataAbstractIssue.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataAbstractIssue.java @@ -2,10 +2,10 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueMetadata; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; public abstract class TestdataAbstractIssue extends AbstractIssue { diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataModelValidator.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataModelValidator.java index 539c32f5916..046db2cfefc 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataModelValidator.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataModelValidator.java @@ -2,9 +2,9 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import ai.timefold.solver.service.definition.api.validation.ModelValidator; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; /** diff --git a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataSolution.java b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataSolution.java index 68b006b85d2..8e8e4fae493 100644 --- a/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataSolution.java +++ b/service/quarkus/deployment/src/test/java/ai/timefold/solver/service/quarkus/deployment/testdata/validationduplicates/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.SimpleScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; @PlanningSolution public class TestdataSolution diff --git a/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConfig.java b/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConfig.java index cf74bee6713..5629d6f3f86 100644 --- a/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConfig.java +++ b/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConfig.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.it; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConstraintJustification.java b/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConstraintJustification.java index 0c077d50475..63a33eb6581 100644 --- a/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConstraintJustification.java +++ b/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataModelConstraintJustification.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.it; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; public class TestdataModelConstraintJustification implements ModelConstraintJustification { diff --git a/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataSolution.java b/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataSolution.java index 72e730b8219..7fbacb932cf 100644 --- a/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataSolution.java +++ b/service/quarkus/integration-tests/src/main/java/ai/timefold/solver/service/quarkus/deployment/it/TestdataSolution.java @@ -9,9 +9,9 @@ import ai.timefold.solver.core.api.domain.solution.ProblemFactCollectionProperty; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.HardMediumSoftScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.OutputMetricsAware; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertor.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertor.java index e2c9e44e620..e35fcedc4be 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertor.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/AbstractTrivialModelConvertor.java @@ -4,14 +4,14 @@ import java.util.Optional; import ai.timefold.solver.core.api.score.Score; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; import org.jspecify.annotations.NullMarked; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConfigOverrides.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConfigOverrides.java index 2f3a6f1896b..5cbbb249684 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConfigOverrides.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConfigOverrides.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.defaults; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import com.fasterxml.jackson.annotation.JsonAutoDetect; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConstraintJustification.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConstraintJustification.java index d991923bac9..e2e0050e165 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConstraintJustification.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/defaults/EmptyModelConstraintJustification.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.quarkus.deployment.defaults; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; import com.fasterxml.jackson.annotation.JsonAutoDetect; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelConfigMessageBodyReaders.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelConfigMessageBodyReaders.java index 6ea54a2c545..6e411856170 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelConfigMessageBodyReaders.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelConfigMessageBodyReaders.java @@ -11,7 +11,7 @@ import jakarta.ws.rs.core.MultivaluedMap; import jakarta.ws.rs.ext.MessageBodyReader; -import ai.timefold.solver.service.definition.api.domain.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelRequestMessageBodyReaders.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelRequestMessageBodyReaders.java index efa838b520a..f6ffeda93de 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelRequestMessageBodyReaders.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractModelRequestMessageBodyReaders.java @@ -11,9 +11,9 @@ import jakarta.ws.rs.core.MultivaluedMap; import jakarta.ws.rs.ext.MessageBodyReader; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractScoreAnalysisRequestMessageBodyReaders.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractScoreAnalysisRequestMessageBodyReaders.java index b4eb156e55b..0c4833bcabc 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractScoreAnalysisRequestMessageBodyReaders.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/io/AbstractScoreAnalysisRequestMessageBodyReaders.java @@ -11,9 +11,9 @@ import jakarta.ws.rs.core.MultivaluedMap; import jakarta.ws.rs.ext.MessageBodyReader; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.domain.ScoreAnalysisRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ScoreAnalysisRequest; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/schema/ValidatingReaderInterceptorContext.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/schema/ValidatingReaderInterceptorContext.java index a4063720114..6f1cb763f47 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/schema/ValidatingReaderInterceptorContext.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/rest/schema/ValidatingReaderInterceptorContext.java @@ -22,9 +22,9 @@ import jakarta.ws.rs.ext.ReaderInterceptor; import jakarta.ws.rs.ext.ReaderInterceptorContext; -import ai.timefold.solver.service.definition.api.ModelDescriptor; -import ai.timefold.solver.service.definition.api.validation.Validated; -import ai.timefold.solver.service.definition.api.validation.Validator; +import ai.timefold.solver.service.definition.api.validation.schema.Validated; +import ai.timefold.solver.service.definition.internal.descriptor.ModelDescriptor; +import ai.timefold.solver.service.definition.internal.validation.schema.Validator; import org.eclipse.microprofile.config.inject.ConfigProperty; import org.slf4j.Logger; diff --git a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogRecorder.java b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogRecorder.java index b3e059fe7b1..bdabdc42ec2 100644 --- a/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogRecorder.java +++ b/service/quarkus/runtime/src/main/java/ai/timefold/solver/service/quarkus/deployment/validation/ValidationIssueTypeCatalogRecorder.java @@ -4,7 +4,7 @@ import java.util.Collections; import java.util.List; -import ai.timefold.solver.service.definition.api.validation.IssueType; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; import ai.timefold.solver.service.definition.impl.validation.ValidationIssueTypeCatalog; import io.quarkus.runtime.RuntimeValue; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractDemoDataResource.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractDemoDataResource.java index 160718bd69b..6a6e767d221 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractDemoDataResource.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractDemoDataResource.java @@ -7,11 +7,11 @@ import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.data.DemoDataGenerator; -import ai.timefold.solver.service.definition.api.data.DemoMetaData; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.preview.api.demo.DemoDataGenerator; +import ai.timefold.solver.service.definition.preview.api.demo.DemoMetaData; import org.eclipse.microprofile.openapi.annotations.Operation; import org.eclipse.microprofile.openapi.annotations.media.Content; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractModelAPIResource.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractModelAPIResource.java index 836de400723..de15220ad78 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractModelAPIResource.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/AbstractModelAPIResource.java @@ -22,33 +22,33 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.SolvingStatus; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; -import ai.timefold.solver.service.definition.api.domain.ModelInputPatchRequest; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; -import ai.timefold.solver.service.definition.api.domain.RunConfiguration; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; -import ai.timefold.solver.service.definition.api.error.ValidationErrorInfo; -import ai.timefold.solver.service.definition.api.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; +import ai.timefold.solver.service.definition.api.dto.dataset.RunConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ValidationErrorInfo; +import ai.timefold.solver.service.definition.api.dto.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.patch.ModelInputPatchRequest; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationIssueTypes; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.issue.Issue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import ai.timefold.solver.service.definition.api.rest.DatasetSelector; import ai.timefold.solver.service.definition.api.rest.OperationId; import ai.timefold.solver.service.definition.api.rest.OperationOnPost; -import ai.timefold.solver.service.definition.api.validation.Issue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; import ai.timefold.solver.service.definition.api.validation.ModelValidator; -import ai.timefold.solver.service.definition.api.validation.Validated; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationIssueTypes; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; +import ai.timefold.solver.service.definition.api.validation.schema.Validated; import ai.timefold.solver.service.definition.impl.solver.SolverWorkerFacade; import ai.timefold.solver.service.definition.impl.validation.ValidationIssueTypeCatalog; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/CompletionExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/CompletionExceptionMapper.java index bac2d778f4b..6d469ccdd6f 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/CompletionExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/CompletionExceptionMapper.java @@ -9,7 +9,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; import ai.timefold.solver.service.definition.internal.error.ItemNotFoundException; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalArgumentExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalArgumentExceptionMapper.java index aeaf8eed7e6..f7721f9b1da 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalArgumentExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalArgumentExceptionMapper.java @@ -6,7 +6,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; @Provider diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalStateExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalStateExceptionMapper.java index 5a7330f2d99..d506b32357e 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalStateExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/IllegalStateExceptionMapper.java @@ -6,7 +6,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; @Provider diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/ItemNotFoundExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/ItemNotFoundExceptionMapper.java index 2c1f3e4e23c..20ea44709dd 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/ItemNotFoundExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/ItemNotFoundExceptionMapper.java @@ -6,7 +6,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.ItemNotFoundException; import org.slf4j.Logger; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/TimefoldRuntimeExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/TimefoldRuntimeExceptionMapper.java index 794b5c36799..68eacda60dd 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/TimefoldRuntimeExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/TimefoldRuntimeExceptionMapper.java @@ -6,7 +6,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; import org.slf4j.Logger; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/UnknownExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/UnknownExceptionMapper.java index 80a5a6b7b2d..709f9558834 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/UnknownExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/UnknownExceptionMapper.java @@ -8,7 +8,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; diff --git a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/WebApplicationExceptionMapper.java b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/WebApplicationExceptionMapper.java index 0c767c69978..8667658b118 100644 --- a/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/WebApplicationExceptionMapper.java +++ b/service/rest/src/main/java/ai/timefold/solver/service/rest/impl/error/WebApplicationExceptionMapper.java @@ -9,7 +9,7 @@ import jakarta.ws.rs.ext.ExceptionMapper; import jakarta.ws.rs.ext.Provider; -import ai.timefold.solver.service.definition.api.error.ErrorInfo; +import ai.timefold.solver.service.definition.api.dto.error.ErrorInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/service/test-model/src/build/openapi.json b/service/test-model/src/build/openapi.json index 8a04ec002b6..f80e2075e6d 100644 --- a/service/test-model/src/build/openapi.json +++ b/service/test-model/src/build/openapi.json @@ -1592,7 +1592,7 @@ "type" : "object", "properties" : { "type" : { - "description" : "The type of the issue type detail.", + "description" : "The type of the issue metadata.", "type" : "string", "readOnly" : true }, @@ -1605,7 +1605,7 @@ "type" : "object", "properties" : { "type" : { - "description" : "The type of the issue type detail.", + "description" : "The type of the issue metadata.", "type" : "string", "readOnly" : true } @@ -2168,8 +2168,7 @@ "type" : "string" } } - }, - "additionalProperties" : false + } }, "ScoreAnalysisConfigModelConfigOverrides" : { "type" : "object", diff --git a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/AbstractEmployeeScheduleIssue.java b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/AbstractEmployeeScheduleIssue.java index bfbbacad768..867004ad01f 100644 --- a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/AbstractEmployeeScheduleIssue.java +++ b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/AbstractEmployeeScheduleIssue.java @@ -2,10 +2,10 @@ import java.util.List; -import ai.timefold.solver.service.definition.api.validation.AbstractIssue; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueMetadata; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMetadata; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleInputMetrics.java b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleInputMetrics.java index cfdda9c098b..43f670f6fc9 100644 --- a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleInputMetrics.java +++ b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleInputMetrics.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.testmodel; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; diff --git a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleOutputMetrics.java b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleOutputMetrics.java index b5ff1edb7bc..dba39408291 100644 --- a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleOutputMetrics.java +++ b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleOutputMetrics.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.testmodel; -import ai.timefold.solver.service.definition.api.domain.DataFormat; +import ai.timefold.solver.service.definition.api.metrics.DataFormat; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; diff --git a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleValidator.java b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleValidator.java index 94c2c03a654..a311d38d9f4 100644 --- a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleValidator.java +++ b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/EmployeeScheduleValidator.java @@ -2,9 +2,9 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; import ai.timefold.solver.service.definition.api.validation.ModelValidator; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.quarkus.deployment.defaults.EmptyModelConfigOverrides; import ai.timefold.solver.service.testmodel.domain.EmployeeSchedule; import ai.timefold.solver.service.testmodel.domain.Shift; diff --git a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/ShiftEndBeforeStartIssue.java b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/ShiftEndBeforeStartIssue.java index e63f810265d..8b2518a9ae9 100644 --- a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/ShiftEndBeforeStartIssue.java +++ b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/ShiftEndBeforeStartIssue.java @@ -3,9 +3,9 @@ import java.time.OffsetDateTime; import java.util.List; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; -import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMessage; import org.eclipse.microprofile.openapi.annotations.media.Schema; diff --git a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/domain/EmployeeSchedule.java b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/domain/EmployeeSchedule.java index 34ff1d14ebc..634d589a0f5 100644 --- a/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/domain/EmployeeSchedule.java +++ b/service/test-model/src/main/java/ai/timefold/solver/service/testmodel/domain/EmployeeSchedule.java @@ -8,9 +8,9 @@ import ai.timefold.solver.core.api.domain.solution.PlanningSolution; import ai.timefold.solver.core.api.domain.valuerange.ValueRangeProvider; import ai.timefold.solver.core.api.score.HardMediumSoftScore; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.OutputMetricsAware; import ai.timefold.solver.service.testmodel.EmployeeScheduleInputMetrics; diff --git a/service/test-model/src/test/java/ai/timefold/solver/service/testmodel/EmployeeScheduleResourceTest.java b/service/test-model/src/test/java/ai/timefold/solver/service/testmodel/EmployeeScheduleResourceTest.java index c5832828bf6..1a929767f65 100644 --- a/service/test-model/src/test/java/ai/timefold/solver/service/testmodel/EmployeeScheduleResourceTest.java +++ b/service/test-model/src/test/java/ai/timefold/solver/service/testmodel/EmployeeScheduleResourceTest.java @@ -30,18 +30,18 @@ import ai.timefold.solver.core.api.score.HardMediumSoftScore; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.SolvingStatus; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; -import ai.timefold.solver.service.definition.api.domain.RunConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; +import ai.timefold.solver.service.definition.api.dto.dataset.RunConfiguration; +import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationIssueTypes; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueCode; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; +import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueType; import ai.timefold.solver.service.definition.api.rest.OperationOnPost; -import ai.timefold.solver.service.definition.api.validation.IssueCode; -import ai.timefold.solver.service.definition.api.validation.IssueSeverity; -import ai.timefold.solver.service.definition.api.validation.IssueType; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationIssueTypes; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; import ai.timefold.solver.service.definition.internal.events.BestSolutionEvent; import ai.timefold.solver.service.definition.internal.events.DatasetComputedEvent; import ai.timefold.solver.service.definition.internal.events.FinalBestSolutionEvent; diff --git a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacade.java b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacade.java index 49b8469ff1e..f1f1b196a30 100644 --- a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacade.java +++ b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacade.java @@ -12,15 +12,15 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelInputPatchRequest; -import ai.timefold.solver.service.definition.api.domain.ModelRequest; -import ai.timefold.solver.service.definition.api.domain.ModelResponse; -import ai.timefold.solver.service.definition.api.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelResponse; +import ai.timefold.solver.service.definition.api.dto.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.patch.ModelInputPatchRequest; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import ai.timefold.solver.service.definition.api.rest.DatasetSelector; diff --git a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/SolverWorker.java b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/SolverWorker.java index 2890b9da1d6..dc46e7e10ea 100644 --- a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/SolverWorker.java +++ b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/SolverWorker.java @@ -32,28 +32,28 @@ import ai.timefold.solver.core.api.solver.SolverStatus; import ai.timefold.solver.core.api.solver.event.EventProducerId; import ai.timefold.solver.core.api.solver.event.NewBestSolutionEvent; -import ai.timefold.solver.service.definition.api.ModelConvertor; -import ai.timefold.solver.service.definition.api.ModelConvertorBase; -import ai.timefold.solver.service.definition.api.ModelInput; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.ModelPostProcessor; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.SolvingStatus; -import ai.timefold.solver.service.definition.api.Status; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelConfig; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; +import ai.timefold.solver.service.definition.api.conversion.ModelConvertorBase; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfig; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; +import ai.timefold.solver.service.definition.api.dto.validation.LegacyValidationResult; +import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; import ai.timefold.solver.service.definition.api.enrichment.SolverModelEnricherService; import ai.timefold.solver.service.definition.api.enrichment.SolverModelEnrichmentDirectorService; import ai.timefold.solver.service.definition.api.metrics.InputMetricsAware; import ai.timefold.solver.service.definition.api.metrics.ModelInputMetrics; import ai.timefold.solver.service.definition.api.metrics.ModelOutputMetrics; import ai.timefold.solver.service.definition.api.metrics.OutputMetricsAware; -import ai.timefold.solver.service.definition.api.validation.LegacyValidationResult; import ai.timefold.solver.service.definition.api.validation.ModelValidator; -import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; -import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; +import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; import ai.timefold.solver.service.definition.impl.enrichment.MapEnrichmentContext; +import ai.timefold.solver.service.definition.internal.dataset.ModelPostProcessor; +import ai.timefold.solver.service.definition.internal.dataset.Status; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; import ai.timefold.solver.service.definition.internal.error.ItemNotFoundException; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; diff --git a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/audit/AuditListener.java b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/audit/AuditListener.java index e2fd7230d46..4924dde8933 100644 --- a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/audit/AuditListener.java +++ b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/audit/AuditListener.java @@ -2,7 +2,7 @@ import jakarta.enterprise.context.ApplicationScoped; -import ai.timefold.solver.service.definition.api.SolvingStatus; +import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; import ai.timefold.solver.service.definition.internal.events.BestSolutionEvent; import ai.timefold.solver.service.definition.internal.events.DatasetComputedEvent; import ai.timefold.solver.service.definition.internal.events.DatasetCreatedEvent; diff --git a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/log/LogsPostProcessor.java b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/log/LogsPostProcessor.java index f4c11295700..526e31fcce4 100644 --- a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/log/LogsPostProcessor.java +++ b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/log/LogsPostProcessor.java @@ -14,11 +14,11 @@ import jakarta.inject.Inject; import ai.timefold.solver.core.api.score.stream.ConstraintJustification; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.ModelPostProcessor; import ai.timefold.solver.service.definition.api.SolverModel; -import ai.timefold.solver.service.definition.api.log.LogInfo; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.log.LogInfo; import ai.timefold.solver.service.definition.impl.log.LoggingConstants; +import ai.timefold.solver.service.definition.internal.dataset.ModelPostProcessor; import ai.timefold.solver.service.definition.internal.platform.EnvironmentVars; import ai.timefold.solver.service.definition.internal.storage.AbstractStorageService; diff --git a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/monitoring/FlightRecorderProfiler.java b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/monitoring/FlightRecorderProfiler.java index 5204b317f5f..8bbd425a510 100644 --- a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/monitoring/FlightRecorderProfiler.java +++ b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/monitoring/FlightRecorderProfiler.java @@ -13,9 +13,9 @@ import jakarta.inject.Inject; import jakarta.interceptor.Interceptor; -import ai.timefold.solver.service.definition.api.ModelOutput; -import ai.timefold.solver.service.definition.api.ModelPostProcessor; import ai.timefold.solver.service.definition.api.SolverModel; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; +import ai.timefold.solver.service.definition.internal.dataset.ModelPostProcessor; import ai.timefold.solver.service.definition.internal.platform.EnvironmentVars; import org.eclipse.microprofile.config.inject.ConfigProperty; diff --git a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/termination/TerminationService.java b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/termination/TerminationService.java index 4e0d193c6b9..ee56c2c61d0 100644 --- a/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/termination/TerminationService.java +++ b/service/worker/src/main/java/ai/timefold/solver/service/worker/impl/termination/TerminationService.java @@ -14,7 +14,7 @@ import ai.timefold.solver.core.config.solver.termination.DiminishedReturnsTerminationConfig; import ai.timefold.solver.core.config.solver.termination.TerminationCompositionStyle; import ai.timefold.solver.core.config.solver.termination.TerminationConfig; -import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; +import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; import ai.timefold.solver.service.definition.internal.error.ErrorCodes; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacadeTest.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacadeTest.java index 958067fd8ad..e59111b7742 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacadeTest.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/DefaultSolverWorkerFacadeTest.java @@ -7,10 +7,10 @@ import java.util.Set; import java.util.UUID; -import ai.timefold.solver.service.definition.api.SolvingStatus; -import ai.timefold.solver.service.definition.api.domain.Configuration; -import ai.timefold.solver.service.definition.api.domain.Metadata; -import ai.timefold.solver.service.definition.api.domain.ModelInputPatchRequest; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Metadata; +import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; +import ai.timefold.solver.service.definition.api.dto.patch.ModelInputPatchRequest; import ai.timefold.solver.service.definition.api.rest.DatasetSelector; import ai.timefold.solver.service.definition.impl.storage.StorageObjectMapperWrapper; import ai.timefold.solver.service.definition.internal.error.ItemNotFoundException; diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/termination/TerminationServiceTest.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/termination/TerminationServiceTest.java index 03c176fe099..17fd1517a60 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/termination/TerminationServiceTest.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/termination/TerminationServiceTest.java @@ -8,7 +8,7 @@ import ai.timefold.solver.core.config.solver.termination.TerminationCompositionStyle; import ai.timefold.solver.core.config.solver.termination.TerminationConfig; -import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; +import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; import ai.timefold.solver.service.definition.internal.error.TimefoldRuntimeException; import org.junit.jupiter.api.Test; diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConfigOverrides.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConfigOverrides.java index 4fe3f3a9a95..3b08594bc8b 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConfigOverrides.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConfigOverrides.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.worker.impl.testdata; -import ai.timefold.solver.service.definition.api.ModelConfigOverrides; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConstraintJustification.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConstraintJustification.java index a9ec75f6db1..0ab53072793 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConstraintJustification.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelConstraintJustification.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.worker.impl.testdata; -import ai.timefold.solver.service.definition.api.ModelConstraintJustification; +import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; public class TestdataModelConstraintJustification implements ModelConstraintJustification { diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelInput.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelInput.java index 0d974ecc6a1..afeb452956c 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelInput.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelInput.java @@ -2,7 +2,7 @@ import java.util.Objects; -import ai.timefold.solver.service.definition.api.ModelInput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; public class TestdataModelInput implements ModelInput { diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelOutput.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelOutput.java index 2df4f3c1d7f..6c5dbaebc70 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelOutput.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataModelOutput.java @@ -1,6 +1,6 @@ package ai.timefold.solver.service.worker.impl.testdata; -import ai.timefold.solver.service.definition.api.ModelOutput; +import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; public class TestdataModelOutput implements ModelOutput { diff --git a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataStorageService.java b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataStorageService.java index 9cd74c58f0a..26a12279ca3 100644 --- a/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataStorageService.java +++ b/service/worker/src/test/java/ai/timefold/solver/service/worker/impl/testdata/TestdataStorageService.java @@ -1,7 +1,7 @@ package ai.timefold.solver.service.worker.impl.testdata; import ai.timefold.solver.core.api.score.HardSoftScore; -import ai.timefold.solver.service.definition.api.domain.Configuration; +import ai.timefold.solver.service.definition.api.dto.dataset.Configuration; import ai.timefold.solver.service.definition.impl.storage.StorageObjectMapperWrapper; import ai.timefold.solver.service.definition.internal.storage.AbstractStorageService; import ai.timefold.solver.service.definition.internal.storage.Storage; diff --git a/tools/migration/src/main/java/ai/timefold/solver/migration/preview/PreviewToLatestRecipe.java b/tools/migration/src/main/java/ai/timefold/solver/migration/preview/PreviewToLatestRecipe.java index 3ee3ba00692..405da80e6b1 100644 --- a/tools/migration/src/main/java/ai/timefold/solver/migration/preview/PreviewToLatestRecipe.java +++ b/tools/migration/src/main/java/ai/timefold/solver/migration/preview/PreviewToLatestRecipe.java @@ -26,7 +26,8 @@ public String getDescription() { @Override public List getRecipeList() { return List.of( - new NeighborhoodsMigrationRecipe()); + new NeighborhoodsMigrationRecipe(), + new ServiceDefinitionPackageMigrationRecipe()); } } diff --git a/tools/migration/src/main/java/ai/timefold/solver/migration/preview/ServiceDefinitionPackageMigrationRecipe.java b/tools/migration/src/main/java/ai/timefold/solver/migration/preview/ServiceDefinitionPackageMigrationRecipe.java new file mode 100644 index 00000000000..88f1c4edcef --- /dev/null +++ b/tools/migration/src/main/java/ai/timefold/solver/migration/preview/ServiceDefinitionPackageMigrationRecipe.java @@ -0,0 +1,124 @@ +package ai.timefold.solver.migration.preview; + +import java.util.List; + +import ai.timefold.solver.migration.AbstractRecipe; + +import org.openrewrite.Recipe; +import org.openrewrite.java.ChangeType; + +/** + * Migrates the types of the Timefold Solver service definition module ({@code timefold-solver-service-definition}) + * to its new package structure. + *

+ * The flat {@code ai.timefold.solver.service.definition.api} package and its {@code configuration}, {@code data}, + * {@code domain}, {@code error}, {@code log}, {@code termination} and {@code validation} subpackages + * were reorganized: + *

    + *
  • REST payloads (DTOs) moved to {@code api.dto.*},
  • + *
  • model description types moved to {@code api.description},
  • + *
  • model conversion types moved to {@code api.conversion},
  • + *
  • demo data types became a preview API in {@code preview.api.demo},
  • + *
  • types that are not meant to be used by models moved to {@code internal.*}.
  • + *
+ * The score analysis types of the enterprise service definition module + * ({@code ai.timefold.solver.enterprise.service.definition.api.analysis}) moved to {@code api.scoreanalysis} + * and, in case of DTOs, to {@code api.dto.scoreanalysis}. + *

+ * The removed {@code ai.timefold.solver.service.definition.api.UserModel} has no replacement and is not migrated. + */ +public class ServiceDefinitionPackageMigrationRecipe extends AbstractRecipe { + + private static final String API = "ai.timefold.solver.service.definition.api."; + private static final String NEW_PREVIEW_API = "ai.timefold.solver.service.definition.preview.api."; + private static final String INTERNAL = "ai.timefold.solver.service.definition.internal."; + private static final String ENTERPRISE_API = "ai.timefold.solver.enterprise.service.definition.api."; + + @Override + public String getDisplayName() { + return "Migrate the service definition to its new package structure"; + } + + @Override + public String getDescription() { + return "Migrate the types of the Timefold Solver service definition to their new packages."; + } + + @Override + public List getRecipeList() { + return List.of( + new ChangeType(API + "ModelConvertor", API + "conversion.ModelConvertor", true), + new ChangeType(API + "ModelConvertorBase", API + "conversion.ModelConvertorBase", true), + new ChangeType(API + "domain.ConstraintReference", API + "description.ConstraintReference", true), + new ChangeType(API + "ModelMaturityLevel", API + "description.ModelMaturityLevel", true), + new ChangeType(API + "domain.Configuration", API + "dto.dataset.Configuration", true), + new ChangeType(API + "configuration.MapsConfiguration", API + "dto.dataset.MapsConfiguration", true), + new ChangeType(API + "domain.Metadata", API + "dto.dataset.Metadata", true), + new ChangeType(API + "domain.ModelConfig", API + "dto.dataset.ModelConfig", true), + new ChangeType(API + "ModelConfigOverrides", API + "dto.dataset.ModelConfigOverrides", true), + new ChangeType(API + "ModelInput", API + "dto.dataset.ModelInput", true), + new ChangeType(API + "ModelOutput", API + "dto.dataset.ModelOutput", true), + new ChangeType(API + "domain.ModelRequest", API + "dto.dataset.ModelRequest", true), + new ChangeType(API + "domain.ModelResponse", API + "dto.dataset.ModelResponse", true), + new ChangeType(API + "configuration.ResourcesConfiguration", API + "dto.dataset.ResourcesConfiguration", true), + new ChangeType(API + "domain.RunConfiguration", API + "dto.dataset.RunConfiguration", true), + new ChangeType(API + "SolvingStatus", API + "dto.dataset.SolvingStatus", true), + new ChangeType(API + "error.ErrorInfo", API + "dto.error.ErrorInfo", true), + new ChangeType(API + "error.ValidationErrorInfo", API + "dto.error.ValidationErrorInfo", true), + new ChangeType(API + "log.LogInfo", API + "dto.log.LogInfo", true), + new ChangeType(API + "ModelInputPatch", API + "dto.patch.ModelInputPatch", true), + new ChangeType(API + "ModelInputPatchOp", API + "dto.patch.ModelInputPatchOp", true), + new ChangeType(API + "domain.ModelInputPatchRequest", API + "dto.patch.ModelInputPatchRequest", true), + new ChangeType(API + "ModelConstraintJustification", API + "dto.scoreanalysis.ModelConstraintJustification", + true), + new ChangeType(API + "domain.ScoreAnalysisConfig", API + "dto.scoreanalysis.ScoreAnalysisConfig", true), + new ChangeType(API + "domain.ScoreAnalysisRequest", API + "dto.scoreanalysis.ScoreAnalysisRequest", true), + new ChangeType(API + "termination.SolverTerminationConfig", API + "dto.solve.SolverTerminationConfig", true), + new ChangeType(API + "validation.AbstractIssue", API + "dto.validation.issue.AbstractIssue", true), + new ChangeType(API + "validation.Issue", API + "dto.validation.issue.Issue", true), + new ChangeType(API + "validation.IssueCode", API + "dto.validation.issue.IssueCode", true), + new ChangeType(API + "validation.IssueSeverity", API + "dto.validation.issue.IssueSeverity", true), + new ChangeType(API + "validation.IssueType", API + "dto.validation.issue.IssueType", true), + new ChangeType(API + "validation.metadata.IssueMessage", API + "dto.validation.issue.metadata.IssueMessage", + true), + new ChangeType(API + "validation.IssueMetadata", API + "dto.validation.issue.metadata.IssueMetadata", true), + new ChangeType(API + "validation.LegacyValidationResult", API + "dto.validation.LegacyValidationResult", true), + new ChangeType(API + "validation.dto.ValidationIssueTypes", API + "dto.validation.ValidationIssueTypes", true), + new ChangeType(API + "validation.dto.ValidationResult", API + "dto.validation.ValidationResult", true), + new ChangeType(API + "validation.ValidationStatus", API + "dto.validation.ValidationStatus", true), + new ChangeType(API + "domain.DataFormat", API + "metrics.DataFormat", true), + new ChangeType(API + "validation.ValidationBuilder", API + "validation.model.ValidationBuilder", true), + new ChangeType(API + "validation.Validated", API + "validation.schema.Validated", true), + new ChangeType(API + "configuration.ConfigurationProfile", INTERNAL + "configuration.ConfigurationProfile", + true), + new ChangeType(API + "ModelPostProcessor", INTERNAL + "dataset.ModelPostProcessor", true), + new ChangeType(API + "SolverInput", INTERNAL + "dataset.SolverInput", true), + new ChangeType(API + "Status", INTERNAL + "dataset.Status", true), + new ChangeType(API + "ModelDescriptor", INTERNAL + "descriptor.ModelDescriptor", true), + new ChangeType(API + "Resources", INTERNAL + "descriptor.Resources", true), + new ChangeType(API + "ResourceType", INTERNAL + "descriptor.ResourceType", true), + new ChangeType(API + "TrialConfig", INTERNAL + "descriptor.TrialConfig", true), + new ChangeType(API + "validation.Validator", INTERNAL + "validation.schema.Validator", true), + new ChangeType(API + "data.AbstractBasicDemoDataGenerator", + NEW_PREVIEW_API + "demo.AbstractBasicDemoDataGenerator", true), + new ChangeType(API + "data.DemoData", NEW_PREVIEW_API + "demo.DemoData", true), + new ChangeType(API + "data.DemoDataConfigEntry", NEW_PREVIEW_API + "demo.DemoDataConfigEntry", true), + new ChangeType(API + "data.DemoDataGenerator", NEW_PREVIEW_API + "demo.DemoDataGenerator", true), + new ChangeType(API + "data.DemoMetaData", NEW_PREVIEW_API + "demo.DemoMetaData", true), + new ChangeType(INTERNAL + "Headers", INTERNAL + "rest.Headers", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisConstraintDetail", + ENTERPRISE_API + "dto.scoreanalysis.ScoreAnalysisConstraintDetail", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisDetail", + ENTERPRISE_API + "dto.scoreanalysis.ScoreAnalysisDetail", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisMatchDetail", + ENTERPRISE_API + "dto.scoreanalysis.ScoreAnalysisMatchDetail", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisFacade", + ENTERPRISE_API + "scoreanalysis.ScoreAnalysisFacade", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisFacadeBase", + ENTERPRISE_API + "scoreanalysis.ScoreAnalysisFacadeBase", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisService", + ENTERPRISE_API + "scoreanalysis.ScoreAnalysisService", true), + new ChangeType(ENTERPRISE_API + "analysis.ScoreAnalysisServiceBase", + ENTERPRISE_API + "scoreanalysis.ScoreAnalysisServiceBase", true)); + } +} diff --git a/tools/migration/src/test/java/ai/timefold/solver/migration/preview/ServiceDefinitionPackageMigrationRecipeTest.java b/tools/migration/src/test/java/ai/timefold/solver/migration/preview/ServiceDefinitionPackageMigrationRecipeTest.java new file mode 100644 index 00000000000..7cdfc42cee5 --- /dev/null +++ b/tools/migration/src/test/java/ai/timefold/solver/migration/preview/ServiceDefinitionPackageMigrationRecipeTest.java @@ -0,0 +1,236 @@ +package ai.timefold.solver.migration.preview; + +import static org.openrewrite.java.Assertions.java; + +import java.util.List; + +import ai.timefold.solver.migration.AbstractRecipeTest; +import ai.timefold.solver.migration.NoWildCardImportStyle; + +import org.junit.jupiter.api.Test; +import org.openrewrite.java.JavaParser; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.TypeValidation; + +class ServiceDefinitionPackageMigrationRecipeTest extends AbstractRecipeTest { + + @Override + public void defaults(RecipeSpec spec) { + spec.recipes(new ServiceDefinitionPackageMigrationRecipe()) + .typeValidationOptions(TypeValidation.builder().allowMissingType(ignore -> true).build()) + .parser(JavaParser.fromJavaVersion() + .styles(List.of(new NoWildCardImportStyle())) + // We must add all old classes as stubs to the JavaParser classpath + .dependsOn( + "package ai.timefold.solver.service.definition.api; public interface ModelInput {}", + "package ai.timefold.solver.service.definition.api; public interface ModelOutput {}", + "package ai.timefold.solver.service.definition.api; public interface ModelConfigOverrides {}", + "package ai.timefold.solver.service.definition.api; public interface ModelConvertor {}", + "package ai.timefold.solver.service.definition.api; public interface ModelConstraintJustification {}", + "package ai.timefold.solver.service.definition.api; public enum ModelMaturityLevel { STABLE }", + "package ai.timefold.solver.service.definition.api; public enum SolvingStatus { SOLVING_ACTIVE }", + "package ai.timefold.solver.service.definition.api; public record ResourceType(String value) {}", + "package ai.timefold.solver.service.definition.api.domain; public record ModelRequest(Input_ modelInput) {}", + "package ai.timefold.solver.service.definition.api.domain; public record ConstraintReference(String id) {}", + "package ai.timefold.solver.service.definition.api.domain; public enum DataFormat { INTEGER }", + "package ai.timefold.solver.service.definition.api.configuration; public record MapsConfiguration(String provider) {}", + "package ai.timefold.solver.service.definition.api.termination; public record SolverTerminationConfig(String spentLimit) {}", + "package ai.timefold.solver.service.definition.api.validation; public interface Issue {}", + "package ai.timefold.solver.service.definition.api.validation; public abstract class AbstractIssue implements Issue {}", + "package ai.timefold.solver.service.definition.api.validation; public enum IssueSeverity { ERROR }", + "package ai.timefold.solver.service.definition.api.validation; public class ValidationBuilder {}", + "package ai.timefold.solver.service.definition.api.validation.dto; public record ValidationResult(String status) {}", + "package ai.timefold.solver.service.definition.api.validation.metadata; public record IssueMessage(String message) {}", + "package ai.timefold.solver.service.definition.api.data; public record DemoData(Object metaData, Object modelRequest) {}", + "package ai.timefold.solver.service.definition.api.data; public interface DemoDataGenerator {}", + "package ai.timefold.solver.enterprise.service.definition.api.analysis; public record ScoreAnalysisDetail(String score) {}", + "package ai.timefold.solver.enterprise.service.definition.api.analysis; public interface ScoreAnalysisService {}")); + } + + @Test + void migrateModelTypes() { + rewriteRun(java( + """ + package timefold; + + import ai.timefold.solver.service.definition.api.ModelConfigOverrides; + import ai.timefold.solver.service.definition.api.ModelConstraintJustification; + import ai.timefold.solver.service.definition.api.ModelConvertor; + import ai.timefold.solver.service.definition.api.ModelInput; + import ai.timefold.solver.service.definition.api.ModelMaturityLevel; + import ai.timefold.solver.service.definition.api.ModelOutput; + import ai.timefold.solver.service.definition.api.domain.ConstraintReference; + import ai.timefold.solver.service.definition.api.domain.DataFormat; + import ai.timefold.solver.service.definition.api.domain.ModelRequest; + + public class Test { + ModelInput input; + ModelOutput output; + ModelConvertor convertor; + ModelRequest request; + ModelConstraintJustification justification; + ConstraintReference constraintReference; + ModelMaturityLevel maturityLevel = ModelMaturityLevel.STABLE; + DataFormat dataFormat = DataFormat.INTEGER; + }""", + """ + package timefold; + + import ai.timefold.solver.service.definition.api.conversion.ModelConvertor; + import ai.timefold.solver.service.definition.api.description.ConstraintReference; + import ai.timefold.solver.service.definition.api.description.ModelMaturityLevel; + import ai.timefold.solver.service.definition.api.dto.dataset.ModelConfigOverrides; + import ai.timefold.solver.service.definition.api.dto.dataset.ModelInput; + import ai.timefold.solver.service.definition.api.dto.dataset.ModelOutput; + import ai.timefold.solver.service.definition.api.dto.dataset.ModelRequest; + import ai.timefold.solver.service.definition.api.dto.scoreanalysis.ModelConstraintJustification; + import ai.timefold.solver.service.definition.api.metrics.DataFormat; + + public class Test { + ModelInput input; + ModelOutput output; + ModelConvertor convertor; + ModelRequest request; + ModelConstraintJustification justification; + ConstraintReference constraintReference; + ModelMaturityLevel maturityLevel = ModelMaturityLevel.STABLE; + DataFormat dataFormat = DataFormat.INTEGER; + }""")); + } + + @Test + void migrateConfigurationTypes() { + rewriteRun(java( + """ + package timefold; + + import ai.timefold.solver.service.definition.api.SolvingStatus; + import ai.timefold.solver.service.definition.api.configuration.MapsConfiguration; + import ai.timefold.solver.service.definition.api.termination.SolverTerminationConfig; + + public class Test { + MapsConfiguration mapsConfiguration; + SolverTerminationConfig terminationConfig; + SolvingStatus solvingStatus = SolvingStatus.SOLVING_ACTIVE; + }""", + """ + package timefold; + + import ai.timefold.solver.service.definition.api.dto.dataset.MapsConfiguration; + import ai.timefold.solver.service.definition.api.dto.dataset.SolvingStatus; + import ai.timefold.solver.service.definition.api.dto.solve.SolverTerminationConfig; + + public class Test { + MapsConfiguration mapsConfiguration; + SolverTerminationConfig terminationConfig; + SolvingStatus solvingStatus = SolvingStatus.SOLVING_ACTIVE; + }""")); + } + + @Test + void migrateValidationTypes() { + rewriteRun(java( + """ + package timefold; + + import ai.timefold.solver.service.definition.api.validation.AbstractIssue; + import ai.timefold.solver.service.definition.api.validation.IssueSeverity; + import ai.timefold.solver.service.definition.api.validation.ValidationBuilder; + import ai.timefold.solver.service.definition.api.validation.dto.ValidationResult; + import ai.timefold.solver.service.definition.api.validation.metadata.IssueMessage; + + public class TestIssue extends AbstractIssue { + IssueSeverity severity = IssueSeverity.ERROR; + IssueMessage message; + ValidationBuilder builder; + ValidationResult result; + }""", + """ + package timefold; + + import ai.timefold.solver.service.definition.api.dto.validation.ValidationResult; + import ai.timefold.solver.service.definition.api.dto.validation.issue.AbstractIssue; + import ai.timefold.solver.service.definition.api.dto.validation.issue.IssueSeverity; + import ai.timefold.solver.service.definition.api.dto.validation.issue.metadata.IssueMessage; + import ai.timefold.solver.service.definition.api.validation.model.ValidationBuilder; + + public class TestIssue extends AbstractIssue { + IssueSeverity severity = IssueSeverity.ERROR; + IssueMessage message; + ValidationBuilder builder; + ValidationResult result; + }""")); + } + + @Test + void migrateDemoDataToPreviewApi() { + rewriteRun(java( + """ + package timefold; + + import ai.timefold.solver.service.definition.api.data.DemoData; + import ai.timefold.solver.service.definition.api.data.DemoDataGenerator; + + public class Test { + DemoDataGenerator generator; + DemoData demoData; + }""", + """ + package timefold; + + import ai.timefold.solver.service.definition.preview.api.demo.DemoData; + import ai.timefold.solver.service.definition.preview.api.demo.DemoDataGenerator; + + public class Test { + DemoDataGenerator generator; + DemoData demoData; + }""")); + } + + @Test + void migrateEnterpriseScoreAnalysisTypes() { + rewriteRun(java( + """ + package timefold; + + import ai.timefold.solver.enterprise.service.definition.api.analysis.ScoreAnalysisDetail; + import ai.timefold.solver.enterprise.service.definition.api.analysis.ScoreAnalysisService; + + public class Test { + ScoreAnalysisService service; + ScoreAnalysisDetail detail; + }""", + """ + package timefold; + + import ai.timefold.solver.enterprise.service.definition.api.dto.scoreanalysis.ScoreAnalysisDetail; + import ai.timefold.solver.enterprise.service.definition.api.scoreanalysis.ScoreAnalysisService; + + public class Test { + ScoreAnalysisService service; + ScoreAnalysisDetail detail; + }""")); + } + + @Test + void migrateInternalTypes() { + rewriteRun(java( + """ + package timefold; + + import ai.timefold.solver.service.definition.api.ResourceType; + + public class Test { + ResourceType resourceType = new ResourceType("vehicle"); + }""", + """ + package timefold; + + import ai.timefold.solver.service.definition.internal.descriptor.ResourceType; + + public class Test { + ResourceType resourceType = new ResourceType("vehicle"); + }""")); + } + +}