com.alibaba.dubbo.common.extension
Class ExtensionLoader<T>

java.lang.Object
  extended by com.alibaba.dubbo.common.extension.ExtensionLoader<T>

public class ExtensionLoader<T>
extends Object

Dubbo使用的扩展点获取。

Author:
william.liangf, ding.lid
See Also:
JDK5.0的自动发现机制实现, SPI, Adaptive, Activate

Method Summary
 void addExtension(String name, Class<?> clazz)
          编程方式添加新扩展点。
 List<T> getActivateExtension(URL url, String key)
          This is equivalent to
 List<T> getActivateExtension(URL url, String[] values)
          This is equivalent to
 List<T> getActivateExtension(URL url, String[] values, String group)
          Get activate extensions.
 List<T> getActivateExtension(URL url, String key, String group)
          This is equivalent to
 T getAdaptiveExtension()
           
 T getDefaultExtension()
          返回缺省的扩展,如果没有设置则返回null
 String getDefaultExtensionName()
          返回缺省的扩展点名,如果没有设置缺省则返回null
 T getExtension(String name)
          返回指定名字的扩展。如果指定名字的扩展不存在,则抛异常 IllegalStateException.
static
<T> ExtensionLoader<T>
getExtensionLoader(Class<T> type)
           
 String getExtensionName(Class<?> extensionClass)
           
 String getExtensionName(T extensionInstance)
           
 T getLoadedExtension(String name)
          返回扩展点实例,如果没有指定的扩展点或是还没加载(即实例化)则返回null。注意:此方法不会触发扩展点的加载。

一般应该调用getExtension(String)方法获得扩展,这个方法会触发扩展点加载。

 Set<String> getLoadedExtensions()
          返回已经加载的扩展点的名字。

一般应该调用getSupportedExtensions()方法获得扩展,这个方法会返回所有的扩展点。

 Set<String> getSupportedExtensions()
           
 boolean hasExtension(String name)
           
 void replaceExtension(String name, Class<?> clazz)
          Deprecated. 不推荐应用使用,一般只在测试时可以使用
 String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

getExtensionLoader

public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type)

getExtensionName

public String getExtensionName(T extensionInstance)

getExtensionName

public String getExtensionName(Class<?> extensionClass)

getActivateExtension

public List<T> getActivateExtension(URL url,
                                    String key)
This is equivalent to
     getActivateExtension(url, key, null);
 

Parameters:
url - url
key - url parameter key which used to get extension point names
Returns:
extension list which are activated.
See Also:
getActivateExtension(com.alibaba.dubbo.common.URL, String, String)

getActivateExtension

public List<T> getActivateExtension(URL url,
                                    String[] values)
This is equivalent to
     getActivateExtension(url, values, null);
 

Parameters:
url - url
values - extension point names
Returns:
extension list which are activated
See Also:
getActivateExtension(com.alibaba.dubbo.common.URL, String[], String)

getActivateExtension

public List<T> getActivateExtension(URL url,
                                    String key,
                                    String group)
This is equivalent to
     getActivateExtension(url, url.getParameter(key).split(","), null);
 

Parameters:
url - url
key - url parameter key which used to get extension point names
group - group
Returns:
extension list which are activated.
See Also:
getActivateExtension(com.alibaba.dubbo.common.URL, String[], String)

getActivateExtension

public List<T> getActivateExtension(URL url,
                                    String[] values,
                                    String group)
Get activate extensions.

Parameters:
url - url
values - extension point names
group - group
Returns:
extension list which are activated
See Also:
Activate

getLoadedExtension

public T getLoadedExtension(String name)
返回扩展点实例,如果没有指定的扩展点或是还没加载(即实例化)则返回null。注意:此方法不会触发扩展点的加载。

一般应该调用getExtension(String)方法获得扩展,这个方法会触发扩展点加载。

See Also:
getExtension(String)

getLoadedExtensions

public Set<String> getLoadedExtensions()
返回已经加载的扩展点的名字。

一般应该调用getSupportedExtensions()方法获得扩展,这个方法会返回所有的扩展点。

See Also:
getSupportedExtensions()

getExtension

public T getExtension(String name)
返回指定名字的扩展。如果指定名字的扩展不存在,则抛异常 IllegalStateException.

Parameters:
name -
Returns:

getDefaultExtension

public T getDefaultExtension()
返回缺省的扩展,如果没有设置则返回null


hasExtension

public boolean hasExtension(String name)

getSupportedExtensions

public Set<String> getSupportedExtensions()

getDefaultExtensionName

public String getDefaultExtensionName()
返回缺省的扩展点名,如果没有设置缺省则返回null


addExtension

public void addExtension(String name,
                         Class<?> clazz)
编程方式添加新扩展点。

Parameters:
name - 扩展点名
clazz - 扩展点类
Throws:
IllegalStateException - 要添加扩展点名已经存在。

replaceExtension

@Deprecated
public void replaceExtension(String name,
                                        Class<?> clazz)
Deprecated. 不推荐应用使用,一般只在测试时可以使用

编程方式添加替换已有扩展点。

Parameters:
name - 扩展点名
clazz - 扩展点类
Throws:
IllegalStateException - 要添加扩展点名已经存在。

getAdaptiveExtension

public T getAdaptiveExtension()

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2012–2017 Alibaba. All rights reserved.