Search in sources :

Example 1 with TypeProvider

use of com.tencent.polaris.api.plugin.TypeProvider in project polaris-java by polarismesh.

the class SDKContext method initContextByConfig.

/**
 * 通过配置对象初始化SDK上下文
 *
 * @param config 配置对象
 * @return SDK上下文
 * @throws PolarisException 初始化过程的异常
 */
public static SDKContext initContextByConfig(Configuration config) throws PolarisException {
    try {
        ((ConfigurationImpl) config).setDefault();
        config.verify();
    } catch (IllegalArgumentException e) {
        throw new PolarisException(ErrorCode.INVALID_CONFIG, "fail to verify configuration", e);
    }
    ServiceLoader<TypeProvider> providers = ServiceLoader.load(TypeProvider.class);
    List<PluginType> types = new ArrayList<>();
    for (TypeProvider provider : providers) {
        types.addAll(provider.getTypes());
    }
    PluginManager manager = new PluginManager(types);
    ValueContext valueContext = new ValueContext();
    valueContext.setHost(parseHost(config));
    valueContext.setServerConnectorProtocol(parseServerConnectorProtocol(config));
    SDKContext initContext = new SDKContext(config, manager, valueContext);
    try {
        manager.initPlugins(initContext);
    } catch (Throwable e) {
        manager.destroyPlugins();
        if (e instanceof PolarisException) {
            throw e;
        }
        throw new PolarisException(ErrorCode.PLUGIN_ERROR, "plugin error", e);
    }
    return initContext;
}
Also used : PolarisException(com.tencent.polaris.api.exception.PolarisException) PluginManager(com.tencent.polaris.api.plugin.impl.PluginManager) ValueContext(com.tencent.polaris.api.plugin.common.ValueContext) ArrayList(java.util.ArrayList) TypeProvider(com.tencent.polaris.api.plugin.TypeProvider) ConfigurationImpl(com.tencent.polaris.factory.config.ConfigurationImpl) PluginType(com.tencent.polaris.api.plugin.PluginType)

Aggregations

PolarisException (com.tencent.polaris.api.exception.PolarisException)1 PluginType (com.tencent.polaris.api.plugin.PluginType)1 TypeProvider (com.tencent.polaris.api.plugin.TypeProvider)1 ValueContext (com.tencent.polaris.api.plugin.common.ValueContext)1 PluginManager (com.tencent.polaris.api.plugin.impl.PluginManager)1 ConfigurationImpl (com.tencent.polaris.factory.config.ConfigurationImpl)1 ArrayList (java.util.ArrayList)1