| /*
|
| * 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; |
| |
| /** |
| * 在{@link ExtensionLoader}生成Extension的Adaptive Instance时,为{@link ExtensionLoader}提供信息。 |
| * |
| * @author ding.lid |
| * |
| * @see ExtensionLoader |
| * @see URL |
| * @see Extension |
| */ |
| @Documented |
| @Retention(RetentionPolicy.RUNTIME) |
| @Target({ElementType.TYPE, ElementType.METHOD}) |
| public @interface Adaptive { |
| |
| /** |
| * 从{@link URL}的Key名,对应的Value作为要Adapt成的Extension名。 |
| * <p> |
| * 如果{@link URL}这些Key都没有Value,使用 用 缺省的扩展(在接口的{@link Extension}中设定的值)。<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 Extension#value() |
| */ |
| String[] value() default {}; |
| |
| } |