diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java b/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java index 156dca1d..7cc0055e 100644 --- a/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java +++ b/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java @@ -23,10 +23,13 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization; along with this program. If not, see <http://www.gnu.org/licenses/>. */ +import java.util.ArrayList; import java.util.Collection; +import java.util.List; import de.lmu.ifi.dbs.elki.logging.Logging; import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil; +import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException; import de.lmu.ifi.dbs.elki.utilities.optionhandling.InternalParameterizationErrors; import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException; import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GlobalParameterConstraint; @@ -43,12 +46,12 @@ public abstract class AbstractParameterization implements Parameterization { /** * Errors */ - java.util.Vector<ParameterException> errors = new java.util.Vector<ParameterException>(); + List<ParameterException> errors = new ArrayList<ParameterException>(); /** * The logger of the class. */ - private final static Logging logger = Logging.getLogger(AbstractParameterization.class); + private static final Logging LOG = Logging.getLogger(AbstractParameterization.class); @Override public Collection<ParameterException> getErrors() { @@ -70,11 +73,11 @@ public abstract class AbstractParameterization implements Parameterization { */ public synchronized void logAndClearReportedErrors() { for(ParameterException e : getErrors()) { - if(logger.isDebugging()) { - logger.warning(e.getMessage(), e); + if(LOG.isDebugging()) { + LOG.warning(e.getMessage(), e); } else { - logger.warning(e.getMessage()); + LOG.warning(e.getMessage()); } } clearErrors(); @@ -86,7 +89,7 @@ public abstract class AbstractParameterization implements Parameterization { public synchronized void clearErrors() { // Do NOT use errors.clear(), since we might have an error report // referencing the collection! - errors = new java.util.Vector<ParameterException>(); + errors = new ArrayList<ParameterException>(); } /** @@ -95,11 +98,11 @@ public abstract class AbstractParameterization implements Parameterization { * @throws RuntimeException if any error has occurred. */ // TODO: make a multi-exception class? - public void failOnErrors() throws RuntimeException { + public void failOnErrors() throws AbortException { final int numerror = getErrors().size(); if(numerror > 0) { logAndClearReportedErrors(); - throw new RuntimeException(numerror + " errors occurred during parameterization."); + throw new AbortException(numerror + " errors occurred during parameterization."); } } @@ -117,9 +120,9 @@ public abstract class AbstractParameterization implements Parameterization { } @Override - public final boolean grab(Parameter<?, ?> opt) { + public final boolean grab(Parameter<?> opt) { if(opt.isDefined()) { - logger.warning("Option " + opt.getName() + " is already set!"); + LOG.warning("Option " + opt.getName() + " is already set!"); } try { if(setValueForOption(opt)) { @@ -146,12 +149,15 @@ public abstract class AbstractParameterization implements Parameterization { * @throws ParameterException on assignment errors. */ @Override - public abstract boolean setValueForOption(Parameter<?, ?> opt) throws ParameterException; + public abstract boolean setValueForOption(Parameter<?> opt) throws ParameterException; - /** Upon destruction, report any errors that weren't handled yet. */ + /** Upon destruction, report any errors that weren't handled yet. + * + * @throws Throwable Errors */ @Override - public void finalize() { + public void finalize() throws Throwable { failOnErrors(); + super.finalize(); } @Override @@ -172,7 +178,7 @@ public abstract class AbstractParameterization implements Parameterization { return ClassGenericsUtil.tryInstantiate(r, c, this); } catch(Exception e) { - logger.exception(e); + LOG.exception(e); reportError(new InternalParameterizationErrors("Error instantiating internal class: "+c.getName(), e)); return null; } @@ -184,7 +190,7 @@ public abstract class AbstractParameterization implements Parameterization { return ClassGenericsUtil.tryInstantiate(c, c, this); } catch(Exception e) { - logger.exception(e); + LOG.exception(e); reportError(new InternalParameterizationErrors("Error instantiating internal class: "+c.getName(), e)); return null; } |