RED-5293: 500 for invalid tenant
This commit is contained in:
parent
b4ae9b7137
commit
eaa0a640d5
@ -65,6 +65,12 @@
|
|||||||
<groupId>com.iqser.red.commons</groupId>
|
<groupId>com.iqser.red.commons</groupId>
|
||||||
<artifactId>jackson-commons</artifactId>
|
<artifactId>jackson-commons</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>jakarta.validation</groupId>
|
||||||
|
<artifactId>jakarta.validation-api</artifactId>
|
||||||
|
<version>2.0.2</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.iqser.red.service.persistence.service.v1.api.model.multitenancy;
|
package com.iqser.red.service.persistence.service.v1.api.model.multitenancy;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -12,10 +14,13 @@ import lombok.NoArgsConstructor;
|
|||||||
public class TenantRequest {
|
public class TenantRequest {
|
||||||
|
|
||||||
private String tenantId;
|
private String tenantId;
|
||||||
|
@NotBlank
|
||||||
private String displayName;
|
private String displayName;
|
||||||
private String guid;
|
private String guid;
|
||||||
private String jdbcUrl;
|
private String jdbcUrl;
|
||||||
|
@NotBlank
|
||||||
private String user;
|
private String user;
|
||||||
|
@NotBlank
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,4 +7,11 @@ public class ConflictException extends RuntimeException {
|
|||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static ConflictException withObjectName(String objectName) {
|
||||||
|
|
||||||
|
return new ConflictException(String.format("An object of type %s already exists.", objectName));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,8 @@ package com.iqser.red.service.peristence.v1.server.controller;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
@ -22,7 +24,7 @@ public class TenantsController implements TenantsResource {
|
|||||||
private final TenantManagementService tenantManagementService;
|
private final TenantManagementService tenantManagementService;
|
||||||
private final DeploymentKeyService deploymentKeyService;
|
private final DeploymentKeyService deploymentKeyService;
|
||||||
|
|
||||||
|
@Valid
|
||||||
public void createTenant(@RequestBody TenantRequest tenantRequest) {
|
public void createTenant(@RequestBody TenantRequest tenantRequest) {
|
||||||
|
|
||||||
tenantManagementService.createTenant(tenantRequest);
|
tenantManagementService.createTenant(tenantRequest);
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import org.springframework.core.io.ResourceLoader;
|
|||||||
import org.springframework.jdbc.datasource.SingleConnectionDataSource;
|
import org.springframework.jdbc.datasource.SingleConnectionDataSource;
|
||||||
import org.springframework.stereotype.Service;
|
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.ConflictException;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
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.multitenancy.entity.TenantEntity;
|
||||||
@ -57,10 +56,6 @@ public class TenantManagementService {
|
|||||||
|
|
||||||
if (tenantRepository.findById(tenantRequest.getTenantId()).isEmpty()) {
|
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());
|
String encryptedPassword = encryptionService.encrypt(tenantRequest.getPassword());
|
||||||
|
|
||||||
try (Connection connection = DriverManager.getConnection(tenantRequest.getJdbcUrl(), tenantRequest.getUser(), tenantRequest.getPassword())) {
|
try (Connection connection = DriverManager.getConnection(tenantRequest.getJdbcUrl(), tenantRequest.getUser(), tenantRequest.getPassword())) {
|
||||||
@ -78,7 +73,7 @@ public class TenantManagementService {
|
|||||||
.build();
|
.build();
|
||||||
tenantRepository.save(tenantEntity);
|
tenantRepository.save(tenantEntity);
|
||||||
} else {
|
} else {
|
||||||
throw new ConflictException("Conflict: tenant id already exists.");
|
throw ConflictException.withObjectName("tenant");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user