Skip to content
Snippets Groups Projects
Commit 92b35893 authored by Tobias Bruns's avatar Tobias Bruns
Browse files

OZG-6988 use constraint violation exception

parent 719a1822
No related branches found
No related tags found
1 merge request!3Ozg 6988 add reporting
...@@ -28,7 +28,8 @@ import jakarta.validation.Validation; ...@@ -28,7 +28,8 @@ import jakarta.validation.Validation;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener; import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
import org.springframework.validation.beanvalidation.SpringValidatorAdapter;
import de.ozgcloud.admin.common.DelegatingValidatorAdapter;
@Configuration @Configuration
public class AdministrationRepositoryRestConfigurer implements RepositoryRestConfigurer { public class AdministrationRepositoryRestConfigurer implements RepositoryRestConfigurer {
...@@ -36,6 +37,6 @@ public class AdministrationRepositoryRestConfigurer implements RepositoryRestCon ...@@ -36,6 +37,6 @@ public class AdministrationRepositoryRestConfigurer implements RepositoryRestCon
@Override @Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener listener) { public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener listener) {
var validator = Validation.buildDefaultValidatorFactory().getValidator(); var validator = Validation.buildDefaultValidatorFactory().getValidator();
listener.addValidator("beforeCreate", new SpringValidatorAdapter(validator)); listener.addValidator("beforeCreate", new DelegatingValidatorAdapter(validator));
} }
} }
package de.ozgcloud.admin.common;
import java.util.Objects;
import jakarta.validation.ConstraintViolationException;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class DelegatingValidatorAdapter implements Validator {
private final jakarta.validation.Validator delegate;
@Override
public boolean supports(Class<?> clazz) {
return !Objects.isNull(delegate);
}
@Override
public void validate(Object target, Errors errors) {
var constraintViolations = delegate.validate(target);
if (!constraintViolations.isEmpty()) {
throw new ConstraintViolationException(constraintViolations);
}
}
}
...@@ -25,7 +25,6 @@ package de.ozgcloud.admin.common.errorhandling; ...@@ -25,7 +25,6 @@ package de.ozgcloud.admin.common.errorhandling;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
import org.springframework.data.rest.core.RepositoryConstraintViolationException;
import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.data.rest.webmvc.ResourceNotFoundException;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ProblemDetail; import org.springframework.http.ProblemDetail;
...@@ -82,10 +81,4 @@ public class ExceptionController extends ResponseEntityExceptionHandler { ...@@ -82,10 +81,4 @@ public class ExceptionController extends ResponseEntityExceptionHandler {
public ProblemDetail handleConstraintViolationException(ConstraintViolationException e) { public ProblemDetail handleConstraintViolationException(ConstraintViolationException e) {
return problemDetailMapper.fromConstraintViolationException(e); return problemDetailMapper.fromConstraintViolationException(e);
} }
@ExceptionHandler
public ProblemDetail handleConstraintiolation(RepositoryConstraintViolationException e) {
return ProblemDetail.forStatus(HttpStatus.UNPROCESSABLE_ENTITY);
// TODO map fields to ProblemDetail
}
} }
...@@ -24,6 +24,24 @@ logging: ...@@ -24,6 +24,24 @@ logging:
ROOT: WARN ROOT: WARN
'[de.ozgcloud]': INFO '[de.ozgcloud]': INFO
spring:
application:
name: OzgCloud_Administration
data:
mongodb:
authentication-database: admin
rest:
basePath: /api/configuration
cloud:
config:
server:
prefix: /configserver
security:
oauth2:
resourceserver:
jwt:
issuer-uri: ${ozgcloud.oauth2.auth-server-url}/realms/${ozgcloud.oauth2.realm}
management: management:
server: server:
port: 8081 port: 8081
...@@ -55,23 +73,7 @@ mongock: ...@@ -55,23 +73,7 @@ mongock:
- de.ozgcloud.admin.migration - de.ozgcloud.admin.migration
enabled: true enabled: true
spring:
application:
name: OzgCloud_Administration
data:
mongodb:
authentication-database: admin
rest:
basePath: /api/configuration
cloud:
config:
server:
prefix: /configserver
security:
oauth2:
resourceserver:
jwt:
issuer-uri: ${ozgcloud.oauth2.auth-server-url}/realms/${ozgcloud.oauth2.realm}
ozgcloud: ozgcloud:
keycloak: keycloak:
......
...@@ -3,7 +3,6 @@ package de.ozgcloud.admin.reporting; ...@@ -3,7 +3,6 @@ package de.ozgcloud.admin.reporting;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
...@@ -40,7 +39,6 @@ class ReportingSettingITCase { ...@@ -40,7 +39,6 @@ class ReportingSettingITCase {
void shouldHaveLinkToReporting() { void shouldHaveLinkToReporting() {
mockMvc.perform(get("/api/configuration")) mockMvc.perform(get("/api/configuration"))
.andExpect(status().is2xxSuccessful()) .andExpect(status().is2xxSuccessful())
.andDo(print())
.andExpect(jsonPath("$._links.aggregationMappings").exists()); .andExpect(jsonPath("$._links.aggregationMappings").exists());
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment