DUBBO-150 去掉@Extension,改为name=class配置扩展点

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@978 1a56cb94-b969-4eaa-88fa-be21384802f2
This commit is contained in:
william.liangf 2012-02-15 17:18:39 +00:00
parent ae879965bb
commit cd58a5ecdf
226 changed files with 562 additions and 670 deletions

View File

@ -16,7 +16,7 @@
package com.alibaba.dubbo.rpc.cluster;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.support.FailoverCluster;
@ -29,7 +29,7 @@ import com.alibaba.dubbo.rpc.cluster.support.FailoverCluster;
*
* @author william.liangf
*/
@Extension(FailoverCluster.NAME)
@Default(FailoverCluster.NAME)
public interface Cluster {
/**

View File

@ -17,7 +17,7 @@ package com.alibaba.dubbo.rpc.cluster;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
@ -32,7 +32,7 @@ import com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance;
* @author qian.lei
* @author william.liangf
*/
@Extension(RandomLoadBalance.NAME)
@Default(RandomLoadBalance.NAME)
public interface LoadBalance {
/**

View File

@ -16,7 +16,7 @@
package com.alibaba.dubbo.rpc.cluster;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.rpc.Invocation;
@ -29,7 +29,7 @@ import com.alibaba.dubbo.rpc.Invocation;
* @see com.alibaba.dubbo.rpc.cluster.Directory#list(Invocation)
* @author chao.liuc
*/
@Extension
@Default
public interface RouterFactory {
/**

View File

@ -19,17 +19,15 @@ import java.util.List;
import java.util.Random;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcStatus;
import com.alibaba.dubbo.rpc.Invocation;
/**
* LeastActiveLoadBalance
*
* @author william.liangf
*/
@Extension(LeastActiveLoadBalance.NAME)
public class LeastActiveLoadBalance extends AbstractLoadBalance {
public static final String NAME = "leastactive";

View File

@ -15,12 +15,11 @@
*/
package com.alibaba.dubbo.rpc.cluster.loadbalance;
import java.util.List;
import java.util.Random;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Invocation;
import java.util.List;
import java.util.Random;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
/**
* random load balance.
@ -28,7 +27,6 @@ import com.alibaba.dubbo.rpc.Invocation;
* @author qianlei
* @author william.liangf
*/
@Extension(RandomLoadBalance.NAME)
public class RandomLoadBalance extends AbstractLoadBalance {
public static final String NAME = "random";

View File

@ -15,14 +15,13 @@
*/
package com.alibaba.dubbo.rpc.cluster.loadbalance;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.utils.AtomicPositiveInteger;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Invocation;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import com.alibaba.dubbo.common.utils.AtomicPositiveInteger;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
/**
* Round robin load balance.
@ -30,7 +29,6 @@ import com.alibaba.dubbo.rpc.Invocation;
* @author qian.lei
* @author william.liangf
*/
@Extension(RoundRobinLoadBalance.NAME)
public class RoundRobinLoadBalance extends AbstractLoadBalance {
public static final String NAME = "roundrobin";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.rpc.cluster.merger;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.cluster.Merger;
import java.lang.reflect.Array;
import com.alibaba.dubbo.rpc.cluster.Merger;
/**
* @author <a href="mailto:gang.lvg@alibaba-inc.com">kimi</a>
*/
@Extension( ArrayMerger.NAME )
public class ArrayMerger implements Merger<Object> {
public static final String NAME = "array";

View File

@ -15,9 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.merger;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.cluster.Merger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@ -25,10 +22,11 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.alibaba.dubbo.rpc.cluster.Merger;
/**
* @author <a href="mailto:gang.lvg@alibaba-inc.com">kimi</a>
*/
@Extension( CollectionMerger.NAME )
public class CollectionMerger implements Merger<Collection<Object>> {
public static final String NAME = "collection";

View File

@ -15,16 +15,14 @@
*/
package com.alibaba.dubbo.rpc.cluster.merger;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.cluster.Merger;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.dubbo.rpc.cluster.Merger;
/**
* @author <a href="mailto:gang.lvg@alibaba-inc.com">kimi</a>
*/
@Extension( MapMerger.NAME )
public class MapMerger implements Merger<Map<Object, Object>> {
public static final String NAME = "map";

View File

@ -15,18 +15,16 @@
*/
package com.alibaba.dubbo.rpc.cluster.router;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.IOUtils;
import com.alibaba.dubbo.rpc.RpcConstants;
import com.alibaba.dubbo.rpc.cluster.Router;
import com.alibaba.dubbo.rpc.cluster.RouterFactory;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.IOUtils;
import com.alibaba.dubbo.rpc.RpcConstants;
import com.alibaba.dubbo.rpc.cluster.Router;
import com.alibaba.dubbo.rpc.cluster.RouterFactory;
@Extension(FileRouterFactory.NAME)
public class FileRouterFactory implements RouterFactory {
public static final String NAME = "file";

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.router;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.rpc.cluster.Router;
import com.alibaba.dubbo.rpc.cluster.RouterFactory;
@ -34,7 +33,6 @@ import com.alibaba.dubbo.rpc.cluster.RouterFactory;
*
* @author william.liangf
*/
@Extension(ScriptRouterFactory.NAME)
public class ScriptRouterFactory implements RouterFactory {
public static final String NAME = "script";

View File

@ -17,11 +17,10 @@ package com.alibaba.dubbo.rpc.cluster.support;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Result;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
import com.alibaba.dubbo.rpc.cluster.Directory;
import com.alibaba.dubbo.rpc.cluster.LoadBalance;
@ -31,7 +30,6 @@ import com.alibaba.dubbo.rpc.cluster.LoadBalance;
*
* @author william.liangf
*/
@Extension(AvailableCluster.NAME)
public class AvailableCluster implements Cluster {
public static final String NAME = "available";

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.rpc.cluster.Directory;
*
* @author william.liangf
*/
@Extension(FailbackCluster.NAME)
public class FailbackCluster implements Cluster {
public final static String NAME = "failback";

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.rpc.cluster.Directory;
*
* @author william.liangf
*/
@Extension(FailfastCluster.NAME)
public class FailfastCluster implements Cluster {
public final static String NAME = "failfast";

View File

@ -17,7 +17,6 @@ package com.alibaba.dubbo.rpc.cluster.support;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Version;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.rpc.Invocation;
@ -50,7 +49,7 @@ public class FailfastClusterInvoker<T> extends AbstractClusterInvoker<T>{
if (e instanceof RpcException && ((RpcException)e).isBiz()) { // biz exception.
throw (RpcException) e;
}
throw new RpcException(e instanceof RpcException ? ((RpcException)e).getCode() : 0, "Failfast invoke providers " + invoker.getUrl() + " " + loadbalance.getClass().getAnnotation(Extension.class).value() + " select from all providers " + invokers + " for service " + getInterface().getName() + " method " + invocation.getMethodName() + " on consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion() + ", but no luck to perform the invocation. Last error is: " + e.getMessage(), e);
throw new RpcException(e instanceof RpcException ? ((RpcException)e).getCode() : 0, "Failfast invoke providers " + invoker.getUrl() + " " + loadbalance.getClass().getSimpleName() + " select from all providers " + invokers + " for service " + getInterface().getName() + " method " + invocation.getMethodName() + " on consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion() + ", but no luck to perform the invocation. Last error is: " + e.getMessage(), e);
}
}
}

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.rpc.cluster.Directory;
*
* @author william.liangf
*/
@Extension(FailoverCluster.NAME)
public class FailoverCluster implements Cluster {
public final static String NAME = "failover";

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.rpc.cluster.Directory;
*
* @author william.liangf
*/
@Extension(FailsafeCluster.NAME)
public class FailsafeCluster implements Cluster {
public final static String NAME = "failsafe";

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.rpc.cluster.Directory;
*
* @author william.liangf
*/
@Extension(ForkingCluster.NAME)
public class ForkingCluster implements Cluster {
public final static String NAME = "forking";

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.rpc.cluster.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.RpcException;
import com.alibaba.dubbo.rpc.cluster.Cluster;
@ -24,7 +23,6 @@ import com.alibaba.dubbo.rpc.cluster.Directory;
/**
* @author <a href="mailto:gang.lvg@alibaba-inc.com">kimi</a>
*/
@Extension( MergeableCluster.NAME )
public class MergeableCluster implements Cluster {
public static final String NAME = "mergeable";

View File

@ -1,7 +1,7 @@
com.alibaba.dubbo.rpc.cluster.support.FailoverCluster
com.alibaba.dubbo.rpc.cluster.support.FailfastCluster
com.alibaba.dubbo.rpc.cluster.support.FailsafeCluster
com.alibaba.dubbo.rpc.cluster.support.FailbackCluster
com.alibaba.dubbo.rpc.cluster.support.ForkingCluster
com.alibaba.dubbo.rpc.cluster.support.AvailableCluster
com.alibaba.dubbo.rpc.cluster.support.MergeableCluster
failover=com.alibaba.dubbo.rpc.cluster.support.FailoverCluster
failfast=com.alibaba.dubbo.rpc.cluster.support.FailfastCluster
failsafe=com.alibaba.dubbo.rpc.cluster.support.FailsafeCluster
failback=com.alibaba.dubbo.rpc.cluster.support.FailbackCluster
forking=com.alibaba.dubbo.rpc.cluster.support.ForkingCluster
available=com.alibaba.dubbo.rpc.cluster.support.AvailableCluster
mergeable=com.alibaba.dubbo.rpc.cluster.support.MergeableCluster

View File

@ -1,4 +1,4 @@
com.alibaba.dubbo.rpc.cluster.loadbalance.LoadBalanceAdptive
com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance
com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance
com.alibaba.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance
adptive=com.alibaba.dubbo.rpc.cluster.loadbalance.LoadBalanceAdptive
random=com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance
roundrobin=com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance
leastactive=com.alibaba.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance

View File

@ -1,3 +1,3 @@
com.alibaba.dubbo.rpc.cluster.merger.ArrayMerger
com.alibaba.dubbo.rpc.cluster.merger.CollectionMerger
com.alibaba.dubbo.rpc.cluster.merger.MapMerger
array=com.alibaba.dubbo.rpc.cluster.merger.ArrayMerger
collection=com.alibaba.dubbo.rpc.cluster.merger.CollectionMerger
map=com.alibaba.dubbo.rpc.cluster.merger.MapMerger

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.rpc.cluster.router.FileRouterFactory
com.alibaba.dubbo.rpc.cluster.router.ScriptRouterFactory
file=com.alibaba.dubbo.rpc.cluster.router.FileRouterFactory
script=com.alibaba.dubbo.rpc.cluster.router.ScriptRouterFactory

View File

@ -28,7 +28,7 @@ import java.lang.annotation.Target;
*
* @see ExtensionLoader
* @see URL
* @see Extension
* @see Default
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@ -38,7 +38,7 @@ public @interface Adaptive {
/**
* {@link URL}的Key名对应的Value作为要Adapt成的Extension名
* <p>
* 如果{@link URL}这些Key都没有Value使用 缺省的扩展在接口的{@link Extension}中设定的值<br>
* 如果{@link URL}这些Key都没有Value使用 缺省的扩展在接口的{@link Default}中设定的值<br>
* 比如<code>String[] {"key1", "key2"}</code>表示
* <ol>
* <li>先在URL上找key1的Value作为要Adapt成的Extension名
@ -50,7 +50,7 @@ public @interface Adaptive {
* 如果不设置则缺省使用Extension接口类名的点分隔小写字串<br>
* 即对于Extension接口{@code com.alibaba.dubbo.xxx.YyyInvokerWrapper}的缺省值为<code>String[] {"yyy.invoker.wrapper"}</code>
*
* @see Extension#value()
* @see Default#value()
*/
String[] value() default {};

View File

@ -0,0 +1,41 @@
/*
* 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.
*/
package com.alibaba.dubbo.common;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 扩展点实现的元信息
*
* @author william.liangf
* @author ding.lid
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Default {
/**
* 扩展点名称<br>
*
* 如果注解在扩展的接口上则缺省的扩展点<p>
*/
String value() default "";
}

View File

@ -24,9 +24,12 @@ import java.lang.annotation.Target;
/**
* 扩展点实现的元信息
*
* @deprecated 请在META-INF/services/配置文件中声明扩展点名称fixed=com.xxx.FixedThreadPool
*
* @author william.liangf
* @author ding.lid
*/
@Deprecated
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})

View File

@ -50,7 +50,7 @@ import com.alibaba.dubbo.common.utils.StringUtils;
* @author william.liangf
* @author ding.lid
*
* @see Extension
* @see Default
* @see Adaptive
*/
public class ExtensionLoader<T> {
@ -64,6 +64,8 @@ public class ExtensionLoader<T> {
private static final ConcurrentMap<Class<?>, ExtensionLoader<?>> EXTENSION_LOADERS = new ConcurrentHashMap<Class<?>, ExtensionLoader<?>>();
private final Class<?> type;
private final ConcurrentMap<Class<?>, String> cachedNames = new ConcurrentHashMap<Class<?>, String>();
private final Reference<Map<String, Class<?>>> cachedClasses = new Reference<Map<String,Class<?>>>();
@ -96,7 +98,15 @@ public class ExtensionLoader<T> {
private ExtensionLoader(Class<?> type) {
this.type = type;
}
public String getExtensionName(T extensionInstance) {
return getExtensionName(extensionInstance.getClass());
}
public String getExtensionName(Class<?> extensionClass) {
return cachedNames.get(extensionClass);
}
@SuppressWarnings("unchecked")
public T getExtension(String name) {
if (name == null || name.length() == 0)
@ -277,7 +287,7 @@ public class ExtensionLoader<T> {
}
private Map<String, Class<?>> loadExtensionClasses() {
final Extension defaultAnnotation = type.getAnnotation(Extension.class);
final Default defaultAnnotation = type.getAnnotation(Default.class);
if(defaultAnnotation != null) {
String[] names = NAME_SEPARATOR.split(defaultAnnotation.value());
if(names.length > 1) {
@ -311,6 +321,12 @@ public class ExtensionLoader<T> {
line = line.trim();
if (line.length() > 0) {
try {
String name = null;
int i = line.indexOf('=');
if (i > 0) {
name = line.substring(0, i).trim();
line = line.substring(i + 1).trim();
}
Class<?> clazz = Class.forName(line, true, classLoader);
if (! type.isAssignableFrom(clazz)) {
throw new IllegalStateException("Error when load extension class(interface: " +
@ -336,16 +352,22 @@ public class ExtensionLoader<T> {
wrappers.add(clazz);
} catch (NoSuchMethodException e) {
clazz.getConstructor();
Extension extension = clazz.getAnnotation(Extension.class);
if (extension == null) {
throw new IllegalStateException("No such @Extension annotation in class " + clazz.getName());
}
String name = extension.value();
if (name == null || name.length() == 0) {
throw new IllegalStateException("Illegal @Extension annotation in class " + clazz.getName());
name = findAnnotationName(clazz);
if (name == null || name.length() == 0) {
if (clazz.getSimpleName().length() > type.getSimpleName().length()
&& clazz.getSimpleName().endsWith(type.getSimpleName())) {
name = clazz.getSimpleName().substring(0, clazz.getSimpleName().length() - type.getSimpleName().length()).toLowerCase();
} else {
throw new IllegalStateException("No such extension name for the class " + clazz.getName() + " in the config " + url);
}
}
}
String[] names = NAME_SEPARATOR.split(name);
for (String n : names) {
if (! cachedNames.containsKey(clazz)) {
cachedNames.put(clazz, n);
}
Class<?> c = extensionClasses.get(n);
if (c == null) {
extensionClasses.put(n, clazz);
@ -377,6 +399,12 @@ public class ExtensionLoader<T> {
return extensionClasses;
}
@SuppressWarnings("deprecation")
private String findAnnotationName(Class<?> clazz) {
Extension extension = clazz.getAnnotation(Extension.class);
return extension == null ? null : extension.value();
}
@SuppressWarnings("unchecked")
private T createAdaptiveExtension() {
try {

View File

@ -20,7 +20,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
@ -29,7 +29,7 @@ import com.alibaba.dubbo.common.URL;
* @author ding.lid
* @author william.liangf
*/
@Extension("hessian2")
@Default("hessian2")
public interface Serialization {
/**

View File

@ -19,7 +19,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.common.serialize.Serialization;
/**
* @author ding.lid
*/
@Extension("dubbo")
public class DubboSerialization implements Serialization {
public byte getContentTypeId() {

View File

@ -19,7 +19,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.common.serialize.Serialization;
/**
* @author ding.lid
*/
@Extension("hessian2")
public class Hessian2Serialization implements Serialization {
public static final byte ID = 2;

View File

@ -19,7 +19,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.common.serialize.Serialization;
/**
* @author ding.lid
*/
@Extension("compactedjava")
public class CompactedJavaSerialization implements Serialization {
public byte getContentTypeId() {

View File

@ -19,7 +19,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.common.serialize.Serialization;
/**
* @author ding.lid
*/
@Extension("java")
public class JavaSerialization implements Serialization {
public byte getContentTypeId() {

View File

@ -19,7 +19,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;
@ -30,7 +29,6 @@ import com.alibaba.dubbo.common.serialize.Serialization;
*
* @author william.liangf
*/
@Extension("fastjson")
public class FastJsonSerialization implements Serialization {
public byte getContentTypeId() {

View File

@ -19,7 +19,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.serialize.ObjectInput;
import com.alibaba.dubbo.common.serialize.ObjectOutput;
@ -30,7 +29,6 @@ import com.alibaba.dubbo.common.serialize.Serialization;
*
* @author william.liangf
*/
@Extension("json")
public class JsonSerialization implements Serialization {
public byte getContentTypeId() {

View File

@ -15,14 +15,14 @@
*/
package com.alibaba.dubbo.common.status;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
/**
* StatusChecker
*
* @author william.liangf
*/
@Extension
@Default
public interface StatusChecker {
/**

View File

@ -19,7 +19,6 @@ import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.status.Status;
import com.alibaba.dubbo.common.status.StatusChecker;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.common.status.StatusChecker;
*
* @author william.liangf
*/
@Extension("load")
public class LoadStatusChecker implements StatusChecker {
public Status check() {

View File

@ -15,7 +15,6 @@
*/
package com.alibaba.dubbo.common.status.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.status.Status;
import com.alibaba.dubbo.common.status.StatusChecker;
@ -24,7 +23,6 @@ import com.alibaba.dubbo.common.status.StatusChecker;
*
* @author william.liangf
*/
@Extension("memory")
public class MemoryStatusChecker implements StatusChecker {
public Status check() {

View File

@ -19,7 +19,7 @@ import java.util.concurrent.Executor;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
@ -27,7 +27,7 @@ import com.alibaba.dubbo.common.URL;
*
* @author william.liangf
*/
@Extension("fixed")
@Default("fixed")
public interface ThreadPool {
/**

View File

@ -22,7 +22,6 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.threadpool.ThreadPool;
import com.alibaba.dubbo.common.threadpool.support.AbortPolicyWithReport;
@ -34,7 +33,6 @@ import com.alibaba.dubbo.common.utils.NamedThreadFactory;
* @see java.util.concurrent.Executors#newCachedThreadPool()
* @author william.liangf
*/
@Extension("cached")
public class CachedThreadPool implements ThreadPool {
public Executor getExecutor(URL url) {

View File

@ -22,7 +22,6 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.threadpool.ThreadPool;
import com.alibaba.dubbo.common.threadpool.support.AbortPolicyWithReport;
@ -34,7 +33,6 @@ import com.alibaba.dubbo.common.utils.NamedThreadFactory;
* @see java.util.concurrent.Executors#newFixedThreadPool(int)
* @author william.liangf
*/
@Extension("fixed")
public class FixedThreadPool implements ThreadPool {
public Executor getExecutor(URL url) {

View File

@ -1,6 +1,6 @@
com.alibaba.dubbo.common.serialize.support.dubbo.DubboSerialization
com.alibaba.dubbo.common.serialize.support.hessian.Hessian2Serialization
com.alibaba.dubbo.common.serialize.support.java.JavaSerialization
com.alibaba.dubbo.common.serialize.support.java.CompactedJavaSerialization
com.alibaba.dubbo.common.serialize.support.json.JsonSerialization
com.alibaba.dubbo.common.serialize.support.json.FastJsonSerialization
dubbo=com.alibaba.dubbo.common.serialize.support.dubbo.DubboSerialization
hessian2=com.alibaba.dubbo.common.serialize.support.hessian.Hessian2Serialization
java=com.alibaba.dubbo.common.serialize.support.java.JavaSerialization
compactedjava=com.alibaba.dubbo.common.serialize.support.java.CompactedJavaSerialization
json=com.alibaba.dubbo.common.serialize.support.json.JsonSerialization
fastjson=com.alibaba.dubbo.common.serialize.support.json.FastJsonSerialization

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.common.status.support.MemoryStatusChecker
com.alibaba.dubbo.common.status.support.LoadStatusChecker
memory=com.alibaba.dubbo.common.status.support.MemoryStatusChecker
load=com.alibaba.dubbo.common.status.support.LoadStatusChecker

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.common.threadpool.support.fixed.FixedThreadPool
com.alibaba.dubbo.common.threadpool.support.cached.CachedThreadPool
fixed=com.alibaba.dubbo.common.threadpool.support.fixed.FixedThreadPool
cached=com.alibaba.dubbo.common.threadpool.support.cached.CachedThreadPool

View File

@ -16,13 +16,13 @@
package com.alibaba.dubbo.common.extensionloader.ext1;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
* @author ding.lid
*/
@Extension("impl1")
@Default("impl1")
public interface Ext1 {
@Adaptive
String echo(URL url, String s);

View File

@ -15,14 +15,12 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext1.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.URL;
import com.alibaba.dubbo.common.extensionloader.ext1.Ext1;
/**
* @author ding.lid
*/
@Extension(value = "impl1")
public class Ext1Impl1 implements Ext1 {
public String echo(URL url, String s) {
return "Ext1Impl1-echo";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext1.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.URL;
import com.alibaba.dubbo.common.extensionloader.ext1.Ext1;
/**
* @author ding.lid
*
*/
@Extension("impl2")
public class Ext1Impl2 implements Ext1 {
public String echo(URL url, String s) {
return "Ext1Impl2-echo";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext1.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.URL;
import com.alibaba.dubbo.common.extensionloader.ext1.Ext1;
/**
* @author ding.lid
*
*/
@Extension("impl3")
public class Ext1Impl3 implements Ext1 {
public String echo(URL url, String s) {
return "Ext1Impl3-echo";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext2.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext2.Ext2;
import com.alibaba.dubbo.common.extensionloader.ext2.UrlHolder;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext2.Ext2;
import com.alibaba.dubbo.common.extensionloader.ext2.UrlHolder;
/**
* @author ding.lid
*/
@Extension(value = "impl1")
public class Ext2Impl1 implements Ext2 {
public String echo(UrlHolder holder, String s) {
return "Ext2Impl1-echo";

View File

@ -15,16 +15,14 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext2.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext2.Ext2;
import com.alibaba.dubbo.common.extensionloader.ext2.UrlHolder;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext2.Ext2;
import com.alibaba.dubbo.common.extensionloader.ext2.UrlHolder;
/**
* @author ding.lid
*
*/
@Extension("impl2")
public class Ext2Impl2 implements Ext2 {
public String echo(UrlHolder holder, String s) {
return "Ext2Impl2-echo";

View File

@ -15,16 +15,14 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext2.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext2.Ext2;
import com.alibaba.dubbo.common.extensionloader.ext2.UrlHolder;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext2.Ext2;
import com.alibaba.dubbo.common.extensionloader.ext2.UrlHolder;
/**
* @author ding.lid
*
*/
@Extension("impl3")
public class Ext2Impl3 implements Ext2 {
public String echo(UrlHolder holder, String s) {
return "Ext2Impl3-echo";

View File

@ -16,13 +16,13 @@
package com.alibaba.dubbo.common.extensionloader.ext3;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
* @author ding.lid
*/
@Extension("impl3")
@Default("impl3")
public interface Ext3 {
@Adaptive({"key1", "protocol"})
String echo(URL url, String s);

View File

@ -15,14 +15,12 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext3.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext3.Ext3;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext3.Ext3;
/**
* @author ding.lid
*/
@Extension(value = "impl1")
public class Ext3Impl1 implements Ext3 {
public String echo(URL url, String s) {
return "Ext3Impl3-echo";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext3.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext3.Ext3;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext3.Ext3;
/**
* @author ding.lid
*
*/
@Extension("impl2")
public class Ext3Impl2 implements Ext3 {
public String echo(URL url, String s) {
return "Ext3Impl2-echo";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext3.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext3.Ext3;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext3.Ext3;
/**
* @author ding.lid
*
*/
@Extension(value="impl3")
public class Ext3Impl3 implements Ext3 {
public String echo(URL url, String s) {
return "Ext3Impl3-echo";

View File

@ -18,12 +18,12 @@ package com.alibaba.dubbo.common.extensionloader.ext4;
import java.util.List;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
/**
* @author ding.lid
*/
@Extension("impl1")
@Default("impl1")
public interface Ext4 {
@Adaptive
String bark(String name, List<Object> list); // 没有URL参数的方法

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext4.impl;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.extensionloader.ext4.Ext4;
import java.util.List;
import com.alibaba.dubbo.common.extensionloader.ext4.Ext4;
/**
* @author ding.lid
*/
@Extension(value = "impl1")
public class Ext4Impl1 implements Ext4 {
public String bark(String name, List<Object> list) {
return null;

View File

@ -15,17 +15,15 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext4.impl;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext4.Ext4;
import java.util.List;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext4.Ext4;
/**
* @author ding.lid
*
*/
@Extension("impl2")
public class Ext4Impl2 implements Ext4 {
public String echo(URL url, String s) {
return "Ext3Impl2-echo";

View File

@ -15,13 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext5;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
* @author ding.lid
*/
@Extension("impl1")
@Default("impl1")
public interface Ext5NoAdaptiveMethod {
String echo(URL url, String s);

View File

@ -15,14 +15,12 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext5.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext5.Ext5NoAdaptiveMethod;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext5.Ext5NoAdaptiveMethod;
/**
* @author ding.lid
*/
@Extension("impl1")
public class Ext5Impl1 implements Ext5NoAdaptiveMethod {
public String echo(URL url, String s) {
return "Ext5Impl1-echo";

View File

@ -15,15 +15,13 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext5.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext5.Ext5NoAdaptiveMethod;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext5.Ext5NoAdaptiveMethod;
/**
* @author ding.lid
*
*/
@Extension("impl2")
public class Ext5Impl2 implements Ext5NoAdaptiveMethod {
public String echo(URL url, String s) {
return "Ext5Impl2-echo";

View File

@ -15,16 +15,14 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext5.impl;
import java.util.concurrent.atomic.AtomicInteger;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext5.Ext5NoAdaptiveMethod;
import java.util.concurrent.atomic.AtomicInteger;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext5.Ext5NoAdaptiveMethod;
/**
* @author ding.lid
*/
@Extension("XXX")
public class Ext5Wrapper1 implements Ext5NoAdaptiveMethod {
Ext5NoAdaptiveMethod instance;

View File

@ -16,7 +16,7 @@
package com.alibaba.dubbo.common.extensionloader.ext6_inject;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
@ -24,7 +24,7 @@ import com.alibaba.dubbo.common.URL;
*
* @author ding.lid
*/
@Extension
@Default
public interface Ext6 {
@Adaptive
String echo(URL url, String s);

View File

@ -1,9 +1,7 @@
package com.alibaba.dubbo.common.extensionloader.ext6_inject.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.Dao;
@Extension("test")
public class DaoImpl implements Dao {
public void update(){

View File

@ -17,7 +17,6 @@ package com.alibaba.dubbo.common.extensionloader.ext6_inject.impl;
import junit.framework.Assert;
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.Dao;
@ -26,7 +25,6 @@ import com.alibaba.dubbo.common.extensionloader.ext6_inject.Ext6;
/**
* @author ding.lid
*/
@Extension(value = "impl1")
public class Ext6Impl1 implements Ext6 {
Ext1 ext1;
public Dao obj;

View File

@ -15,16 +15,14 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext6_inject.impl;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.Ext6;
import java.util.List;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext6_inject.Ext6;
/**
* @author ding.lid
*/
@Extension("impl2")
public class Ext6Impl2 implements Ext6 {
List<String> list;

View File

@ -16,7 +16,7 @@
package com.alibaba.dubbo.common.extensionloader.ext7;
import com.alibaba.dubbo.common.Adaptive;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
/**
@ -25,7 +25,7 @@ import com.alibaba.dubbo.common.URL;
*
* @author ding.lid
*/
@Extension
@Default
public interface Ext7 {
@Adaptive
String echo(URL url, String s);

View File

@ -15,14 +15,12 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext7.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext7.Ext7;
/**
* @author ding.lid
*/
@Extension(value = "ok")
public class Ext7Impl implements Ext7 {
public String echo(URL url, String s) {
return "";

View File

@ -15,14 +15,12 @@
*/
package com.alibaba.dubbo.common.extensionloader.ext7.impl;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extensionloader.ext7.Ext7;
/**
* @author ding.lid
*/
@Extension(value = "error")
public class Ext7InitErrorImpl implements Ext7 {
static {

View File

@ -94,8 +94,8 @@ public class ConfigUtilsTest {
Properties p = ConfigUtils.loadProperties("META-INF/services/com.alibaba.dubbo.common.threadpool.ThreadPool", false);
Properties expected = new Properties();
expected.put("com.alibaba.dubbo.common.threadpool.support.fixed.FixedThreadPool", "");
expected.put("com.alibaba.dubbo.common.threadpool.support.cached.CachedThreadPool", "");
expected.put("fixed", "com.alibaba.dubbo.common.threadpool.support.fixed.FixedThreadPool");
expected.put("cached", "com.alibaba.dubbo.common.threadpool.support.cached.CachedThreadPool");
Assert.assertEquals(expected, p);
}
@ -118,8 +118,8 @@ public class ConfigUtilsTest {
Properties p = ConfigUtils.loadProperties("META-INF/services/com.alibaba.dubbo.common.status.StatusChecker", true);
Properties expected = new Properties();
expected.put("com.alibaba.dubbo.common.status.support.MemoryStatusChecker", "");
expected.put("com.alibaba.dubbo.common.status.support.LoadStatusChecker", "");
expected.put("memory", "com.alibaba.dubbo.common.status.support.MemoryStatusChecker");
expected.put("load", "com.alibaba.dubbo.common.status.support.LoadStatusChecker");
expected.put("aa", "12");
Assert.assertEquals(expected, p);

View File

@ -1,4 +1,4 @@
# Comment 1
com.alibaba.dubbo.common.extensionloader.ext1.impl.Ext1Impl1#Hello World
com.alibaba.dubbo.common.extensionloader.ext1.impl.Ext1Impl2 # Comment 2
com.alibaba.dubbo.common.extensionloader.ext1.impl.Ext1Impl3 # with head space
impl1=com.alibaba.dubbo.common.extensionloader.ext1.impl.Ext1Impl1#Hello World
impl2=com.alibaba.dubbo.common.extensionloader.ext1.impl.Ext1Impl2 # Comment 2
impl3=com.alibaba.dubbo.common.extensionloader.ext1.impl.Ext1Impl3 # with head space

View File

@ -1,3 +1,3 @@
com.alibaba.dubbo.common.extensionloader.ext2.impl.Ext2Impl1
com.alibaba.dubbo.common.extensionloader.ext2.impl.Ext2Impl2
com.alibaba.dubbo.common.extensionloader.ext2.impl.Ext2Impl3
impl1=com.alibaba.dubbo.common.extensionloader.ext2.impl.Ext2Impl1
impl2=com.alibaba.dubbo.common.extensionloader.ext2.impl.Ext2Impl2
impl3=com.alibaba.dubbo.common.extensionloader.ext2.impl.Ext2Impl3

View File

@ -1,3 +1,3 @@
com.alibaba.dubbo.common.extensionloader.ext3.impl.Ext3Impl1
com.alibaba.dubbo.common.extensionloader.ext3.impl.Ext3Impl2
com.alibaba.dubbo.common.extensionloader.ext3.impl.Ext3Impl3
impl1=com.alibaba.dubbo.common.extensionloader.ext3.impl.Ext3Impl1
impl2=com.alibaba.dubbo.common.extensionloader.ext3.impl.Ext3Impl2
impl3=com.alibaba.dubbo.common.extensionloader.ext3.impl.Ext3Impl3

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.common.extensionloader.ext4.impl.Ext4Impl1
com.alibaba.dubbo.common.extensionloader.ext4.impl.Ext4Impl2
impl1=com.alibaba.dubbo.common.extensionloader.ext4.impl.Ext4Impl1
impl2=com.alibaba.dubbo.common.extensionloader.ext4.impl.Ext4Impl2

View File

@ -1,4 +1,4 @@
com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Impl1
com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Impl2
com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Wrapper1
com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Wrapper2
impl1=com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Impl1
impl2=com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Impl2
wrapper1=com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Wrapper1
wrapper2=com.alibaba.dubbo.common.extensionloader.ext5.impl.Ext5Wrapper2

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.common.extensionloader.ext6_inject.impl.Ext6Impl1
com.alibaba.dubbo.common.extensionloader.ext6_inject.impl.Ext6Impl2
impl1=com.alibaba.dubbo.common.extensionloader.ext6_inject.impl.Ext6Impl1
impl2=com.alibaba.dubbo.common.extensionloader.ext6_inject.impl.Ext6Impl2

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.common.extensionloader.ext7.impl.Ext7InitErrorImpl
com.alibaba.dubbo.common.extensionloader.ext7.impl.Ext7Impl
error=com.alibaba.dubbo.common.extensionloader.ext7.impl.Ext7InitErrorImpl
ok=com.alibaba.dubbo.common.extensionloader.ext7.impl.Ext7Impl

View File

@ -24,7 +24,6 @@ import javax.sql.DataSource;
import org.springframework.context.ApplicationContext;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.status.Status;
@ -36,7 +35,6 @@ import com.alibaba.dubbo.config.spring.ServiceBean;
*
* @author william.liangf
*/
@Extension("datasource")
public class DataSourceStatusChecker implements StatusChecker {
private static final Logger logger = LoggerFactory.getLogger(DataSourceStatusChecker.class);

View File

@ -20,7 +20,6 @@ import java.lang.reflect.Method;
import org.springframework.context.ApplicationContext;
import org.springframework.context.Lifecycle;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.status.Status;
@ -32,7 +31,6 @@ import com.alibaba.dubbo.config.spring.ServiceBean;
*
* @author william.liangf
*/
@Extension("spring")
public class SpringStatusChecker implements StatusChecker {
private static final Logger logger = LoggerFactory.getLogger(SpringStatusChecker.class);

View File

@ -1,2 +1,2 @@
com.alibaba.dubbo.config.spring.status.SpringStatusChecker
com.alibaba.dubbo.config.spring.status.DataSourceStatusChecker
spring=com.alibaba.dubbo.config.spring.status.SpringStatusChecker
datasource=com.alibaba.dubbo.config.spring.status.DataSourceStatusChecker

View File

@ -15,7 +15,7 @@
*/
package com.alibaba.dubbo.config.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.rpc.Exporter;
import com.alibaba.dubbo.rpc.Invocation;
@ -29,7 +29,6 @@ import com.alibaba.dubbo.rpc.RpcException;
* @author haomin.liuhm
*
*/
@Extension("mockprotocol")
public class MockProtocol implements Protocol {
/* (non-Javadoc)

View File

@ -15,17 +15,15 @@
*/
package com.alibaba.dubbo.config.support;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.registry.Registry;
import com.alibaba.dubbo.registry.RegistryFactory;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.registry.Registry;
import com.alibaba.dubbo.registry.RegistryFactory;
/**
* TODO Comment of MockRegistryFactory
* @author haomin.liuhm
*
*/
@Extension("mockregistry")
public class MockRegistryFactory implements RegistryFactory {
/*

View File

@ -1 +1 @@
com.alibaba.dubbo.config.support.MockRegistryFactory
mockregistry=com.alibaba.dubbo.config.support.MockRegistryFactory

View File

@ -1 +1 @@
com.alibaba.dubbo.config.support.MockProtocol
mockprotocol=com.alibaba.dubbo.config.support.MockProtocol

View File

@ -15,14 +15,14 @@
*/
package com.alibaba.dubbo.container;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.Default;
/**
* Container. (SPI, Singleton, ThreadSafe)
*
* @author william.liangf
*/
@Extension("spring")
@Default("spring")
public interface Container {
/**

View File

@ -22,7 +22,6 @@ import org.mortbay.jetty.servlet.FilterHolder;
import org.mortbay.jetty.servlet.ServletHandler;
import org.mortbay.jetty.servlet.ServletHolder;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.utils.ConfigUtils;
@ -36,7 +35,6 @@ import com.alibaba.dubbo.container.page.ResourceFilter;
*
* @author william.liangf
*/
@Extension("jetty")
public class JettyContainer implements Container {
private static final Logger logger = LoggerFactory.getLogger(JettyContainer.class);

View File

@ -23,7 +23,6 @@ import org.apache.log4j.FileAppender;
import org.apache.log4j.LogManager;
import org.apache.log4j.PropertyConfigurator;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.utils.ConfigUtils;
import com.alibaba.dubbo.container.Container;
@ -32,7 +31,6 @@ import com.alibaba.dubbo.container.Container;
*
* @author william.liangf
*/
@Extension("log4j")
public class Log4jContainer implements Container {
public static final String LOG4J_FILE = "dubbo.log4j.file";

View File

@ -32,7 +32,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.ExtensionLoader;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.logger.Logger;
@ -79,7 +78,7 @@ public class PageServlet extends HttpServlet {
}
for (String name : names) {
PageHandler handler = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtension(name);
pages.put(handler.getClass().getAnnotation(Extension.class).value(), handler);
pages.put(ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler), handler);
Menu menu = handler.getClass().getAnnotation(Menu.class);
if (menu != null) {
menus.add(handler);
@ -160,7 +159,7 @@ public class PageServlet extends HttpServlet {
if (isHtml) {
String nav = page.getNavigation();
if (nav == null || nav.length() == 0) {
nav = pageHandler.getClass().getAnnotation(Extension.class).value();
nav = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(pageHandler);
nav = nav.substring(0, 1).toUpperCase() + nav.substring(1);
}
if (! "index".equals(uri)) {
@ -208,7 +207,7 @@ public class PageServlet extends HttpServlet {
writer.println("<thead>");
writer.println(" <tr>");
for (PageHandler handler : menus) {
String uri = handler.getClass().getAnnotation(Extension.class).value();
String uri = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler);
Menu menu = handler.getClass().getAnnotation(Menu.class);
writer.println(" <th><a href=\"" + uri + ".html\">" + menu.name() + "</a></th>");
}

View File

@ -18,7 +18,7 @@ package com.alibaba.dubbo.container.page.pages;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.ExtensionLoader;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
@ -31,13 +31,12 @@ import com.alibaba.dubbo.container.page.PageServlet;
* @author william.liangf
*/
@Menu(name = "Home", desc = "Home page.", order = Integer.MIN_VALUE)
@Extension("index")
public class HomePageHandler implements PageHandler {
public Page handle(URL url) {
List<List<String>> rows = new ArrayList<List<String>>();
for (PageHandler handler : PageServlet.getInstance().getMenus()) {
String uri = handler.getClass().getAnnotation(Extension.class).value();
String uri = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler);
Menu menu = handler.getClass().getAnnotation(Menu.class);
List<String> row = new ArrayList<String>();
row.add("<a href=\"" + uri + ".html\">" + menu.name() + "</a>");

View File

@ -31,7 +31,6 @@ import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
@ -43,7 +42,6 @@ import com.alibaba.dubbo.container.page.PageHandler;
* @author william.liangf
*/
@Menu(name = "Log", desc = "Show system log.", order = Integer.MAX_VALUE - 11000)
@Extension("log")
public class LogPageHandler implements PageHandler {
private static final int SHOW_LOG_LENGTH = 30000;

View File

@ -21,7 +21,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.ExtensionLoader;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.status.Status;
@ -37,7 +36,6 @@ import com.alibaba.dubbo.container.page.PageHandler;
* @author william.liangf
*/
@Menu(name = "Status", desc = "Show system status.", order = Integer.MAX_VALUE - 12000)
@Extension("status")
public class StatusPageHandler implements PageHandler {
public Page handle(URL url) {

View File

@ -22,7 +22,6 @@ import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.Version;
import com.alibaba.dubbo.common.utils.NetUtils;
@ -36,7 +35,6 @@ import com.alibaba.dubbo.container.page.PageHandler;
* @author william.liangf
*/
@Menu(name = "System", desc = "Show system environment information.", order = Integer.MAX_VALUE - 10000)
@Extension("system")
public class SystemPageHandler implements PageHandler {
public Page handle(URL url) {

View File

@ -17,7 +17,6 @@ package com.alibaba.dubbo.container.spring;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.utils.ConfigUtils;
@ -28,7 +27,6 @@ import com.alibaba.dubbo.container.Container;
*
* @author william.liangf
*/
@Extension("spring")
public class SpringContainer implements Container {
private static final Logger logger = LoggerFactory.getLogger(SpringContainer.class);

View File

@ -1,3 +1,3 @@
com.alibaba.dubbo.container.spring.SpringContainer
com.alibaba.dubbo.container.jetty.JettyContainer
com.alibaba.dubbo.container.log4j.Log4jContainer
spring=com.alibaba.dubbo.container.spring.SpringContainer
jetty=com.alibaba.dubbo.container.jetty.JettyContainer
log4j=com.alibaba.dubbo.container.log4j.Log4jContainer

View File

@ -1,4 +1,4 @@
com.alibaba.dubbo.container.page.pages.HomePageHandler
com.alibaba.dubbo.container.page.pages.StatusPageHandler
com.alibaba.dubbo.container.page.pages.LogPageHandler
com.alibaba.dubbo.container.page.pages.SystemPageHandler
home=com.alibaba.dubbo.container.page.pages.HomePageHandler
status=com.alibaba.dubbo.container.page.pages.StatusPageHandler
log=com.alibaba.dubbo.container.page.pages.LogPageHandler
system=com.alibaba.dubbo.container.page.pages.SystemPageHandler

View File

@ -16,7 +16,6 @@
package com.alibaba.dubbo.monitor.dubbo;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.monitor.Monitor;
import com.alibaba.dubbo.monitor.MonitorService;
@ -30,7 +29,6 @@ import com.alibaba.dubbo.rpc.ProxyFactory;
*
* @author william.liangf
*/
@Extension("dubbo")
public class DubboMonitorFactroy extends AbstractMonitorFactroy {
private Protocol protocol;

View File

@ -1 +1 @@
com.alibaba.dubbo.monitor.dubbo.DubboMonitorFactroy
dubbo=com.alibaba.dubbo.monitor.dubbo.DubboMonitorFactroy

View File

@ -25,7 +25,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.ExtensionLoader;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.logger.Logger;
@ -43,7 +42,6 @@ import com.alibaba.dubbo.registry.RegistryFactory;
*
* @author william.liangf
*/
@Extension("registry")
public class RegistryContainer implements Container {
private static final Logger logger = LoggerFactory.getLogger(RegistryContainer.class);

View File

@ -19,7 +19,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
@ -32,7 +31,6 @@ import com.alibaba.dubbo.monitor.simple.RegistryContainer;
* @author william.liangf
*/
@Menu(name = "Applications", desc = "Show application dependencies.", order = 1000)
@Extension("applications")
public class ApplicationsPageHandler implements PageHandler {
public Page handle(URL url) {

View File

@ -21,7 +21,6 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
@ -33,7 +32,6 @@ import com.alibaba.dubbo.monitor.simple.SimpleMonitorService;
*
* @author william.liangf
*/
@Extension("charts")
public class ChartsPageHandler implements PageHandler {
public Page handle(URL url) {

View File

@ -18,7 +18,6 @@ package com.alibaba.dubbo.monitor.simple.pages;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.container.page.Page;
@ -30,7 +29,6 @@ import com.alibaba.dubbo.monitor.simple.RegistryContainer;
*
* @author william.liangf
*/
@Extension("consumers")
public class ConsumersPageHandler implements PageHandler {
public Page handle(URL url) {

Some files were not shown because too many files have changed in this diff Show More