summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/AbstractParameterization.java
diff options
context:
space:
mode:
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.java36
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;
}