This is an automated email from the ASF dual-hosted git repository.

shenlin pushed a commit to branch runtimer
in repository https://gitbox.apache.org/repos/asf/rocketmq-eventbridge.git

commit 9d7b87e431392e2b28972d8f8613b4b6de8587b9
Author: wangkai <[email protected]>
AuthorDate: Mon Jun 5 18:37:59 2023 +0800

    1.add readme
    2.modify ValidateFilter, add default filter
---
 docs/cn/RocketMQEventBridgeDatabaseUsage.md        |  29 ++++++++++++++
 docs/cn/RocketMQEventBridgeRuleValidation.md       |  44 +++++++++++++++++++++
 docs/cn/images/h2.png                              | Bin 0 -> 188366 bytes
 .../eventbridge/filter/ValidateFilter.java         |   8 +++-
 4 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/docs/cn/RocketMQEventBridgeDatabaseUsage.md 
b/docs/cn/RocketMQEventBridgeDatabaseUsage.md
new file mode 100644
index 0000000..99e7bf8
--- /dev/null
+++ b/docs/cn/RocketMQEventBridgeDatabaseUsage.md
@@ -0,0 +1,29 @@
+## Apache RocketMQ EventBridge 数据库依赖介绍与使用
+
+RocketMQ EventBridge 使用数据库存储运行过程中定义的规则
+
+
+数据库:
+* 内置数据库h2,主要方便进行本地测试和快速开始
+* mysql数据库,实际生产部署时可以使用
+
+### 内置数据库
+```properties
+# 是否开启本地页面访问
+spring.profiles.active=local
+# h2 sql migration所在目录
+spring.flyway.locations=classpath:db/h2-migration
+```
+本地运行后,访问h2数据库。访问url: localhost:8083:
+![img.png](images/h2.png)
+
+### mysql数据库
+```properties
+## database
+spring.datasource.hikari.jdbc-url=jdbc:mysql://localhost:3306/eventBridge?useUnicode=true&characterEncoding=utf8&useSSL=false
+spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver
+spring.datasource.hikari.username=xxxxx
+spring.datasource.hikari.password=xxxxx
+# 注释h2使用的sql migration
+#spring.flyway.locations=classpath:db/h2-migration
+```
\ No newline at end of file
diff --git a/docs/cn/RocketMQEventBridgeRuleValidation.md 
b/docs/cn/RocketMQEventBridgeRuleValidation.md
new file mode 100644
index 0000000..9f1f402
--- /dev/null
+++ b/docs/cn/RocketMQEventBridgeRuleValidation.md
@@ -0,0 +1,44 @@
+## Apache RocketMQ EventBridge 参数规则验证
+
+RocketMQ EventBridge 如何扩展参数验证
+
+
+### 引入依赖包
+```xml
+<dependency>
+    <groupId>org.apache.rocketmq</groupId>
+    <artifactId>rocketmq-eventbridge-infrastructure</artifactId>
+    <version>1.0.0</version>
+</dependency>
+```
+
+### 如何进行扩展
+```
+public class XXXXAuthValidation implements AuthValidation {
+
+    @Override
+    public Context validate(ServerHttpRequest request, Context ctx) {
+        ...
+        return ctx.put(keyxxx, valxxxx);
+    }
+
+    @Override
+    public String getType() {
+        return "验证器名称";
+    }
+}
+```
+
+### resources目录下增加spi配置
+```text
+/resources/
+|——META-INF
+|   |——services
+|      
|——org.apache.rocketmq.eventbridge.infrastructure.validate.AuthValidation
+|           
org.apache.rocketmq.eventbridge.infrastructure.validate.XXXXAuthValidation
+```
+
+### 配置
+```properties
+auth.validation=验证器名称(如有多个以逗号分割)
+```
diff --git a/docs/cn/images/h2.png b/docs/cn/images/h2.png
new file mode 100644
index 0000000..109964e
Binary files /dev/null and b/docs/cn/images/h2.png differ
diff --git 
a/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java
 
b/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java
index 5d80328..e6f81c2 100644
--- 
a/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java
+++ 
b/start/src/main/java/org/apache/rocketmq/eventbridge/filter/ValidateFilter.java
@@ -34,6 +34,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 @Component
 @Order(value = 3)
@@ -47,7 +48,12 @@ public class ValidateFilter implements WebFilter {
 
     @PostConstruct
     public void init() {
-        
Arrays.stream(validationName.split(",")).forEach(action->validations.add(ValidationServiceFactory.getInstance(action)));
+        List<String> validationNames = 
Arrays.stream(validationName.split(",")).collect(Collectors.toList());
+        boolean match = 
Arrays.stream(validationName.split(",")).allMatch(validationName-> 
validationName.equals("default"));
+        if (!match) {
+            validationNames.add(0, "default");
+        }
+        
validationNames.forEach(action->validations.add(ValidationServiceFactory.getInstance(action)));
     }
 
     @Override

Reply via email to