package org.zstack.core.componentloader; import org.zstack.utils.function.Function; import java.util.List; public interface PluginRegistry { List<PluginExtension> getExtensionByInterfaceName(String interfaceName); <T> List<T> getExtensionList(Class<T> clazz); <T, K> void saveExtensionAsMap(Class<T> clazz, Function<K, T> func); <T> T getExtensionFromMap(Object key, Class<T> clazz); <T, K> void saveExtensionListAsMap(Class<T> clazz, Function<K, T> func); <T> List getExtensionListFromMap(Object key, Class<T> clazz); void defineDynamicExtension(Class interfaceClass, Object instance); String PLUGIN_REGISTRY_BEAN_NAME = "zstack.PluginRegistry"; String PLUGIN_REGISTRYIMPL_PLUGINS_FIELD_NAME = "extensions"; }