diff --git a/car_manager/pom.xml b/car_manager/pom.xml index e813e21ed68232509f11479ab3ed1d04547d5b83..2ebc4a8cc702514a6b79847348a1e93c52627e0f 100644 --- a/car_manager/pom.xml +++ b/car_manager/pom.xml @@ -17,6 +17,10 @@ <artifactId>jakarta.validation-api</artifactId> <version>3.0.2</version> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-validation</artifactId> + </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java index df2c9ea1443035e695f3c9e001f88c79857e7d2b..9b9761e3e6875f67bce0226ecd1291ffdd68548e 100644 --- a/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java +++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/data/repository/ConfigRepository.java @@ -1,6 +1,6 @@ package cz.muni.pa165.carmanager.data.repository; -import cz.muni.pa165.common.racecomponents.Config; +import cz.muni.pa165.common.racecomponents.CarConfig; import java.util.Optional; import org.springframework.stereotype.Repository; @@ -11,11 +11,11 @@ import org.springframework.stereotype.Repository; public class ConfigRepository { // TODO doplnit v dalsom milestone - public Optional<Config> updateConfig(Config config) { - return Optional.of(config); + public Optional<CarConfig> updateConfig(CarConfig carConfig) { + return Optional.of(carConfig); } - public Optional<Config> createConfig(Config config) { - return Optional.of(config); + public Optional<CarConfig> createConfig(CarConfig carConfig) { + return Optional.of(carConfig); } } diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java index e192eeb32bd92c6256306d18630ae694033cc0fe..2ee20a85584cdd1601f6696ca0d5a6fa529075da 100644 --- a/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java +++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/facade/CarManagerFacade.java @@ -1,7 +1,7 @@ package cz.muni.pa165.carmanager.facade; import cz.muni.pa165.carmanager.service.CarManagerService; -import cz.muni.pa165.common.racecomponents.Config; +import cz.muni.pa165.common.racecomponents.CarConfig; import org.springframework.stereotype.Service; /** @@ -16,11 +16,11 @@ public class CarManagerFacade { this.carManagerService = carManagerService; } - public Config createConfig(Config config) { - return carManagerService.createConfig(config); + public CarConfig createConfig(CarConfig carConfig) { + return carManagerService.createConfig(carConfig); } - public Config updateConfig(Config config) { - return carManagerService.updateConfig(config); + public CarConfig updateConfig(CarConfig carConfig) { + return carManagerService.updateConfig(carConfig); } } diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java index a05270d1bd635a5e859b78e3678fb3251a0aab95..7ceca768afba8dfb4dc9f8b1e5fbb8e1eebd21cf 100644 --- a/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java +++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/rest/CarManagerController.java @@ -1,11 +1,9 @@ package cz.muni.pa165.carmanager.rest; -import com.fasterxml.jackson.databind.ObjectMapper; import cz.muni.pa165.carmanager.facade.CarManagerFacade; -import cz.muni.pa165.common.racecomponents.Config; +import cz.muni.pa165.common.racecomponents.CarConfig; import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.Valid; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -32,14 +30,14 @@ public class CarManagerController { @Operation(summary = "Create a configuration") @PostMapping(path = "/config", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity<Config> createConfig(@Valid @RequestBody Config config) { - return ResponseEntity.ok(carManagerFacade.createConfig(config)); + public ResponseEntity<CarConfig> createConfig(@Valid @RequestBody CarConfig carConfig) { + return ResponseEntity.ok(carManagerFacade.createConfig(carConfig)); } @Operation(summary = "Update a specific configuration") @PutMapping(path = "/config", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity<Config> updateConfig(@Valid @RequestBody Config config) { - return ResponseEntity.ok(carManagerFacade.updateConfig(config)); + public ResponseEntity<CarConfig> updateConfig(@Valid @RequestBody CarConfig carConfig) { + return ResponseEntity.ok(carManagerFacade.updateConfig(carConfig)); } } diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java index 50e388bb023187a7a0678c9bf6c1da7c4f6f9cf6..73024ea2cea6dd645dda6db09dd68711a5135d4a 100644 --- a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java +++ b/car_manager/src/main/java/cz/muni/pa165/carmanager/service/CarManagerService.java @@ -1,7 +1,9 @@ package cz.muni.pa165.carmanager.service; import cz.muni.pa165.carmanager.data.repository.ConfigRepository; -import cz.muni.pa165.common.racecomponents.Config; +import cz.muni.pa165.common.exceptions.DatabaseException; +import cz.muni.pa165.common.exceptions.ResourceNotFoundException; +import cz.muni.pa165.common.racecomponents.CarConfig; import org.springframework.stereotype.Service; /** @@ -19,23 +21,23 @@ public class CarManagerService { /** * Calls repository to update specific config, if not found, throws exception. * - * @param config config to update. + * @param carConfig config to update. * @return Updated config. */ - public Config updateConfig(Config config) { - return configRepository.updateConfig(config) + public CarConfig updateConfig(CarConfig carConfig) { + return configRepository.updateConfig(carConfig) .orElseThrow(() -> new ResourceNotFoundException( - "Config with id: " + config.getId() + " was not found.")); + "Config with id: " + carConfig.getId() + " was not found.")); } /** * Calls repository to create a config, if query is not executed correctly, throws exception. * - * @param config config to update. + * @param carConfig config to update. * @return Updated config. */ - public Config createConfig(Config config) { - return configRepository.createConfig(config) + public CarConfig createConfig(CarConfig carConfig) { + return configRepository.createConfig(carConfig) .orElseThrow( () -> new DatabaseException("Something went wrong when" + "creating the config in database.")); diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java b/common/src/main/java/cz/muni/pa165/common/exceptions/DatabaseException.java similarity index 81% rename from car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java rename to common/src/main/java/cz/muni/pa165/common/exceptions/DatabaseException.java index 5d33f18db7a49e8a5f105e36dfd0554c464f74b2..2b2bef4ab34d9defbcb0f2176d4681de1da51d0c 100644 --- a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/DatabaseException.java +++ b/common/src/main/java/cz/muni/pa165/common/exceptions/DatabaseException.java @@ -1,4 +1,4 @@ -package cz.muni.pa165.carmanager.service; +package cz.muni.pa165.common.exceptions; /** * Exception when a query does is not executed correctly. diff --git a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java b/common/src/main/java/cz/muni/pa165/common/exceptions/ResourceNotFoundException.java similarity index 82% rename from car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java rename to common/src/main/java/cz/muni/pa165/common/exceptions/ResourceNotFoundException.java index ddfe6f14ce3f609e01cb01f7fbe51e1e8fe4b20a..5fcc0c8e1560a546c0e7812c32eb99ffc38c4cd2 100644 --- a/car_manager/src/main/java/cz/muni/pa165/carmanager/service/ResourceNotFoundException.java +++ b/common/src/main/java/cz/muni/pa165/common/exceptions/ResourceNotFoundException.java @@ -1,4 +1,4 @@ -package cz.muni.pa165.carmanager.service; +package cz.muni.pa165.common.exceptions; /** * Exception when resource does not exist. diff --git a/common/src/main/java/cz/muni/pa165/common/racecomponents/Car.java b/common/src/main/java/cz/muni/pa165/common/racecomponents/Car.java index 6e55be82f0ccddbbd07c0b43cbcd0ce3490e21ca..7862ea5e40f7e5fdbcbfe7afc69eca62e3ecf532 100644 --- a/common/src/main/java/cz/muni/pa165/common/racecomponents/Car.java +++ b/common/src/main/java/cz/muni/pa165/common/racecomponents/Car.java @@ -1,5 +1,6 @@ package cz.muni.pa165.common.racecomponents; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import java.util.List; import lombok.Data; @@ -12,9 +13,10 @@ public class Car { private Long id; @NotNull - private Config config; + @Valid + private CarConfig carConfig; @NotNull - private List<Driver> drivers; + private List<@Valid Driver> drivers; } diff --git a/common/src/main/java/cz/muni/pa165/common/racecomponents/Config.java b/common/src/main/java/cz/muni/pa165/common/racecomponents/CarConfig.java similarity index 84% rename from common/src/main/java/cz/muni/pa165/common/racecomponents/Config.java rename to common/src/main/java/cz/muni/pa165/common/racecomponents/CarConfig.java index 9259f1cae1afe29eaeffa1c46b9c0536fcf9727a..411a35874930e2b2bb785060c7a653bb2d624995 100644 --- a/common/src/main/java/cz/muni/pa165/common/racecomponents/Config.java +++ b/common/src/main/java/cz/muni/pa165/common/racecomponents/CarConfig.java @@ -3,6 +3,7 @@ package cz.muni.pa165.common.racecomponents; import cz.muni.pa165.common.racecomponents.carcomponents.Engine; import cz.muni.pa165.common.racecomponents.carcomponents.Spoiler; import cz.muni.pa165.common.racecomponents.carcomponents.Tires; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -10,14 +11,17 @@ import lombok.Data; * Configuration class. */ @Data -public class Config { +public class CarConfig { private Long id; @NotNull + @Valid private Engine engine; @NotNull + @Valid private Tires tires; @NotNull + @Valid private Spoiler spoiler; } diff --git a/common/src/main/java/cz/muni/pa165/common/racecomponents/Driver.java b/common/src/main/java/cz/muni/pa165/common/racecomponents/Driver.java index 8f3637c36cfc3c1708e2248fed87dfe52c19394f..cab03312a0ba34877c7e465b220d54730e78f5ac 100644 --- a/common/src/main/java/cz/muni/pa165/common/racecomponents/Driver.java +++ b/common/src/main/java/cz/muni/pa165/common/racecomponents/Driver.java @@ -1,5 +1,6 @@ package cz.muni.pa165.common.racecomponents; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import java.util.Set; import lombok.Data; diff --git a/common/src/main/java/cz/muni/pa165/common/racecomponents/Race.java b/common/src/main/java/cz/muni/pa165/common/racecomponents/Race.java index 749c58e15fdbdcb604745d1035e2b2f797bbccb3..0c590d2aae68669d7cd6e60ca9d8f253eeabd98f 100644 --- a/common/src/main/java/cz/muni/pa165/common/racecomponents/Race.java +++ b/common/src/main/java/cz/muni/pa165/common/racecomponents/Race.java @@ -1,6 +1,7 @@ package cz.muni.pa165.common.racecomponents; import ch.qos.logback.core.joran.sanity.Pair; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -19,9 +20,9 @@ public class Race { private String name; @NotNull - private Pair<Driver, Car> vehicle1; + private Pair<@Valid Driver,@Valid Car> vehicle1; @NotNull - private Pair<Driver, Car> vehicle2; + private Pair<@Valid Driver,@Valid Car> vehicle2; } diff --git a/mvnw.cmd b/mvnw.cmd index 1d8ab018eaf11d9b3a4a90e7818ace373dfbb380..4a87c3318f7f209adcf7302966b0be3aa70d4b9a 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -108,10 +108,10 @@ cd "%EXEC_DIR%" :endDetectBaseDir -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.carConfig" goto endReadAdditionalConfig @setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.carConfig") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% :endReadAdditionalConfig