This is an automated email from the ASF dual-hosted git repository.
yui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new eaa600f47 [type: refactor] cross origins config from string to set.
(#3667)
eaa600f47 is described below
commit eaa600f471f84b5b4ec2122522f278cf36bcd98c
Author: Qicz <[email protected]>
AuthorDate: Tue Jul 5 15:58:48 2022 +0800
[type: refactor] cross origins config from string to set. (#3667)
---
.../main/java/org/apache/shenyu/common/config/ShenyuConfig.java | 6 +++---
.../src/main/java/org/apache/shenyu/web/filter/CrossFilter.java | 3 ++-
.../test/java/org/apache/shenyu/web/filter/CrossFilterTest.java | 9 ++++++++-
3 files changed, 13 insertions(+), 5 deletions(-)
diff --git
a/shenyu-common/src/main/java/org/apache/shenyu/common/config/ShenyuConfig.java
b/shenyu-common/src/main/java/org/apache/shenyu/common/config/ShenyuConfig.java
index b03206f51..a133edb32 100644
---
a/shenyu-common/src/main/java/org/apache/shenyu/common/config/ShenyuConfig.java
+++
b/shenyu-common/src/main/java/org/apache/shenyu/common/config/ShenyuConfig.java
@@ -1143,7 +1143,7 @@ public class ShenyuConfig {
private Set<String> prefixes = new HashSet<>();
- private String origins;
+ private Set<String> origins;
/**
* Gets the spacer.
@@ -1204,7 +1204,7 @@ public class ShenyuConfig {
*
* @return the value of prefixes
*/
- public String getOrigins() {
+ public Set<String> getOrigins() {
return origins;
}
@@ -1213,7 +1213,7 @@ public class ShenyuConfig {
*
* @param origins origins
*/
- public void setOrigins(final String origins) {
+ public void setOrigins(final Set<String> origins) {
this.origins = origins;
}
}
diff --git
a/shenyu-web/src/main/java/org/apache/shenyu/web/filter/CrossFilter.java
b/shenyu-web/src/main/java/org/apache/shenyu/web/filter/CrossFilter.java
index 6a9a81d37..c61fea17c 100644
--- a/shenyu-web/src/main/java/org/apache/shenyu/web/filter/CrossFilter.java
+++ b/shenyu-web/src/main/java/org/apache/shenyu/web/filter/CrossFilter.java
@@ -76,7 +76,8 @@ public class CrossFilter implements WebFilter {
StringUtils.defaultString(allowedOriginConfig.getDomain(), "").trim()))
.collect(Collectors.toSet());
// add all origin domains
-
allowedOrigin.addAll(Stream.of(StringUtils.defaultString(allowedOriginConfig.getOrigins(),
"").split(","))
+
allowedOrigin.addAll(Optional.ofNullable(allowedOriginConfig.getOrigins()).orElse(Collections.emptySet())
+ .stream()
.filter(StringUtils::isNoneBlank)
.map(oneOrigin -> {
if (ALL.equals(oneOrigin) ||
oneOrigin.startsWith(String.format("%s://", scheme))) {
diff --git
a/shenyu-web/src/test/java/org/apache/shenyu/web/filter/CrossFilterTest.java
b/shenyu-web/src/test/java/org/apache/shenyu/web/filter/CrossFilterTest.java
index d11503963..3f0907a38 100644
--- a/shenyu-web/src/test/java/org/apache/shenyu/web/filter/CrossFilterTest.java
+++ b/shenyu-web/src/test/java/org/apache/shenyu/web/filter/CrossFilterTest.java
@@ -93,7 +93,14 @@ public final class CrossFilterTest {
add("a");
}
});
-
allowedOriginConfig.setOrigins("b.apache.org,c.apache.org,http://d.apache.org,*");
+ allowedOriginConfig.setOrigins(new HashSet<String>() {
+ {
+ add("b.apache.org");
+ add("c.apache.org");
+ add("http://d.apache.org");
+ add("*");
+ }
+ });
filterConfig.setAllowedOrigin(allowedOriginConfig);
CrossFilter filter = new CrossFilter(filterConfig);
StepVerifier.create(filter.filter(exchange, chainNormal))