package org.zstack.core.componentloader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by frank on 10/26/2015. */ public class PluginDSL { public static Map<Class, PluginDefinition> pluginDefinition = new HashMap<Class, PluginDefinition>(); static Map<Class, PluginDefinition> getPluginDefinition() { return pluginDefinition; } static void setPluginDefinition(Map<Class, PluginDefinition> pluginDefinition) { PluginDSL.pluginDefinition = pluginDefinition; } public static class ExtensionDefinition { Class interfaceClass; int order = 0; Map<String, String> attributes = new HashMap<String, String>(); public ExtensionDefinition extensionClass(Class extensionClass) { this.interfaceClass = extensionClass; return this; } public ExtensionDefinition order(int order) { this.order = order; return this; } public ExtensionDefinition attribute(String name, String value) { attributes.put(name, value); return this; } } public static class PluginDefinition { Class beanClass; List<ExtensionDefinition> extensions = new ArrayList<ExtensionDefinition>(); public PluginDefinition(Class beanClass) { this.beanClass = beanClass; pluginDefinition.put(beanClass, this); } public ExtensionDefinition newExtension() { ExtensionDefinition ext = new ExtensionDefinition(); extensions.add(ext); return ext; } } }