diff options
author | Omair Majid <[email protected]> | 2010-12-13 17:28:01 -0500 |
---|---|---|
committer | Omair Majid <[email protected]> | 2010-12-13 17:28:01 -0500 |
commit | 41bd2f399b754a0cba5dd64ce5f32191cfe9ea38 (patch) | |
tree | e91c13e3cfb0922f317bc3ec5a6b14e7730354af /netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java | |
parent | bc761e95c6063aaf68e02f7346ad1e10953788da (diff) |
add support for validating configuration
2010-12-13 Omair Majid <[email protected]>
* netx/net/sourceforge/jnlp/config/ValueValidator.java: New file.
* netx/net/sourceforge/jnlp/config/BasicValueValidators.java: New
file. Provides methods to get some common validators.
* netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java: New
file. Provides methods to validate a configuration.
* netx/net/sourceforge/jnlp/runtime/DeploymentConfiguration.java:
Moved to config subpackage instead and split off into Setting.java,
DeploymentConfiguration.java and Defaults.java.
* netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java:
Renamed version of original DeploymentConfiguration.
(load): Delegate to load.
(load(boolean)): Load configuration and optionally fix any issues
found.
(checkAndFixConfiguration): New method. Validate all settings and
set them to default values if problems found.
* netx/net/sourceforge/jnlp/config/Setting.java: New file. Based on
ConfigValue which was originally a part of DeploymentConfiguration.
* netx/net/sourceforge/jnlp/config/Defaults.java: New file.
Contains the default configuration settings. Originally from
DeploymentConfiguration.java's loadDefaultProperties.
* netx/net/sourceforge/jnlp/resources/Messages.properties: Add new
messages.
* netx/net/sourceforge/jnlp/Launcher.java: Fix imports.
* netx/net/sourceforge/jnlp/SecurityDesc.java: Likewise.
* netx/net/sourceforge/jnlp/cache/CacheUtil.java: Likewise.
* netx/net/sourceforge/jnlp/controlpanel
/AdvancedProxySettingsDialog.java: Likewise
* netx/net/sourceforge/jnlp/controlpanel
/AdvancedProxySettingsPane.java: Likewise.
* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java: Likewise
* netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java:
Likewise.
* netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java:
Likewise.
* netx/net/sourceforge/jnlp/controlpanel/MiddleClickListener.java:
Likewise
* netx/net/sourceforge/jnlp/controlpanel/NetworkSettingsPanel.java:
Likewise.
* netx/net/sourceforge/jnlp/controlpanel/SecuritySettingsPanel.java:
Likewise.
* netx/net/sourceforge/jnlp/controlpanel
/TemporaryInternetFilesPanel.java:Likewise.
* netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java:
Likewise.
* netx/net/sourceforge/jnlp/runtime/JNLPProxySelector.java:
Likewise.
* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Likewise.
* netx/net/sourceforge/jnlp/security/KeyStores.java: Likewise.
* netx/net/sourceforge/jnlp/security/SecurityWarning.java: Likewise.
* netx/net/sourceforge/jnlp/services/ServiceUtil.java: Likewise.
* netx/net/sourceforge/jnlp/services/SingleInstanceLock.java:
Likewise.
* netx/net/sourceforge/jnlp/services/XBasicService.java: Likewise
* netx/net/sourceforge/jnlp/services/XPersistenceService.java:
Likewise.
* netx/net/sourceforge/jnlp/util/XDesktopEntry.java: Likewise.
* plugin/icedteanp/java/sun/applet/JavaConsole.java: Likewise.
* plugin/icedteanp/java/sun/applet/PluginMain.java: Likewise.
Diffstat (limited to 'netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java b/netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java new file mode 100644 index 0000000..2ec4c5b --- /dev/null +++ b/netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java @@ -0,0 +1,120 @@ +/* Validator.java + Copyright (C) 2010 Red Hat, Inc. + +This file is part of IcedTea. + +IcedTea is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License as published by +the Free Software Foundation, version 2. + +IcedTea is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with IcedTea; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. +*/ + +package net.sourceforge.jnlp.config; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Validates a DeploymentConfiguration by identifying settings with + * unrecognized names or incorrect values. + */ +public class ConfiguratonValidator { + + private List<Setting<String>> incorrectEntries; + private List<Setting<String>> unrecognizedEntries; + private Map<String, Setting<String>> toValidate = null; + + private boolean validated = false; + + /** + * @param toValidate the settings to validate + */ + public ConfiguratonValidator(Map<String, Setting<String>> toValidate) { + this.toValidate = toValidate; + } + + /** + * Validates the settings used in the constructor. Use + * {@link #getIncorrectSetting()} and {@link #getUnrecognizedSetting()} to + * get the list of incorrect or unrecognized settings. + */ + public void validate() { + incorrectEntries = new ArrayList<Setting<String>>(); + unrecognizedEntries = new ArrayList<Setting<String>>(); + + Map<String, Setting<String>> knownGood = Defaults.getDefaults(); + + for (String key : toValidate.keySet()) { + // check for known incorrect settings + if (knownGood.containsKey(key)) { + Setting<String> good = knownGood.get(key); + Setting<String> unknown = toValidate.get(key); + ValueValidator checker = good.getValidator(); + if (checker != null) { + try { + checker.validate(unknown.getValue()); + } catch (IllegalArgumentException e) { + Setting<String> strange = new Setting<String>(unknown); + strange.setValue(unknown.getValue()); + incorrectEntries.add(strange); + } + } + } else { + // check for unknown settings + Setting<String> strange = new Setting<String>(toValidate.get(key)); + unrecognizedEntries.add(strange); + } + } + + validated = true; + } + + /** + * @return a list of settings which have incorrect values + */ + public List<Setting<String>> getIncorrectSetting() { + if (!validated) { + throw new IllegalStateException(); + } + + return new ArrayList<Setting<String>>(incorrectEntries); + } + + /** + * @return a list of settings which are not recognized + */ + public List<Setting<String>> getUnrecognizedSetting() { + if (!validated) { + throw new IllegalStateException(); + } + return new ArrayList<Setting<String>>(unrecognizedEntries); + } + +} |