提交 d7f3c3e8 编写于 作者: W william.liangf

DUBBO-121 增加@Parameter(append = true)

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@562 1a56cb94-b969-4eaa-88fa-be21384802f2
上级 d48931cb
...@@ -18,13 +18,13 @@ package com.alibaba.dubbo.config; ...@@ -18,13 +18,13 @@ package com.alibaba.dubbo.config;
import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.net.URLEncoder;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.ExtensionLoader; 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.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory; import com.alibaba.dubbo.common.logger.LoggerFactory;
...@@ -115,10 +115,12 @@ public abstract class AbstractConfig implements Serializable { ...@@ -115,10 +115,12 @@ public abstract class AbstractConfig implements Serializable {
} }
Object value = method.invoke(config, new Object[0]); Object value = method.invoke(config, new Object[0]);
if (attribute){ if (attribute){
if (prefix != null && prefix.length() > 0) { if (value != null) {
key = prefix + "." + key; if (prefix != null && prefix.length() > 0) {
key = prefix + "." + key;
}
parameters.put(key, value);
} }
if (value != null) parameters.put(key, value);
} else { } else {
String str = String.valueOf(value).trim(); String str = String.valueOf(value).trim();
if (value != null && str.length() > 0) { if (value != null && str.length() > 0) {
...@@ -126,7 +128,13 @@ public abstract class AbstractConfig implements Serializable { ...@@ -126,7 +128,13 @@ public abstract class AbstractConfig implements Serializable {
key = prefix + "." + key; key = prefix + "." + key;
} }
if (parameter != null && parameter.escaped()) { 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); parameters.put(key, str);
} else if (parameter != null && parameter.required()) { } else if (parameter != null && parameter.required()) {
......
...@@ -76,12 +76,12 @@ public abstract class AbstractConsumerConfig extends AbstractReferenceConfig { ...@@ -76,12 +76,12 @@ public abstract class AbstractConsumerConfig extends AbstractReferenceConfig {
this.injvm = injvm; this.injvm = injvm;
} }
@Parameter(key = Constants.REFERENCE_FILTER_KEY) @Parameter(key = Constants.REFERENCE_FILTER_KEY, append = true)
public String getFilter() { public String getFilter() {
return super.getFilter(); return super.getFilter();
} }
@Parameter(key = Constants.INVOKER_LISTENER_KEY) @Parameter(key = Constants.INVOKER_LISTENER_KEY, append = true)
public String getListener() { public String getListener() {
return super.getListener(); return super.getListener();
} }
......
...@@ -279,7 +279,7 @@ public abstract class AbstractReferenceConfig extends AbstractMethodConfig { ...@@ -279,7 +279,7 @@ public abstract class AbstractReferenceConfig extends AbstractMethodConfig {
this.connections = connections; this.connections = connections;
} }
@Parameter(key = Constants.REFERENCE_FILTER_KEY) @Parameter(key = Constants.REFERENCE_FILTER_KEY, append = true)
public String getFilter() { public String getFilter() {
return filter; return filter;
} }
...@@ -289,7 +289,7 @@ public abstract class AbstractReferenceConfig extends AbstractMethodConfig { ...@@ -289,7 +289,7 @@ public abstract class AbstractReferenceConfig extends AbstractMethodConfig {
this.filter = filter; this.filter = filter;
} }
@Parameter(key = Constants.INVOKER_LISTENER_KEY) @Parameter(key = Constants.INVOKER_LISTENER_KEY, append = true)
public String getListener() { public String getListener() {
checkMultiExtension(InvokerListener.class, "listener", listener); checkMultiExtension(InvokerListener.class, "listener", listener);
return listener; return listener;
......
...@@ -179,12 +179,12 @@ public abstract class AbstractServiceConfig extends AbstractReferenceConfig { ...@@ -179,12 +179,12 @@ public abstract class AbstractServiceConfig extends AbstractReferenceConfig {
this.executes = executes; this.executes = executes;
} }
@Parameter(key = Constants.SERVICE_FILTER_KEY) @Parameter(key = Constants.SERVICE_FILTER_KEY, append = true)
public String getFilter() { public String getFilter() {
return super.getFilter(); return super.getFilter();
} }
@Parameter(key = Constants.EXPORTER_LISTENER_KEY) @Parameter(key = Constants.EXPORTER_LISTENER_KEY, append = true)
public String getListener() { public String getListener() {
return super.getListener(); return super.getListener();
} }
......
...@@ -40,5 +40,7 @@ public @interface Parameter { ...@@ -40,5 +40,7 @@ public @interface Parameter {
boolean escaped() default false; boolean escaped() default false;
boolean attribute() default false; boolean attribute() default false;
boolean append() default false;
} }
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册