Pull request #564: RED-5293 A
Merge in RED/persistence-service from RED-5293-A to master * commit '5a47fb5c214d23d4fad98270ee7abe7e9ac34b4b': RED-5293: adjusted ControllerAdvice for some SQLExceptions RED-5293: added catch block for URISyntaxExceptions RED-5293: jdbcUrl is checked for protocol and sql RED-5293: jdbcUrl is checked for protocol and sql RED-5293: fixed jdbcUrl-check by adding more checks; removed URL-check because it does not work RED-5293: fixed jdbcUrl-check by adding more checks RED-5293: fixed jdbcUrl-check by adding more checks RED-5293: fixed jdbcUrl-check by adding URL check RED-5293: fixed jdbcUrl-check by adding URL check RED-5293: fixed jdbcUrl-check by adding URL check RED-5293: fixed jdbcUrl-check by adding URL check
This commit is contained in:
commit
fd2aa4e876
@ -90,6 +90,8 @@ public class ControllerAdvice {
|
|||||||
|
|
||||||
if (e.getMessage().contains("violates unique constraint")) {
|
if (e.getMessage().contains("violates unique constraint")) {
|
||||||
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "Unique constraint violation"), HttpStatus.CONFLICT);
|
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "Unique constraint violation"), HttpStatus.CONFLICT);
|
||||||
|
} else if (e.getMessage().contains("No suitable driver found")){
|
||||||
|
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "JDBC URL is incorrect"), HttpStatus.BAD_REQUEST);
|
||||||
} else {
|
} else {
|
||||||
log.error("PLSQL Exception occurred: {}", e.getMessage(), e);
|
log.error("PLSQL Exception occurred: {}", e.getMessage(), e);
|
||||||
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "SQL Exception"), HttpStatus.INTERNAL_SERVER_ERROR);
|
return new ResponseEntity<>(new ErrorMessage(OffsetDateTime.now(), "SQL Exception"), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.iqser.red.service.peristence.v1.server.service;
|
package com.iqser.red.service.peristence.v1.server.service;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -36,6 +37,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@EnableConfigurationProperties(LiquibaseProperties.class)
|
@EnableConfigurationProperties(LiquibaseProperties.class)
|
||||||
public class TenantManagementService {
|
public class TenantManagementService {
|
||||||
|
|
||||||
|
private static final Set<String> SUPPORTED_DATABASES = Set.of("postgresql");
|
||||||
private static final Set<String> SQL_CONNECTION_ERROR_CODES = Set.of(
|
private static final Set<String> SQL_CONNECTION_ERROR_CODES = Set.of(
|
||||||
// connection_exception
|
// connection_exception
|
||||||
"08000",
|
"08000",
|
||||||
@ -131,8 +133,18 @@ public class TenantManagementService {
|
|||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
private void validateJdbcUrl(String jdbcUrl) {
|
private void validateJdbcUrl(String jdbcUrl) {
|
||||||
// just create a URI object to check if the string is a valid URI
|
|
||||||
new URI(jdbcUrl);
|
try {
|
||||||
|
// just create a URI object to check if the string is a valid URI
|
||||||
|
var uri = new URI(jdbcUrl);
|
||||||
|
var subUri = new URI(uri.getSchemeSpecificPart());
|
||||||
|
|
||||||
|
if (uri.getScheme() == null || subUri.getScheme() == null || !uri.getScheme().equals("jdbc") || !SUPPORTED_DATABASES.contains(subUri.getScheme())) {
|
||||||
|
throw new IllegalArgumentException("Your jdbcUrl is not valid.");
|
||||||
|
}
|
||||||
|
} catch (URISyntaxException e) {
|
||||||
|
throw new IllegalArgumentException("Your jdbcUrl is not valid.", e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user