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);
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);
}
}
}