RED-5293: 500 for invalid tenant

This commit is contained in:
Ali Oezyetimoglu 2022-10-27 17:00:42 +02:00
parent b4ae9b7137
commit eaa0a640d5
5 changed files with 22 additions and 7 deletions

View File

@ -65,6 +65,12 @@
<groupId>com.iqser.red.commons</groupId>
<artifactId>jackson-commons</artifactId>
</dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@ -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;
}

View File

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

View File

@ -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);

View File

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