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

liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new fa5d079  upgrade spring to 5.2.8.RELEASE (#6674)
fa5d079 is described below

commit fa5d07961a67a6150b0fecdf76003fe3b073a9a8
Author: TheoneFx <[email protected]>
AuthorDate: Tue Sep 1 16:02:51 2020 +0800

    upgrade spring to 5.2.8.RELEASE (#6674)
    
    Co-authored-by: theonefx.chenx <[email protected]>
---
 .../factory/config/YamlPropertySourceFactory.java  | 61 +++++++++++++++++++---
 dubbo-dependencies-bom/pom.xml                     |  2 +-
 .../apache/dubbo/registry/nacos/NacosRegistry.java |  4 +-
 3 files changed, 57 insertions(+), 10 deletions(-)

diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/YamlPropertySourceFactory.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/YamlPropertySourceFactory.java
index 271b179..229764f 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/YamlPropertySourceFactory.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/beans/factory/config/YamlPropertySourceFactory.java
@@ -16,22 +16,28 @@
  */
 package org.apache.dubbo.config.spring.beans.factory.config;
 
+import java.io.IOException;
+import java.util.AbstractMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+
 import org.springframework.beans.factory.config.YamlProcessor;
 import org.springframework.core.env.MapPropertySource;
 import org.springframework.core.env.PropertySource;
 import org.springframework.core.io.support.EncodedResource;
 import org.springframework.core.io.support.PropertySourceFactory;
+
 import org.yaml.snakeyaml.DumperOptions;
 import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.Constructor;
+import org.yaml.snakeyaml.nodes.MappingNode;
 import org.yaml.snakeyaml.nodes.Tag;
+import org.yaml.snakeyaml.parser.ParserException;
 import org.yaml.snakeyaml.representer.Representer;
 import org.yaml.snakeyaml.resolver.Resolver;
 
-import java.io.IOException;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.regex.Pattern;
-
 /**
  * YAML {@link PropertySourceFactory} implementation, some source code is 
copied Spring Boot
  * org.springframework.boot.env.YamlPropertySourceLoader , see {@link 
#createYaml()} and {@link #process()}
@@ -48,7 +54,36 @@ public class YamlPropertySourceFactory extends YamlProcessor 
implements Property
 
     @Override
     protected Yaml createYaml() {
-        return new Yaml(new StrictMapAppenderConstructor(), new Representer(),
+        return new Yaml(new Constructor() {
+            @Override
+            protected Map<Object, Object> constructMapping(MappingNode node) {
+                try {
+                    return super.constructMapping(node);
+                } catch (IllegalStateException ex) {
+                    throw new ParserException("while parsing MappingNode",
+                            node.getStartMark(), ex.getMessage(), 
node.getEndMark());
+                }
+            }
+
+            @Override
+            protected Map<Object, Object> createDefaultMap() {
+                final Map<Object, Object> delegate = super.createDefaultMap();
+                return new AbstractMap<Object, Object>() {
+                    @Override
+                    public Object put(Object key, Object value) {
+                        if (delegate.containsKey(key)) {
+                            throw new IllegalStateException("Duplicate key: " 
+ key);
+                        }
+                        return delegate.put(key, value);
+                    }
+
+                    @Override
+                    public Set<Entry<Object, Object>> entrySet() {
+                        return delegate.entrySet();
+                    }
+                };
+            }
+        }, new Representer(),
                 new DumperOptions(), new Resolver() {
             @Override
             public void addImplicitResolver(Tag tag, Pattern regexp,
@@ -61,10 +96,22 @@ public class YamlPropertySourceFactory extends 
YamlProcessor implements Property
         });
     }
 
+    /**
+     * {@link Resolver} that limits {@link Tag#TIMESTAMP} tags.
+     */
+    private static class LimitedResolver extends Resolver {
+        @Override
+        public void addImplicitResolver(Tag tag, Pattern regexp, String first) 
{
+            if (tag == Tag.TIMESTAMP) {
+                return;
+            }
+            super.addImplicitResolver(tag, regexp, first);
+        }
+    }
+
     public Map<String, Object> process() {
         final Map<String, Object> result = new LinkedHashMap<String, Object>();
         process((properties, map) -> result.putAll(getFlattenedMap(map)));
         return result;
     }
-
 }
diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index 3b232b8..e304361 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -89,7 +89,7 @@
 
     <properties>
         <!-- Common libs -->
-        <spring_version>4.3.16.RELEASE</spring_version>
+        <spring_version>5.2.8.RELEASE</spring_version>
         <javassist_version>3.20.0-GA</javassist_version>
         <netty_version>3.2.5.Final</netty_version>
         <netty4_version>4.1.51.Final</netty4_version>
diff --git 
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
 
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
index 187da71..c34eac8 100644
--- 
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
+++ 
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
@@ -168,8 +168,8 @@ public class NacosRegistry extends FailbackRegistry {
             Instance instance = createInstance(url);
             namingService.deregisterInstance(serviceName,
                     getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP),
-                    instance.getIp()
-                    , instance.getPort());
+                    instance.getIp(),
+                    instance.getPort());
         });
     }
 

Reply via email to