All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.plugin.extension.resources.PluginResourceResolverProcess Maven / Gradle / Ivy

There is a newer version: 1.6.8
Show newest version
package org.zodiac.plugin.extension.resources;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.bind.Bindable;
import org.springframework.util.ObjectUtils;
import org.zodiac.plugin.extension.resources.resolver.PluginResourceResolvers;
import org.zodiac.plugin.factory.PluginRegistryInfo;
import org.zodiac.plugin.factory.process.post.PluginPostProcessorExtend;
import org.zodiac.sdk.toolkit.model.OrderPriority;
import org.zodiac.sdk.toolkit.util.lang.ObjUtil;

import java.util.List;
import java.util.Set;

/**
 * 插件资源处理器。
 */
public class PluginResourceResolverProcess implements PluginPostProcessorExtend {

    private static final Logger LOGGER = LoggerFactory.getLogger(PluginResourceResolverProcess.class);
    private static final String KEY = "PluginResourceResolverProcess";

    PluginResourceResolverProcess() {}

    @Override
    public String key() {
        return KEY;
    }

    @Override
    public OrderPriority order() {
        return OrderPriority.getMiddlePriority();
    }

    @Override
    public void initialize() throws Exception {
    }

    @Override
    public synchronized void registry(List pluginRegistryInfos) throws Exception {
        for (PluginRegistryInfo pluginRegistryInfo : pluginRegistryInfos) {
            if (pluginRegistryInfo == null) {
                continue;
            }
            String pluginId = pluginRegistryInfo.getPluginWrapper().getPluginId();
            try {
                /*直接从配置文件获取, 后续版本移除从实现类中获取配置。*/
                Set locations = pluginRegistryInfo.getPluginBinder()
                    .bind(PropertyKey.STATIC_LOCATIONS, Bindable.setOf(String.class)).orElseGet(() -> null);
                if (ObjectUtils.isEmpty(locations)) {
                    StaticResourceConfig config = ObjUtil.getObjectByInterfaceClass(
                        pluginRegistryInfo.getConfigSingletons(), StaticResourceConfig.class);
                    if (config != null) {
                        locations = config.locations();
                    }
                }
                if (ObjectUtils.isEmpty(locations)) {
                    return;
                }
                PluginResourceResolvers.parse(pluginRegistryInfo, locations);
            } catch (Exception e) {
                LOGGER.error("Parse plugin '{}' static resource failure.", pluginId, e);
            }
        }
    }

    @Override
    public void unRegistry(List pluginRegistryInfos) throws Exception {
        for (PluginRegistryInfo pluginRegistryInfo : pluginRegistryInfos) {
            try {
                PluginResourceResolvers.remove(pluginRegistryInfo.getPluginWrapper().getPluginId());
            } catch (Exception e) {
                LOGGER.error("Remove plugin '{}' static resource failure.",
                    pluginRegistryInfo.getPluginWrapper().getPluginId(), e);
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy