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))

Reply via email to