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

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

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@563 1a56cb94-b969-4eaa-88fa-be21384802f2
上级 d7f3c3e8
......@@ -124,18 +124,18 @@ public abstract class AbstractConfig implements Serializable {
} else {
String str = String.valueOf(value).trim();
if (value != null && str.length() > 0) {
if (prefix != null && prefix.length() > 0) {
key = prefix + "." + key;
}
if (parameter != null && parameter.escaped()) {
str = URL.encode(str);
}
if (parameter != null && parameter.append()) {
String pre = (String)parameters.get(key);
String pre = (String)parameters.get(Constants.DEFAULT_KEY + "." + key);
if (pre != null && pre.length() > 0) {
str = pre + "," + str;
}
}
if (prefix != null && prefix.length() > 0) {
key = prefix + "." + key;
}
parameters.put(key, str);
} else if (parameter != null && parameter.required()) {
throw new IllegalStateException(config.getClass().getSimpleName() + "." + key + " == null");
......
......@@ -93,7 +93,13 @@ public class ReferenceConfig<T> extends AbstractConsumerConfig {
private transient boolean initialized;
private transient boolean destroyed;
private final List<URL> urls = new ArrayList<URL>();
public List<URL> toUrls() {
return urls;
}
public synchronized T get() {
if (destroyed){
throw new IllegalStateException("Already destroyed!");
......@@ -106,7 +112,7 @@ public class ReferenceConfig<T> extends AbstractConsumerConfig {
public synchronized void destroy() {
if (ref == null) {
throw new IllegalStateException("Uninitialized.");
return;
}
if (destroyed){
return;
......@@ -276,7 +282,6 @@ public class ReferenceConfig<T> extends AbstractConsumerConfig {
logger.info("Using injvm service " + interfaceClass.getName());
}
} else {
List<URL> urls = new ArrayList<URL>();
if (url != null && url.length() > 0) { // 用户指定URL,指定的URL可能是对点对直连地址,也可能是注册中心URL
String[] us = Constants.SEMICOLON_SPLIT_PATTERN.split(url);
if (us != null && us.length > 0) {
......
......@@ -85,11 +85,10 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
private transient boolean generic;
@Parameter(excluded = true)
public boolean isExported() {
return exported;
public List<URL> toUrls() {
return urls;
}
public synchronized void export() {
if (delay != null && delay > 0) {
Thread thread = new Thread(new Runnable() {
......@@ -251,8 +250,8 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
}
public synchronized void unexport() {
if (!exported) {
throw new IllegalStateException("No exported!");
if (! exported) {
return;
}
if (unexported) {
return;
......@@ -328,7 +327,7 @@ public class ServiceConfig<T> extends AbstractServiceConfig {
}
map.put("dubbo", Version.getVersion());
appendParameters(map, application);
appendParameters(map, provider);
appendParameters(map, provider, Constants.DEFAULT_KEY);
appendParameters(map, protocolConfig);
appendParameters(map, this);
map.put("prompt", "dubbo");
......
......@@ -26,6 +26,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.config.api.DemoService;
import com.alibaba.dubbo.config.provider.impl.DemoServiceImpl;
import com.alibaba.dubbo.registry.RegistryService;
import com.alibaba.dubbo.registry.support.SimpleRegistryExporter;
import com.alibaba.dubbo.registry.support.SimpleRegistryService;
......@@ -174,5 +175,46 @@ public class ConfigTest {
consumer.setTimeout(2000);
Assert.assertEquals("1000", System.getProperty("sun.rmi.transport.tcp.responseTimeout"));
}
@Test
public void testAppendFilter() throws Exception {
ProviderConfig provider = new ProviderConfig();
provider.setFilter("classloader,monitor");
ServiceConfig<DemoService> service = new ServiceConfig<DemoService>();
service.setFilter("accesslog,trace");
service.setProvider(provider);
service.setApplication(new ApplicationConfig("provider"));
service.setRegistry(new RegistryConfig(RegistryConfig.NO_AVAILABLE));
service.setInterface(DemoService.class);
service.setRef(new DemoServiceImpl());
try {
service.export();
List<URL> urls = service.toUrls();
Assert.assertNotNull(urls);
Assert.assertEquals(1, urls.size());
Assert.assertEquals("classloader,monitor,accesslog,trace", urls.get(0).getParameter("service.filter"));
ConsumerConfig consumer = new ConsumerConfig();
consumer.setFilter("classloader,monitor");
ReferenceConfig<DemoService> reference = new ReferenceConfig<DemoService>();
reference.setFilter("accesslog,trace");
reference.setConsumer(consumer);
reference.setApplication(new ApplicationConfig("consumer"));
reference.setRegistry(new RegistryConfig(RegistryConfig.NO_AVAILABLE));
reference.setInterface(DemoService.class);
reference.setUrl("dubbo://" + NetUtils.getLocalHost() + ":20880?" + DemoService.class.getName() + "?check=false");
try {
reference.get();
urls = reference.toUrls();
Assert.assertNotNull(urls);
Assert.assertEquals(1, urls.size());
Assert.assertEquals("classloader,monitor,accesslog,trace", urls.get(0).getParameter("reference.filter"));
} finally {
reference.destroy();
}
} finally {
service.unexport();
}
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册