From eaa0a640d5367934577b496f06e72cbb5fb5366b Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Thu, 27 Oct 2022 17:00:42 +0200 Subject: [PATCH] RED-5293: 500 for invalid tenant --- persistence-service-v1/persistence-service-api-v1/pom.xml | 6 ++++++ .../service/v1/api/model/multitenancy/TenantRequest.java | 5 +++++ .../v1/processor/exception/ConflictException.java | 7 +++++++ .../peristence/v1/server/controller/TenantsController.java | 4 +++- .../v1/server/service/TenantManagementService.java | 7 +------ 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/pom.xml b/persistence-service-v1/persistence-service-api-v1/pom.xml index bf4454d55..1d7424a76 100644 --- a/persistence-service-v1/persistence-service-api-v1/pom.xml +++ b/persistence-service-v1/persistence-service-api-v1/pom.xml @@ -65,6 +65,12 @@ com.iqser.red.commons jackson-commons + + jakarta.validation + jakarta.validation-api + 2.0.2 + compile + diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/multitenancy/TenantRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/multitenancy/TenantRequest.java index 1141ce648..9f97b483c 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/multitenancy/TenantRequest.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/multitenancy/TenantRequest.java @@ -1,5 +1,7 @@ package com.iqser.red.service.persistence.service.v1.api.model.multitenancy; +import javax.validation.constraints.NotBlank; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -12,10 +14,13 @@ import lombok.NoArgsConstructor; public class TenantRequest { private String tenantId; + @NotBlank private String displayName; private String guid; private String jdbcUrl; + @NotBlank private String user; + @NotBlank private String password; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/ConflictException.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/ConflictException.java index f47430f66..7e268bf97 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/ConflictException.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/exception/ConflictException.java @@ -7,4 +7,11 @@ public class ConflictException extends RuntimeException { super(message); } + + public static ConflictException withObjectName(String objectName) { + + return new ConflictException(String.format("An object of type %s already exists.", objectName)); + + } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/TenantsController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/TenantsController.java index 611e9925f..e8ab470c1 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/TenantsController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/TenantsController.java @@ -2,6 +2,8 @@ package com.iqser.red.service.peristence.v1.server.controller; import java.util.List; +import javax.validation.Valid; + import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -22,7 +24,7 @@ public class TenantsController implements TenantsResource { private final TenantManagementService tenantManagementService; private final DeploymentKeyService deploymentKeyService; - + @Valid public void createTenant(@RequestBody TenantRequest tenantRequest) { tenantManagementService.createTenant(tenantRequest); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java index af393cab2..a358c143b 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/TenantManagementService.java @@ -15,7 +15,6 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.jdbc.datasource.SingleConnectionDataSource; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.multitenancy.entity.TenantEntity; @@ -57,10 +56,6 @@ public class TenantManagementService { if (tenantRepository.findById(tenantRequest.getTenantId()).isEmpty()) { - if (tenantRequest.getDisplayName().isEmpty() || tenantRequest.getUser().isEmpty() || tenantRequest.getPassword().isBlank()) { - throw new BadRequestException("Bad request: fields have wrong format or required fields are empty"); - } - String encryptedPassword = encryptionService.encrypt(tenantRequest.getPassword()); try (Connection connection = DriverManager.getConnection(tenantRequest.getJdbcUrl(), tenantRequest.getUser(), tenantRequest.getPassword())) { @@ -78,7 +73,7 @@ public class TenantManagementService { .build(); tenantRepository.save(tenantEntity); } else { - throw new ConflictException("Conflict: tenant id already exists."); + throw ConflictException.withObjectName("tenant"); } }