public static ConfigurationDefinition parse(@NotNull String configurationName, ConfigurationDescriptor descriptor) throws InvalidPluginDescriptorException { if (descriptor == null) { return null; } if (configurationName==null) { throw new IllegalArgumentException("ConfigurationName must not be null"); } ConfigurationDefinition configurationDefinition = new ConfigurationDefinition(configurationName, descriptor.getNotes()); configurationDefinition.setConfigurationFormat(getConfigurationFormat(descriptor)); if (configurationDefinition.getConfigurationFormat() == RAW) { return configurationDefinition; } for (ConfigurationTemplateDescriptor templateDescriptor : descriptor.getTemplate()) { configurationDefinition.putTemplate(parseTemplate(templateDescriptor)); } ConfigurationTemplate defaultTemplate = initDefaultTemplate(configurationDefinition); configurationDefinition.putTemplate(defaultTemplate); Configuration defaultConfiguration = defaultTemplate.getConfiguration(); parseProperties(descriptor, defaultConfiguration, configurationDefinition); ConfigurationUtility.normalizeConfiguration(defaultConfiguration, configurationDefinition); return configurationDefinition; }
/** * This will populate the given configuration definition with a default template. * A default template will only be created if one or more properties are required * or have default values. If no property definition is required or has a default value, * the default template will remain <code>null</code> in the given config definition. * * Note that if the given configuration definition already has a default template defined * for it, this method is a no-op and will return immediately. * * @param configDef the configuration definition whose default template is to be created and set */ public static void initializeDefaultTemplate(ConfigurationDefinition configDef) { ConfigurationTemplate defaultTemplate = configDef.getDefaultTemplate(); if (defaultTemplate == null) { Configuration defaultConfig = createDefaultConfiguration(configDef); // not everything should have a default template - only stuff that has default values if (!defaultConfig.getProperties().isEmpty()) { defaultTemplate = new ConfigurationTemplate(ConfigurationTemplate.DEFAULT_TEMPLATE_NAME, ConfigurationTemplate.DEFAULT_TEMPLATE_NAME); defaultTemplate.setDefault(true); defaultTemplate.setConfiguration(defaultConfig); configDef.putTemplate(defaultTemplate); } } return; }