From 41bd2f399b754a0cba5dd64ce5f32191cfe9ea38 Mon Sep 17 00:00:00 2001 From: Omair Majid Date: Mon, 13 Dec 2010 17:28:01 -0500 Subject: add support for validating configuration 2010-12-13 Omair Majid * 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. --- .../jnlp/config/ConfiguratonValidator.java | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java (limited to 'netx/net/sourceforge/jnlp/config/ConfiguratonValidator.java') 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> incorrectEntries; + private List> unrecognizedEntries; + private Map> toValidate = null; + + private boolean validated = false; + + /** + * @param toValidate the settings to validate + */ + public ConfiguratonValidator(Map> 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>(); + unrecognizedEntries = new ArrayList>(); + + Map> knownGood = Defaults.getDefaults(); + + for (String key : toValidate.keySet()) { + // check for known incorrect settings + if (knownGood.containsKey(key)) { + Setting good = knownGood.get(key); + Setting unknown = toValidate.get(key); + ValueValidator checker = good.getValidator(); + if (checker != null) { + try { + checker.validate(unknown.getValue()); + } catch (IllegalArgumentException e) { + Setting strange = new Setting(unknown); + strange.setValue(unknown.getValue()); + incorrectEntries.add(strange); + } + } + } else { + // check for unknown settings + Setting strange = new Setting(toValidate.get(key)); + unrecognizedEntries.add(strange); + } + } + + validated = true; + } + + /** + * @return a list of settings which have incorrect values + */ + public List> getIncorrectSetting() { + if (!validated) { + throw new IllegalStateException(); + } + + return new ArrayList>(incorrectEntries); + } + + /** + * @return a list of settings which are not recognized + */ + public List> getUnrecognizedSetting() { + if (!validated) { + throw new IllegalStateException(); + } + return new ArrayList>(unrecognizedEntries); + } + +} -- cgit v1.2.3