提交 d4906566 编写于 作者: C chao.liuc

DUBBO-169 扩展点的set方法不是扩展点时忽略set操作,不要报错

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@826 1a56cb94-b969-4eaa-88fa-be21384802f2
上级 629b1308
......@@ -234,7 +234,7 @@ public class ExtensionLoader<T> {
&& method.getParameterTypes().length == 1
&& Modifier.isPublic(method.getModifiers())) {
Class<?> pt = method.getParameterTypes()[0];
if (pt.isInterface()) {
if (pt.isInterface() && pt.isAnnotationPresent(Extension.class)) {
try {
Object adaptive = getExtensionLoader(pt).getAdaptiveExtension();
method.invoke(instance, adaptive);
......
......@@ -28,6 +28,8 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import junit.framework.Assert;
import org.junit.Test;
......@@ -46,6 +48,7 @@ import com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Wrapper2;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.Ext6;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.impl.Ext6Impl2;
import com.alibaba.dubbo.common.extensionloader.ext7.Ext7;
import com.alibaba.dubbo.common.utils.LogUtil;
/**
* @author ding.lid
......@@ -401,16 +404,21 @@ public class ExtensionLoaderTest {
}
@Test
public void test_getAdaptiveExtension_inject() throws Exception {
public void test_getAdaptiveExtension_inject() throws Exception {
LogUtil.start();
Ext6 ext = ExtensionLoader.getExtensionLoader(Ext6.class).getAdaptiveExtension();
URL url = new URL("p1", "1.2.3.4", 1010, "path1");
url = url.addParameters("ext6", "impl1");
assertEquals("Ext6Impl1-echo-Ext1Impl1-echo", ext.echo(url, "ha"));
Assert.assertTrue("can not find error.", LogUtil.checkNoError());
LogUtil.stop();
url = url.addParameters("ext1", "impl2");
assertEquals("Ext6Impl1-echo-Ext1Impl2-echo", ext.echo(url, "ha"));
assertEquals("Ext6Impl1-echo-Ext1Impl2-echo", ext.echo(url, "ha"));
}
@Test
......
......@@ -15,17 +15,22 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext6_inject.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext1.Ext1;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.Ext6;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext1.Ext1;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.Ext6;
/**
* @author ding.lid
*/
@Extension(value = "impl1")
public class Ext6Impl1 implements Ext6 {
Ext1 ext1;
Ext1 ext1;
Dao obj;
public void setDao(Dao obj){
this.obj = obj;
}
public void setExt1(Ext1 ext1) {
this.ext1 = ext1;
......@@ -33,6 +38,10 @@ public class Ext6Impl1 implements Ext6 {
public String echo(URL url, String s) {
return "Ext6Impl1-echo-" + ext1.echo(url, s);
}
public static interface Dao{
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright 1999-2011 Alibaba Group.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-->
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="CONSOLE" />
</root>
</log4j:configuration>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册