From d7f3c3e8f11f514195aab7dc975ab455bfd4ed56 Mon Sep 17 00:00:00 2001 From: "william.liangf" Date: Wed, 7 Dec 2011 05:33:04 +0000 Subject: [PATCH] =?UTF-8?q?DUBBO-121=20=E5=A2=9E=E5=8A=A0@Parameter(append?= =?UTF-8?q?=20=3D=20true)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@562 1a56cb94-b969-4eaa-88fa-be21384802f2 --- .../alibaba/dubbo/config/AbstractConfig.java | 18 +++++++++++++----- .../dubbo/config/AbstractConsumerConfig.java | 4 ++-- .../dubbo/config/AbstractReferenceConfig.java | 4 ++-- .../dubbo/config/AbstractServiceConfig.java | 4 ++-- .../com/alibaba/dubbo/config/Parameter.java | 2 ++ 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java index e58f776d5..6e292cfa5 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java @@ -18,13 +18,13 @@ package com.alibaba.dubbo.config; import java.io.Serializable; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.net.URLEncoder; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.ExtensionLoader; +import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.common.logger.Logger; import com.alibaba.dubbo.common.logger.LoggerFactory; @@ -115,10 +115,12 @@ public abstract class AbstractConfig implements Serializable { } Object value = method.invoke(config, new Object[0]); if (attribute){ - if (prefix != null && prefix.length() > 0) { - key = prefix + "." + key; + if (value != null) { + if (prefix != null && prefix.length() > 0) { + key = prefix + "." + key; + } + parameters.put(key, value); } - if (value != null) parameters.put(key, value); } else { String str = String.valueOf(value).trim(); if (value != null && str.length() > 0) { @@ -126,7 +128,13 @@ public abstract class AbstractConfig implements Serializable { key = prefix + "." + key; } if (parameter != null && parameter.escaped()) { - str = URLEncoder.encode(str, "UTF-8"); + str = URL.encode(str); + } + if (parameter != null && parameter.append()) { + String pre = (String)parameters.get(key); + if (pre != null && pre.length() > 0) { + str = pre + "," + str; + } } parameters.put(key, str); } else if (parameter != null && parameter.required()) { diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConsumerConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConsumerConfig.java index f24d46438..05df2713a 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConsumerConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConsumerConfig.java @@ -76,12 +76,12 @@ public abstract class AbstractConsumerConfig extends AbstractReferenceConfig { this.injvm = injvm; } - @Parameter(key = Constants.REFERENCE_FILTER_KEY) + @Parameter(key = Constants.REFERENCE_FILTER_KEY, append = true) public String getFilter() { return super.getFilter(); } - @Parameter(key = Constants.INVOKER_LISTENER_KEY) + @Parameter(key = Constants.INVOKER_LISTENER_KEY, append = true) public String getListener() { return super.getListener(); } diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java index 1a78a63a7..aa9d28e1d 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractReferenceConfig.java @@ -279,7 +279,7 @@ public abstract class AbstractReferenceConfig extends AbstractMethodConfig { this.connections = connections; } - @Parameter(key = Constants.REFERENCE_FILTER_KEY) + @Parameter(key = Constants.REFERENCE_FILTER_KEY, append = true) public String getFilter() { return filter; } @@ -289,7 +289,7 @@ public abstract class AbstractReferenceConfig extends AbstractMethodConfig { this.filter = filter; } - @Parameter(key = Constants.INVOKER_LISTENER_KEY) + @Parameter(key = Constants.INVOKER_LISTENER_KEY, append = true) public String getListener() { checkMultiExtension(InvokerListener.class, "listener", listener); return listener; diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractServiceConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractServiceConfig.java index 3700667b6..ab8283d4c 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractServiceConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractServiceConfig.java @@ -179,12 +179,12 @@ public abstract class AbstractServiceConfig extends AbstractReferenceConfig { this.executes = executes; } - @Parameter(key = Constants.SERVICE_FILTER_KEY) + @Parameter(key = Constants.SERVICE_FILTER_KEY, append = true) public String getFilter() { return super.getFilter(); } - @Parameter(key = Constants.EXPORTER_LISTENER_KEY) + @Parameter(key = Constants.EXPORTER_LISTENER_KEY, append = true) public String getListener() { return super.getListener(); } diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/Parameter.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/Parameter.java index 066756cae..17696fb9f 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/Parameter.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/Parameter.java @@ -40,5 +40,7 @@ public @interface Parameter { boolean escaped() default false; boolean attribute() default false; + + boolean append() default false; } \ No newline at end of file -- GitLab