You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/06/18 02:12:55 UTC
[servicecomb-java-chassis] branch master updated:
[SCB-2009]dependency update: remove jakarta.el dependency and make it
optional
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 279bcb8 [SCB-2009]dependency update: remove jakarta.el dependency and make it optional
279bcb8 is described below
commit 279bcb8465c9665d63ec58957eae213599bbec44
Author: liubao <bi...@qq.com>
AuthorDate: Wed Jun 17 16:57:34 2020 +0800
[SCB-2009]dependency update: remove jakarta.el dependency and make it optional
---
core/pom.xml | 4 ---
.../core/filter/impl/ParameterValidatorFilter.java | 19 +++++++++++
dependencies/default/pom.xml | 6 ----
.../invocation-validator/pom.xml | 4 ---
.../invocation/validator/ParameterValidator.java | 39 ++++++++++++++++------
5 files changed, 48 insertions(+), 24 deletions(-)
diff --git a/core/pom.xml b/core/pom.xml
index bc6afae..2b34aff 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -52,10 +52,6 @@
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
- <dependency>
- <groupId>org.glassfish</groupId>
- <artifactId>jakarta.el</artifactId>
- </dependency>
<dependency>
<groupId>org.jmockit</groupId>
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
index 4562467..c2793ba 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
@@ -37,13 +37,20 @@ import org.apache.servicecomb.foundation.common.utils.AsyncUtils;
import org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
import org.apache.servicecomb.swagger.invocation.Response;
import org.hibernate.validator.HibernateValidator;
+import org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator;
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
+import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.netflix.config.DynamicPropertyFactory;
+
@FilterMeta(name = "validator", invocationType = PRODUCER)
public class ParameterValidatorFilter implements Filter {
private static final Logger LOGGER = LoggerFactory.getLogger(ParameterValidatorFilter.class);
+ private static final String ENABLE_EL = "servicecomb.filters.validation.useResourceBundleMessageInterpolator";
+
private final ExecutableValidator validator;
public ParameterValidatorFilter() {
@@ -51,10 +58,22 @@ public class ParameterValidatorFilter implements Filter {
Validation.byProvider(HibernateValidator.class)
.configure()
.propertyNodeNameProvider(new JacksonPropertyNodeNameProvider())
+ .messageInterpolator(messageInterpolator())
.buildValidatorFactory();
validator = factory.getValidator().forExecutables();
}
+ private AbstractMessageInterpolator messageInterpolator() {
+ if (useResourceBundleMessageInterpolator()) {
+ return new ResourceBundleMessageInterpolator();
+ }
+ return new ParameterMessageInterpolator();
+ }
+
+ private boolean useResourceBundleMessageInterpolator() {
+ return DynamicPropertyFactory.getInstance().getBooleanProperty(ENABLE_EL, false).get();
+ }
+
@Override
public CompletableFuture<Response> onFilter(Invocation invocation, FilterNode nextNode) {
SwaggerProducerOperation producerOperation = invocation.getOperationMeta().getSwaggerProducerOperation();
diff --git a/dependencies/default/pom.xml b/dependencies/default/pom.xml
index 607785f..827cef3 100644
--- a/dependencies/default/pom.xml
+++ b/dependencies/default/pom.xml
@@ -96,7 +96,6 @@
<servo.version>0.12.25</servo.version>
<servlet-api.version>4.0.3</servlet-api.version>
<activation.version>1.2.1</activation.version>
- <jakarta.el.version>3.0.3</jakarta.el.version>
<slf4j.version>1.7.26</slf4j.version>
<snakeyaml.version>1.24</snakeyaml.version>
<spectator.version>0.83.0</spectator.version>
@@ -567,11 +566,6 @@
<version>${activation.version}</version>
</dependency>
<dependency>
- <groupId>org.glassfish</groupId>
- <artifactId>jakarta.el</artifactId>
- <version>${jakarta.el.version}</version>
- </dependency>
- <dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>${javax-annotation.version}</version>
diff --git a/swagger/swagger-invocation/invocation-validator/pom.xml b/swagger/swagger-invocation/invocation-validator/pom.xml
index 2ad6bdf..d4e623d 100644
--- a/swagger/swagger-invocation/invocation-validator/pom.xml
+++ b/swagger/swagger-invocation/invocation-validator/pom.xml
@@ -35,10 +35,6 @@
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
- <groupId>org.glassfish</groupId>
- <artifactId>jakarta.el</artifactId>
- </dependency>
- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>test</scope>
diff --git a/swagger/swagger-invocation/invocation-validator/src/main/java/org/apache/servicecomb/swagger/invocation/validator/ParameterValidator.java b/swagger/swagger-invocation/invocation-validator/src/main/java/org/apache/servicecomb/swagger/invocation/validator/ParameterValidator.java
index 93c190d..4209475 100644
--- a/swagger/swagger-invocation/invocation-validator/src/main/java/org/apache/servicecomb/swagger/invocation/validator/ParameterValidator.java
+++ b/swagger/swagger-invocation/invocation-validator/src/main/java/org/apache/servicecomb/swagger/invocation/validator/ParameterValidator.java
@@ -28,6 +28,9 @@ import javax.validation.groups.Default;
import org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
import org.apache.servicecomb.swagger.invocation.SwaggerInvocation;
import org.apache.servicecomb.swagger.invocation.extension.ProducerInvokeExtension;
+import org.hibernate.validator.messageinterpolation.AbstractMessageInterpolator;
+import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
+import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,9 +40,13 @@ import com.netflix.config.DynamicPropertyFactory;
public class ParameterValidator implements ProducerInvokeExtension {
private static final Logger LOGGER = LoggerFactory.getLogger(ParameterValidator.class);
+
private static final String PARAM_VALIDATION_ENABLED = "servicecomb.rest.parameter.validation.enabled";
+
+ private static final String ENABLE_EL = "servicecomb.filters.validation.useResourceBundleMessageInterpolator";
+
private final DynamicBooleanProperty paramValidationEnabled = DynamicPropertyFactory.getInstance()
- .getBooleanProperty(PARAM_VALIDATION_ENABLED, true);
+ .getBooleanProperty(PARAM_VALIDATION_ENABLED, true);
public ParameterValidator() {
paramValidationEnabled.addCallback(() -> {
@@ -54,20 +61,21 @@ public class ParameterValidator implements ProducerInvokeExtension {
public <T> void beforeMethodInvoke(SwaggerInvocation invocation, SwaggerProducerOperation producerOperation,
Object[] args)
throws ConstraintViolationException {
- if(paramValidationEnabled.get()){
+ if (paramValidationEnabled.get()) {
if (null == executableValidator) {
ValidatorFactory factory =
- Validation.byDefaultProvider()
- .configure()
- .parameterNameProvider(new DefaultParameterNameProvider())
- .buildValidatorFactory();
+ Validation.byDefaultProvider()
+ .configure()
+ .parameterNameProvider(new DefaultParameterNameProvider())
+ .messageInterpolator(messageInterpolator())
+ .buildValidatorFactory();
executableValidator = factory.getValidator().forExecutables();
}
Set<ConstraintViolation<Object>> violations =
- executableValidator.validateParameters(producerOperation.getProducerInstance(),
- producerOperation.getProducerMethod(),
- args,
- Default.class);
+ executableValidator.validateParameters(producerOperation.getProducerInstance(),
+ producerOperation.getProducerMethod(),
+ args,
+ Default.class);
if (violations.size() > 0) {
LOGGER.warn("Parameter validation failed : " + violations.toString());
throw new ConstraintViolationException(violations);
@@ -75,6 +83,17 @@ public class ParameterValidator implements ProducerInvokeExtension {
}
}
+ private AbstractMessageInterpolator messageInterpolator() {
+ if (useResourceBundleMessageInterpolator()) {
+ return new ResourceBundleMessageInterpolator();
+ }
+ return new ParameterMessageInterpolator();
+ }
+
+ private boolean useResourceBundleMessageInterpolator() {
+ return DynamicPropertyFactory.getInstance().getBooleanProperty(ENABLE_EL, false).get();
+ }
+
@Override
public int getOrder() {
return 100;