dubbo container 相关

2016-05-24
private Map<String, Class<?>> loadExtensionClasses() {
        SPI defaultAnnotation = (SPI)this.type.getAnnotation(SPI.class);
        if(defaultAnnotation != null) {
            String extensionClasses = defaultAnnotation.value();
            if(extensionClasses != null && (extensionClasses = extensionClasses.trim()).length() > 0) {
                String[] names = NAME_SEPARATOR.split(extensionClasses);
                if(names.length > 1) {
                    throw new IllegalStateException("more than 1 default extension name on extension " + this.type.getName() + ": " + Arrays.toString(names));
                }

                if(names.length == 1) {
                    this.cachedDefaultName = names[0];
                }
            }
        }

        HashMap extensionClasses1 = new HashMap();
        this.loadFile(extensionClasses1, "META-INF/dubbo/internal/");
        this.loadFile(extensionClasses1, "META-INF/dubbo/");
        this.loadFile(extensionClasses1, "META-INF/services/");
        return extensionClasses1;
    }
private Class<?> createAdaptiveExtensionClass() {
        String code = createAdaptiveExtensionClassCode();
        ClassLoader classLoader = findClassLoader();
        com.alibaba.dubbo.common.compiler.Compiler compiler = 
            ExtensionLoader.getExtensionLoader(
            com.alibaba.dubbo.common.compiler.Compiler.class)
            .getAdaptiveExtension();
        return compiler.compile(code, classLoader);
    }
import com.alibaba.dubbo.common.extension.SPI;

/**
 * Compiler. (SPI, Singleton, ThreadSafe)
 * 
 * @author william.liangf
 */
@SPI("javassist")
public interface Compiler {

    /**
     * Compile java source code.
     * 
     * @param code Java source code
     * @param classLoader TODO
     * @return Compiled class
     */
    Class<?> compile(String code, ClassLoader classLoader);

}
Comments
Write a Comment