diff --git a/persistence-service-v1/persistence-service-api-v1/pom.xml b/persistence-service-v1/persistence-service-api-v1/pom.xml
index bf4454d55..4bdf0765f 100644
--- a/persistence-service-v1/persistence-service-api-v1/pom.xml
+++ b/persistence-service-v1/persistence-service-api-v1/pom.xml
@@ -56,16 +56,22 @@
- org.springframework
- spring-web
+ org.springframework.boot
+ spring-boot-starter-web
+ compile
+
+ org.springframework.boot
+ spring-boot-starter-validation
+ compile
+
+
com.iqser.red.commons
jackson-commons
-
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..8b3a1c525 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,8 @@
package com.iqser.red.service.persistence.service.v1.api.model.multitenancy;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -11,11 +14,15 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class TenantRequest {
+ @NotNull
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/pom.xml b/persistence-service-v1/persistence-service-server-v1/pom.xml
index 15ab8a5cd..6da55d426 100644
--- a/persistence-service-v1/persistence-service-server-v1/pom.xml
+++ b/persistence-service-v1/persistence-service-server-v1/pom.xml
@@ -125,6 +125,10 @@
org.slf4j
slf4j-log4j12
+
+ org.springframework.boot
+ spring-boot-starter-web
+
com.iqser.red.commons
spring-boot-starter-web-custom-commons
diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ControllerAdvice.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ControllerAdvice.java
index 5e47ec606..0a8515b48 100644
--- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ControllerAdvice.java
+++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ControllerAdvice.java
@@ -5,6 +5,7 @@ import java.time.OffsetDateTime;
import org.postgresql.util.PSQLException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
@@ -93,4 +94,13 @@ public class ControllerAdvice {
}
}
+
+ @ResponseBody
+ @ResponseStatus(value = HttpStatus.BAD_REQUEST)
+ @ExceptionHandler(value = MethodArgumentNotValidException.class)
+ public ErrorMessage handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
+
+ return new ErrorMessage(OffsetDateTime.now(), e.getMessage());
+ }
+
}
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..77550538b 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;
@@ -23,7 +25,7 @@ public class TenantsController implements TenantsResource {
private final DeploymentKeyService deploymentKeyService;
- public void createTenant(@RequestBody TenantRequest tenantRequest) {
+ public void createTenant(@Valid @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 756da76a7..a47fcedbc 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
@@ -8,6 +8,7 @@ import java.util.stream.Collectors;
import javax.sql.DataSource;
+import org.postgresql.util.PSQLException;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -15,6 +16,8 @@ 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;
import com.iqser.red.service.persistence.management.v1.processor.service.EncryptionDecryptionService;
@@ -71,6 +74,8 @@ public class TenantManagementService {
.password(encryptedPassword)
.build();
tenantRepository.save(tenantEntity);
+ } else {
+ throw ConflictException.withObjectName("tenant");
}
}
diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml
index e495dae07..4877ddcec 100755
--- a/persistence-service-v1/pom.xml
+++ b/persistence-service-v1/pom.xml
@@ -68,6 +68,7 @@
+