Skip to content

Commit e7046e5

Browse files
authored
[SCB-2881] support setting hibernate validation configuration (#4343)
1 parent 1ad8b4d commit e7046e5

File tree

6 files changed

+20
-161
lines changed

6 files changed

+20
-161
lines changed

core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
package org.apache.servicecomb.core.filter.impl;
1818

1919
import java.lang.reflect.Method;
20+
import java.util.Map;
2021
import java.util.Set;
2122
import java.util.concurrent.CompletableFuture;
2223

24+
import org.apache.servicecomb.config.ConfigUtil;
2325
import org.apache.servicecomb.core.Invocation;
2426
import org.apache.servicecomb.core.filter.AbstractFilter;
2527
import org.apache.servicecomb.core.filter.Filter;
@@ -36,6 +38,7 @@
3638
import org.slf4j.LoggerFactory;
3739
import org.springframework.beans.factory.InitializingBean;
3840

41+
import jakarta.validation.Configuration;
3942
import jakarta.validation.ConstraintViolation;
4043
import jakarta.validation.ConstraintViolationException;
4144
import jakarta.validation.Valid;
@@ -71,6 +74,8 @@ private static class Model {
7174

7275
public static final String NAME = "validator";
7376

77+
public static final String HIBERNATE_VALIDATE_PREFIX = "hibernate.validator";
78+
7479
public static final String ENABLE_EL = "servicecomb.filters.validation.useResourceBundleMessageInterpolator";
7580

7681
protected ExecutableValidator validator;
@@ -107,11 +112,17 @@ private void initValidate() {
107112
}
108113

109114
protected ValidatorFactory createValidatorFactory() {
110-
return Validation.byProvider(HibernateValidator.class)
115+
Configuration<?> validatorConfiguration = Validation.byProvider(HibernateValidator.class)
111116
.configure()
112117
.propertyNodeNameProvider(new JacksonPropertyNodeNameProvider())
113-
.messageInterpolator(messageInterpolator())
114-
.buildValidatorFactory();
118+
.messageInterpolator(messageInterpolator());
119+
Map<String, String> properties = ConfigUtil.stringPropertiesWithPrefix(environment, HIBERNATE_VALIDATE_PREFIX);
120+
if (!properties.isEmpty()) {
121+
for (Map.Entry<String, String> entry : properties.entrySet()) {
122+
validatorConfiguration.addProperty(entry.getKey(), entry.getValue());
123+
}
124+
}
125+
return validatorConfiguration.buildValidatorFactory();
115126
}
116127

117128
protected AbstractMessageInterpolator messageInterpolator() {

core/src/test/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilterTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
import org.junit.Before;
4343
import org.junit.Test;
4444
import org.mockito.Mockito;
45-
import org.springframework.core.env.Environment;
45+
import org.springframework.core.env.ConfigurableEnvironment;
46+
import org.springframework.core.env.MutablePropertySources;
4647

4748
import com.fasterxml.jackson.annotation.JsonProperty;
4849

@@ -96,14 +97,16 @@ public void op(@NotNull(message = "not null") String query, @Valid Model model)
9697
@Mocked
9798
SwaggerProducerOperation operation;
9899

99-
Environment environment;
100+
ConfigurableEnvironment environment;
100101

101102
@Before
102103
public void setUp() throws Exception {
103-
environment = Mockito.mock(Environment.class);
104+
environment = Mockito.mock(ConfigurableEnvironment.class);
104105
SCBEngine engine = SCBBootstrap.createSCBEngineForTest(environment);
106+
MutablePropertySources sources = new MutablePropertySources();
105107

106108
Mockito.when(environment.getProperty(ENABLE_EL, boolean.class, false)).thenReturn(false);
109+
Mockito.when(environment.getPropertySources()).thenReturn(sources);
107110
filter.setEnvironment(environment);
108111
filter.afterPropertiesSet();
109112
engine.setEnvironment(environment);

swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/engine/SwaggerProducerOperation.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,10 @@
1818

1919
import java.lang.reflect.Method;
2020
import java.lang.reflect.Type;
21-
import java.util.List;
2221
import java.util.Map;
2322

24-
import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
2523
import org.apache.servicecomb.swagger.generator.core.model.SwaggerOperation;
2624
import org.apache.servicecomb.swagger.invocation.arguments.producer.ProducerArgumentsMapper;
27-
import org.apache.servicecomb.swagger.invocation.extension.ProducerInvokeExtension;
2825
import org.apache.servicecomb.swagger.invocation.response.producer.ProducerResponseMapper;
2926

3027
public class SwaggerProducerOperation {
@@ -47,9 +44,6 @@ public class SwaggerProducerOperation {
4744

4845
private ProducerResponseMapper responseMapper;
4946

50-
private final List<ProducerInvokeExtension> producerInvokeExtenstionList =
51-
SPIServiceUtils.getSortedService(ProducerInvokeExtension.class);
52-
5347
public String getOperationId() {
5448
return swaggerOperation.getOperationId();
5549
}
@@ -111,10 +105,6 @@ public void setResponseMapper(ProducerResponseMapper responseMapper) {
111105
this.responseMapper = responseMapper;
112106
}
113107

114-
public List<ProducerInvokeExtension> getProducerInvokeExtenstionList() {
115-
return this.producerInvokeExtenstionList;
116-
}
117-
118108
public Type getSwaggerParameterType(String name) {
119109
return this.swaggerParameterTypes.get(name);
120110
}

swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/extension/ProducerInvokeExtension.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

swagger/swagger-invocation/invocation-validator/src/main/java/org/apache/servicecomb/swagger/invocation/validator/ParameterValidator.java

Lines changed: 0 additions & 95 deletions
This file was deleted.

swagger/swagger-invocation/invocation-validator/src/main/resources/META-INF/services/org.apache.servicecomb.swagger.invocation.extension.ProducerInvokeExtension

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)