private void processOptions(Iterable<? extends ProvisioningOption> pluginOptions, Map<String, String> extraOptions, final Map<String, ProvisioningOption> recognizedOptions, final List<ProvisioningOption> overridenOptions) throws ProvisioningException { for(ProvisioningOption pluginOption : pluginOptions) { final String optionName = pluginOption.getName(); if(!options.containsKey(optionName)) { if(pluginOption.isRequired()) { throw new ProvisioningException(Errors.pluginOptionRequired(optionName)); } continue; } final ProvisioningOption existing = recognizedOptions.put(optionName, pluginOption); // options should probably not be shared between plugins but just in case make sure non-persistent option // doesn't override a persistent one if (existing != null && existing.isPersistent() && !pluginOption.isPersistent()) { recognizedOptions.put(existing.getName(), existing); } else if (pluginOption.isPersistent() || extraOptions.containsKey(optionName) && config.hasOption(optionName)) { overridenOptions.add(pluginOption); } } }
if(option.isPersistent()) { configBuilder.addOption(optionName, value); } else if (value == null) {