/* | |
* 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.extension; | |
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; | |
import com.alibaba.dubbo.common.URL; | |
/** | |
* 在{@link ExtensionLoader}生成Extension的Adaptive Instance时,为 | |
* {@link ExtensionLoader}提供信息。 | |
* | |
* @author ding.lid | |
* | |
* @see ExtensionLoader | |
* @see URL | |
*/ | |
@Documented | |
@Retention(RetentionPolicy.RUNTIME) | |
@Target({ ElementType.TYPE, ElementType.METHOD }) | |
public @interface Adaptive { | |
/** | |
* 从{@link URL}的Key名,对应的Value作为要Adapt成的Extension名。 | |
* <p> | |
* 如果{@link URL}这些Key都没有Value,使用 用 缺省的扩展(在接口的{@link SPI}中设定的值)。<br> | |
* 比如,<code>String[] {"key1", "key2"}</code>,表示 | |
* <ol> | |
* <li>先在URL上找key1的Value作为要Adapt成的Extension名; | |
* <li>key1没有Value,则使用key2的Value作为要Adapt成的Extension名。 | |
* <li>key2没有Value,使用缺省的扩展。 | |
* <li>如果没有设定缺省扩展,则方法调用会抛出{@link IllegalStateException}。 | |
* </ol> | |
* <p> | |
* 如果不设置则缺省使用Extension接口类名的点分隔小写字串。<br> | |
* 即对于Extension接口{@code com.alibaba.dubbo.xxx.YyyInvokerWrapper}的缺省值为 | |
* <code>String[] {"yyy.invoker.wrapper"}</code> | |
* | |
* @see SPI#value() | |
*/ | |
String[] value() default {}; | |
} |