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");
}
}