Repository: opennlp
Updated Branches:
  refs/heads/master f74a86f4b -> 99cbf0da3


OPENNLP-1036: Use Object values in TrainingParameters instead of String. This 
closes apache/opennlp#176


Project: http://git-wip-us.apache.org/repos/asf/opennlp/repo
Commit: http://git-wip-us.apache.org/repos/asf/opennlp/commit/99cbf0da
Tree: http://git-wip-us.apache.org/repos/asf/opennlp/tree/99cbf0da
Diff: http://git-wip-us.apache.org/repos/asf/opennlp/diff/99cbf0da

Branch: refs/heads/master
Commit: 99cbf0da308d532eb96094855e74e718b6ae497a
Parents: f74a86f
Author: koji <[email protected]>
Authored: Sat Apr 22 00:40:44 2017 +0900
Committer: koji <[email protected]>
Committed: Sat Apr 22 00:40:44 2017 +0900

----------------------------------------------------------------------
 .../opennlp/tools/ml/AbstractEventTrainer.java  |   4 +-
 .../opennlp/tools/ml/maxent/GISTrainer.java     |   4 +-
 .../SimplePerceptronSequenceTrainer.java        |   4 +-
 .../opennlp/tools/namefind/NameFinderME.java    |   4 +-
 .../tools/parser/AbstractBottomUpParser.java    |  12 +-
 .../opennlp/tools/parser/chunking/Parser.java   |   5 +-
 .../opennlp/tools/parser/treeinsert/Parser.java |  20 +-
 .../opennlp/tools/util/TrainingParameters.java  | 345 ++++++++++++++++---
 .../opennlp/tools/util/model/ModelUtil.java     |   4 +-
 .../opennlp/tools/chunker/ChunkerMETest.java    |   8 +-
 .../tools/cmdline/TokenNameFinderToolTest.java  |   4 +-
 .../tools/doccat/DocumentCategorizerMETest.java |   8 +-
 .../tools/doccat/DocumentCategorizerNBTest.java |   4 +-
 .../opennlp/tools/eval/ArvoresDeitadasEval.java |   6 +-
 .../opennlp/tools/eval/Conll00ChunkerEval.java  |   2 +-
 .../test/java/opennlp/tools/eval/EvalUtil.java  |   6 +-
 .../tools/eval/OntoNotes4ParserEval.java        |   8 +-
 .../tools/lemmatizer/LemmatizerMETest.java      |   8 +-
 .../opennlp/tools/ml/TrainerFactoryTest.java    |   4 +-
 .../tools/ml/maxent/GISIndexingTest.java        |  32 +-
 .../tools/ml/maxent/MaxentPrepAttachTest.java   |   6 +-
 .../tools/ml/maxent/RealValueModelTest.java     |   2 +-
 .../tools/ml/maxent/ScaleDoesntMatterTest.java  |   2 +-
 .../maxent/io/RealValueFileEventStreamTest.java |   2 +-
 .../quasinewton/NegLogLikelihoodTest.java       |   2 +-
 .../ml/maxent/quasinewton/QNPrepAttachTest.java |  24 +-
 .../ml/maxent/quasinewton/QNTrainerTest.java    |   2 +-
 .../naivebayes/NaiveBayesCorrectnessTest.java   |   4 +-
 .../NaiveBayesModelReadWriteTest.java           |   4 +-
 .../ml/naivebayes/NaiveBayesPrepAttachTest.java |   8 +-
 .../NaiveBayesSerializedCorrectnessTest.java    |   4 +-
 .../ml/perceptron/PerceptronPrepAttachTest.java |  34 +-
 .../tools/namefind/NameFinderMETest.java        |  28 +-
 .../TokenNameFinderCrossValidatorTest.java      |  12 +-
 .../opennlp/tools/postag/POSTaggerMETest.java   |   8 +-
 .../sentdetect/SentenceDetectorMETest.java      |   8 +-
 .../opennlp/tools/tokenize/TokenizerMETest.java |   4 +-
 .../tools/tokenize/TokenizerTestUtil.java       |   8 +-
 .../tools/util/TrainingParametersTest.java      |   8 +-
 39 files changed, 442 insertions(+), 220 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventTrainer.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventTrainer.java 
b/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventTrainer.java
index bb11aaa..330307a 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventTrainer.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/ml/AbstractEventTrainer.java
@@ -52,10 +52,10 @@ public abstract class AbstractEventTrainer extends 
AbstractTrainer implements Ev
 
   public DataIndexer getDataIndexer(ObjectStream<Event> events) throws 
IOException {
 
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, 
Boolean.toString(isSortAndMerge()));
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, isSortAndMerge());
     // If the cutoff was set, don't overwrite the value.
     if (trainingParameters.getIntParameter(CUTOFF_PARAM, -1) == -1) {
-      trainingParameters.put(CUTOFF_PARAM, "5");
+      trainingParameters.put(CUTOFF_PARAM, 5);
     }
     
     DataIndexer indexer = 
DataIndexerFactory.getDataIndexer(trainingParameters, reportMap);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISTrainer.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISTrainer.java 
b/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISTrainer.java
index 61ddb47..33a6c16 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISTrainer.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/ml/maxent/GISTrainer.java
@@ -246,8 +246,8 @@ public class GISTrainer extends AbstractEventTrainer {
                              int cutoff) throws IOException {
     DataIndexer indexer = new OnePassDataIndexer();
     TrainingParameters indexingParameters = new TrainingParameters();
-    indexingParameters.put(GISTrainer.CUTOFF_PARAM, Integer.toString(cutoff));
-    indexingParameters.put(GISTrainer.ITERATIONS_PARAM, 
Integer.toString(iterations));
+    indexingParameters.put(GISTrainer.CUTOFF_PARAM, cutoff);
+    indexingParameters.put(GISTrainer.ITERATIONS_PARAM, iterations);
     Map<String, String> reportMap = new HashMap<>();
     indexer.init(indexingParameters, reportMap);
     indexer.index(eventStream);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSequenceTrainer.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSequenceTrainer.java
 
b/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSequenceTrainer.java
index 7a50055..5fc4bbe 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSequenceTrainer.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/ml/perceptron/SimplePerceptronSequenceTrainer.java
@@ -111,8 +111,8 @@ public class SimplePerceptronSequenceTrainer extends 
AbstractEventModelSequenceT
     this.iterations = iterations;
     this.sequenceStream = sequenceStream;
 
-    trainingParameters.put(AbstractDataIndexer.CUTOFF_PARAM, 
Integer.toString(cutoff));
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, 
Boolean.toString(false));
+    trainingParameters.put(AbstractDataIndexer.CUTOFF_PARAM, cutoff);
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);
     DataIndexer di = new OnePassDataIndexer();
     di.init(trainingParameters,reportMap);
     di.index(new SequenceStreamEventStream(sequenceStream));

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java 
b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
index 4cd8ebc..12ce701 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/namefind/NameFinderME.java
@@ -222,8 +222,8 @@ public class NameFinderME implements TokenNameFinder {
           TokenNameFinderFactory factory) throws IOException {
 
     trainParams.putIfAbsent(TrainingParameters.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.putIfAbsent(TrainingParameters.CUTOFF_PARAM, "0");
-    trainParams.putIfAbsent(TrainingParameters.ITERATIONS_PARAM, "300");
+    trainParams.putIfAbsent(TrainingParameters.CUTOFF_PARAM, 0);
+    trainParams.putIfAbsent(TrainingParameters.ITERATIONS_PARAM, 300);
 
     int beamSize = trainParams.getIntParameter(BeamSearch.BEAM_SIZE_PARAMETER,
             NameFinderME.DEFAULT_BEAM_SIZE);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
index a553328..7d7c1b0 100644
--- 
a/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
+++ 
b/opennlp-tools/src/main/java/opennlp/tools/parser/AbstractBottomUpParser.java
@@ -528,15 +528,7 @@ public abstract class AbstractBottomUpParser implements 
Parser {
   public static Dictionary buildDictionary(ObjectStream<Parse> data, HeadRules 
rules,
       TrainingParameters params) throws IOException {
 
-    int cutoff = 5;
-
-    String cutoffString = params.getSettings("dict").
-        get(TrainingParameters.CUTOFF_PARAM);
-
-    if (cutoffString != null) {
-      // TODO: Maybe throw illegal argument exception if not parse able
-      cutoff = Integer.parseInt(cutoffString);
-    }
+    int cutoff = params.getIntParameter("dict", 
TrainingParameters.CUTOFF_PARAM, 5);
 
     NGramModel mdict = new NGramModel();
     Parse p;
@@ -621,7 +613,7 @@ public abstract class AbstractBottomUpParser implements 
Parser {
       throws IOException {
 
     TrainingParameters params = new TrainingParameters();
-    params.put("dict", TrainingParameters.CUTOFF_PARAM, 
Integer.toString(cutoff));
+    params.put("dict", TrainingParameters.CUTOFF_PARAM, cutoff);
 
     return buildDictionary(data, rules, params);
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/Parser.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/Parser.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/Parser.java
index 53a8cba..f2079e9 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/Parser.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/parser/chunking/Parser.java
@@ -293,9 +293,8 @@ public class Parser extends AbstractBottomUpParser {
     // tag
     TrainingParameters posTaggerParams = mlParams.getParameters("tagger");
 
-    if 
(!posTaggerParams.getSettings().containsKey(BeamSearch.BEAM_SIZE_PARAMETER)) {
-      mlParams.put("tagger", BeamSearch.BEAM_SIZE_PARAMETER,
-          Integer.toString(10));
+    if 
(!posTaggerParams.getObjectSettings().containsKey(BeamSearch.BEAM_SIZE_PARAMETER))
 {
+      mlParams.put("tagger", BeamSearch.BEAM_SIZE_PARAMETER, 10);
     }
 
     POSModel posModel = POSTaggerME.train(languageCode, new 
PosSampleStream(parseSamples),

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/Parser.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/Parser.java 
b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/Parser.java
index 527bdb6..f18fbf7 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/Parser.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/parser/treeinsert/Parser.java
@@ -514,16 +514,16 @@ public class Parser extends AbstractBottomUpParser {
       throws IOException {
 
     TrainingParameters params = new TrainingParameters();
-    params.put("dict", TrainingParameters.CUTOFF_PARAM, Integer.toString(cut));
-
-    params.put("tagger", TrainingParameters.CUTOFF_PARAM, 
Integer.toString(cut));
-    params.put("tagger", TrainingParameters.ITERATIONS_PARAM, 
Integer.toString(iterations));
-    params.put("chunker", TrainingParameters.CUTOFF_PARAM, 
Integer.toString(cut));
-    params.put("chunker", TrainingParameters.ITERATIONS_PARAM, 
Integer.toString(iterations));
-    params.put("check", TrainingParameters.CUTOFF_PARAM, 
Integer.toString(cut));
-    params.put("check", TrainingParameters.ITERATIONS_PARAM, 
Integer.toString(iterations));
-    params.put("build", TrainingParameters.CUTOFF_PARAM, 
Integer.toString(cut));
-    params.put("build", TrainingParameters.ITERATIONS_PARAM, 
Integer.toString(iterations));
+    params.put("dict", TrainingParameters.CUTOFF_PARAM, cut);
+
+    params.put("tagger", TrainingParameters.CUTOFF_PARAM, cut);
+    params.put("tagger", TrainingParameters.ITERATIONS_PARAM, iterations);
+    params.put("chunker", TrainingParameters.CUTOFF_PARAM, cut);
+    params.put("chunker", TrainingParameters.ITERATIONS_PARAM, iterations);
+    params.put("check", TrainingParameters.CUTOFF_PARAM, cut);
+    params.put("check", TrainingParameters.ITERATIONS_PARAM, iterations);
+    params.put("build", TrainingParameters.CUTOFF_PARAM, cut);
+    params.put("build", TrainingParameters.ITERATIONS_PARAM, iterations);
 
     return train(languageCode, parseSamples, rules, params);
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/util/TrainingParameters.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/TrainingParameters.java 
b/opennlp-tools/src/main/java/opennlp/tools/util/TrainingParameters.java
index 3f21623..08a1373 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/TrainingParameters.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/TrainingParameters.java
@@ -37,7 +37,7 @@ public class TrainingParameters {
   public static final String CUTOFF_PARAM = "Cutoff";
   public static final String THREADS_PARAM = "Threads";
 
-  private Map<String, String> parameters = new HashMap<>();
+  private Map<String, Object> parameters = new HashMap<>();
 
   public TrainingParameters() {
   }
@@ -45,18 +45,52 @@ public class TrainingParameters {
   public TrainingParameters(TrainingParameters trainingParameters) {
     this.parameters.putAll(trainingParameters.parameters);
   }
-  
+
+  /**
+   *
+   * @deprecated
+   */
   public TrainingParameters(Map<String,String> map) {
+    //parameters.putAll(map);
+    // try to respect their original type...
+    for (String key: map.keySet()) {
+      String value = map.get(key);
+      try {
+        int intValue = Integer.parseInt(value);
+        parameters.put(key, intValue);
+      }
+      catch (NumberFormatException ei) {
+        try {
+          double doubleValue = Double.parseDouble(value);
+          parameters.put(key, doubleValue);
+        }
+        catch (NumberFormatException ed) {
+          // Because Boolean.parseBoolean() doesn't throw NFE, it just checks 
the value is either
+          // true or yes. So let's see their letters here.
+          if (value.toLowerCase().equals("true") || 
value.toLowerCase().equals("false")) {
+            parameters.put(key, Boolean.parseBoolean(value));
+          }
+          else {
+            parameters.put(key, value);
+          }
+        }
+      }
+    }
+  }
+
+  /* TODO: Once we throw Map<String,String> away, have this constructor to be 
uncommented
+  public TrainingParameters(Map<String,Object> map) {
     parameters.putAll(map);
   }
-  
+  */
+
   public TrainingParameters(InputStream in) throws IOException {
 
     Properties properties = new Properties();
     properties.load(in);
 
     for (Map.Entry<Object, Object> entry : properties.entrySet()) {
-      parameters.put((String) entry.getKey(), (String) entry.getValue());
+      parameters.put((String) entry.getKey(), entry.getValue());
     }
   }
 
@@ -66,7 +100,7 @@ public class TrainingParameters {
    * @return the name or null if not set.
    */
   public String algorithm(String namespace) {
-    return parameters.get(namespace + "." + ALGORITHM_PARAM);
+    return (String)parameters.get(getKey(namespace, ALGORITHM_PARAM));
   }
 
   /**
@@ -75,7 +109,7 @@ public class TrainingParameters {
    * @return the name or null if not set.
    */
   public String algorithm() {
-    return parameters.get(ALGORITHM_PARAM);
+    return (String)parameters.get(ALGORITHM_PARAM);
   }
 
   /**
@@ -84,17 +118,74 @@ public class TrainingParameters {
    * @param namespace
    *
    * @return a parameter map which can be passed to the train and validate 
methods.
+   *
+   * @deprecated use {@link #getObjectSettings(String)} instead
    */
   public Map<String, String> getSettings(String namespace) {
 
     Map<String, String> trainingParams = new HashMap<>();
+    String prefix = namespace + ".";
 
-    for (Map.Entry<String, String> entry : parameters.entrySet()) {
+    for (Map.Entry<String, Object> entry : parameters.entrySet()) {
       String key = entry.getKey();
 
       if (namespace != null) {
-        String prefix = namespace + ".";
+        if (key.startsWith(prefix))  {
+          trainingParams.put(key.substring(prefix.length()), 
getStringValue(entry.getValue()));
+        }
+      }
+      else {
+        if (!key.contains(".")) {
+          trainingParams.put(key, getStringValue(entry.getValue()));
+        }
+      }
+    }
+
+    return Collections.unmodifiableMap(trainingParams);
+  }
+
+  private static String getStringValue(Object value) {
+    if (value instanceof Integer) {
+      return Integer.toString((Integer)value);
+    }
+    else if (value instanceof Double) {
+      return Double.toString((Double)value);
+    }
+    else if (value instanceof Boolean) {
+      return Boolean.toString((Boolean)value);
+    }
+    else {
+      return (String)value;
+    }
+  }
+
+  /**
+   * Retrieves all parameters without a name space.
+   *
+   * @return the settings map
+   *
+   * @deprecated use {@link #getObjectSettings()} instead
+   */
+  public Map<String, String> getSettings() {
+    return getSettings(null);
+  }
+
+  /**
+   * Retrieves a map with the training parameters which have the passed name 
space.
+   *
+   * @param namespace
+   *
+   * @return a parameter map which can be passed to the train and validate 
methods.
+   */
+  public Map<String, Object> getObjectSettings(String namespace) {
+
+    Map<String, Object> trainingParams = new HashMap<>();
+    String prefix = namespace + ".";
 
+    for (Map.Entry<String, Object> entry : parameters.entrySet()) {
+      String key = entry.getKey();
+
+      if (namespace != null) {
         if (key.startsWith(prefix))  {
           trainingParams.put(key.substring(prefix.length()), entry.getValue());
         }
@@ -114,116 +205,256 @@ public class TrainingParameters {
    *
    * @return the settings map
    */
-  public Map<String, String> getSettings() {
-    return getSettings(null);
+  public Map<String, Object> getObjectSettings() {
+    return getObjectSettings(null);
   }
 
   // reduces the params to contain only the params in the name space
   public TrainingParameters getParameters(String namespace) {
 
     TrainingParameters params = new TrainingParameters();
+    Map<String, Object> settings = getObjectSettings(namespace);
 
-    for (Map.Entry<String, String> entry : getSettings(namespace).entrySet()) {
-      params.put(entry.getKey(), entry.getValue());
+    for (String key: settings.keySet()) {
+      Object value = settings.get(key);
+      if (value instanceof Integer) {
+        params.put(key, (Integer)value);
+      }
+      else if (value instanceof Double) {
+        params.put(key, (Double)value);
+      }
+      else if (value instanceof Boolean) {
+        params.put(key, (Boolean)value);
+      }
+      else {
+        params.put(key, (String)value);
+      }
     }
 
     return params;
   }
 
   public void putIfAbsent(String namespace, String key, String value) {
-    if (namespace == null) {
-      parameters.putIfAbsent(key, value);
-    }
-    else {
-      parameters.putIfAbsent(namespace + "." + key, value);
-    }
+    parameters.putIfAbsent(getKey(namespace, key), value);
   }
 
   public void putIfAbsent(String key, String value) {
     putIfAbsent(null, key, value);
   }
 
-  public void put(String namespace, String key, String value) {
+  public void putIfAbsent(String namespace, String key, int value) {
+    parameters.putIfAbsent(getKey(namespace, key), value);
+  }
 
-    if (namespace == null) {
-      parameters.put(key, value);
-    }
-    else {
-      parameters.put(namespace + "." + key, value);
-    }
+  public void putIfAbsent(String key, int value) {
+    putIfAbsent(null, key, value);
+  }
+
+  public void putIfAbsent(String namespace, String key, double value) {
+    parameters.putIfAbsent(getKey(namespace, key), value);
+  }
+
+  public void putIfAbsent(String key, double value) {
+    putIfAbsent(null, key, value);
+  }
+
+  public void putIfAbsent(String namespace, String key, boolean value) {
+    parameters.putIfAbsent(getKey(namespace, key), value);
+  }
+
+  public void putIfAbsent(String key, boolean value) {
+    putIfAbsent(null, key, value);
+  }
+
+  public void put(String namespace, String key, String value) {
+    parameters.put(getKey(namespace, key), value);
   }
 
   public void put(String key, String value) {
     put(null, key, value);
   }
 
+  public void put(String namespace, String key, int value) {
+    parameters.put(getKey(namespace, key), value);
+  }
+
+  public void put(String key, int value) {
+    put(null, key, value);
+  }
+
+  public void put(String namespace, String key, double value) {
+    parameters.put(getKey(namespace, key), value);
+  }
+
+  public void put(String key, double value) {
+    put(null, key, value);
+  }
+
+  public void put(String namespace, String key, boolean value) {
+    parameters.put(getKey(namespace, key), value);
+  }
+
+  public void put(String key, boolean value) {
+    put(null, key, value);
+  }
+
   public void serialize(OutputStream out) throws IOException {
     Properties properties = new Properties();
 
-    for (Map.Entry<String, String> entry : parameters.entrySet()) {
+    for (Map.Entry<String, Object> entry: parameters.entrySet()) {
       properties.put(entry.getKey(), entry.getValue());
     }
 
     properties.store(out, null);
   }
 
+  /**
+   * get a String parameter
+   * @param key
+   * @param defaultValue
+   * @return
+   * @throws {@link java.lang.ClassCastException} can be thrown if the value 
is not {@link String}
+   */
   public String getStringParameter(String key, String defaultValue) {
-    return parameters.getOrDefault(key, defaultValue);
+    return getStringParameter(null, key, defaultValue);
   }
-  
+
+  /**
+   * get a String parameter in the specified namespace
+   * @param namespace
+   * @param key
+   * @param defaultValue
+   * @return
+   * @throws {@link java.lang.ClassCastException} can be thrown if the value 
is not {@link String}
+   */
   public String getStringParameter(String namespace, String key, String 
defaultValue) {
-    if (namespace == null) {
-      return getStringParameter(key, defaultValue);
+    Object value = parameters.get(getKey(namespace, key));
+    if (value == null) {
+      return defaultValue;
+    }
+    else {
+      return (String)value;
     }
-    return parameters.getOrDefault(namespace + "." + key, defaultValue);
   }
-  
+
+  /**
+   * get an Integer parameter
+   * @param key
+   * @param defaultValue
+   * @return
+   */
   public int getIntParameter(String key, int defaultValue) {
-    String value = parameters.getOrDefault(key, 
Integer.toString(defaultValue));
-    return Integer.parseInt(value);
+    return getIntParameter(null, key, defaultValue);
   }
-  
+
+  /**
+   * get an Integer parameter in the specified namespace
+   * @param namespace
+   * @param key
+   * @param defaultValue
+   * @return
+   */
   public int getIntParameter(String namespace, String key, int defaultValue) {
-    if (namespace == null) {
-      return getIntParameter(key, defaultValue);
+    Object value = parameters.get(getKey(namespace, key));
+    if (value == null) {
+      return defaultValue;
+    }
+    else {
+      // TODO: We have this try-catch for back-compat reason. After removing 
deprecated flag,
+      // we can remove try-catch block and just return (Integer)value;
+      try {
+        return (Integer) value;
+      }
+      catch (ClassCastException e) {
+        return Integer.parseInt((String)value);
+      }
     }
-    String value = parameters.getOrDefault(namespace + "." + key, 
Integer.toString(defaultValue));
-    return Integer.parseInt(value);
   }
-  
+
+  /**
+   * get a Double parameter
+   * @param key
+   * @param defaultValue
+   * @return
+   */
   public double getDoubleParameter(String key, double defaultValue) {
-    String value = parameters.getOrDefault(key, Double.toString(defaultValue));
-    return Double.parseDouble(value);
+    return getDoubleParameter(null, key, defaultValue);
   }
-  
+
+  /**
+   * get a Double parameter in the specified namespace
+   * @param namespace
+   * @param key
+   * @param defaultValue
+   * @return
+   */
   public double getDoubleParameter(String namespace, String key, double 
defaultValue) {
-    if (namespace == null) {
-      return getDoubleParameter(key, defaultValue);
+    Object value = parameters.get(getKey(namespace, key));
+    if (value == null) {
+      return defaultValue;
+    }
+    else {
+      // TODO: We have this try-catch for back-compat reason. After removing 
deprecated flag,
+      // we can remove try-catch block and just return (Double)value;
+      try {
+        return (Double) value;
+      }
+      catch (ClassCastException e) {
+        return Double.parseDouble((String)value);
+      }
     }
-    String value = parameters.getOrDefault(namespace + "." + key, 
Double.toString(defaultValue));
-    return Double.parseDouble(value);
   }
-  
+
+  /**
+   * get a Boolean parameter
+   * @param key
+   * @param defaultValue
+   * @return
+   */
   public boolean getBooleanParameter(String key, boolean defaultValue) {
-    String value = parameters.getOrDefault(key, 
Boolean.toString(defaultValue));
-    return Boolean.parseBoolean(value);
+    return getBooleanParameter(null, key, defaultValue);
   }
-  
+
+  /**
+   * get a Boolean parameter in the specified namespace
+   * @param namespace
+   * @param key
+   * @param defaultValue
+   * @return
+   */
   public boolean getBooleanParameter(String namespace, String key, boolean 
defaultValue) {
-    if (namespace == null) {
-      return getBooleanParameter(key, defaultValue);
+    Object value = parameters.get(getKey(namespace, key));
+    if (value == null) {
+      return defaultValue;
+    }
+    else {
+      // TODO: We have this try-catch for back-compat reason. After removing 
deprecated flag,
+      // we can remove try-catch block and just return (Boolean)value;
+      try {
+        return (Boolean) value;
+      }
+      catch (ClassCastException e) {
+        return Boolean.parseBoolean((String)value);
+      }
     }
-    String value = parameters.getOrDefault(namespace + "." + key, 
Boolean.toString(defaultValue));
-    return Boolean.parseBoolean(value);
   }
   
   public static TrainingParameters defaultParams() {
     TrainingParameters mlParams = new TrainingParameters();
     mlParams.put(TrainingParameters.ALGORITHM_PARAM, "MAXENT");
     mlParams.put(TrainingParameters.TRAINER_TYPE_PARAM, 
EventTrainer.EVENT_VALUE);
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(100));
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(5));
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     return mlParams;
   }
+
+  static String getKey(String namespace, String key) {
+    if (namespace == null) {
+      return key;
+    }
+    else {
+      return namespace + "." + key;
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelUtil.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelUtil.java 
b/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelUtil.java
index bcba6ea..fb84201 100644
--- a/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelUtil.java
+++ b/opennlp-tools/src/main/java/opennlp/tools/util/model/ModelUtil.java
@@ -142,8 +142,8 @@ public final class ModelUtil {
   public static TrainingParameters createDefaultTrainingParameters() {
     TrainingParameters mlParams = new TrainingParameters();
     mlParams.put(TrainingParameters.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE);
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(100));
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(5));
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     return mlParams;
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerMETest.java 
b/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerMETest.java
index facb408..4922ce9 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/chunker/ChunkerMETest.java
@@ -75,8 +75,8 @@ public class ChunkerMETest {
         new PlainTextByLineStream(in, StandardCharsets.UTF_8));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     ChunkerModel chunkerModel = ChunkerME.train("en", sampleStream, params, 
new ChunkerFactory());
 
@@ -140,8 +140,8 @@ public class ChunkerMETest {
         new PlainTextByLineStream(in, StandardCharsets.UTF_8));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, "70");
-    params.put(TrainingParameters.CUTOFF_PARAM, "1");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     ChunkerME.train("en", sampleStream, params, new ChunkerFactory());
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.java
index 3ade0d5..ba02e50 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/cmdline/TokenNameFinderToolTest.java
@@ -104,8 +104,8 @@ public class TokenNameFinderToolTest {
     ObjectStream<NameSample> sampleStream = new 
NameSampleDataStream(lineStream);
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
     
     TokenNameFinderModel model;
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.java
index 391125e..5e8ddaf 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerMETest.java
@@ -43,8 +43,8 @@ public class DocumentCategorizerMETest {
         new DocumentSample("0", new String[]{"x", "y", "z", "7", "8"}));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "0");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 0);
 
     DoccatModel model = DocumentCategorizerME.train("x-unspecified", samples,
             params, new DoccatFactory());
@@ -70,8 +70,8 @@ public class DocumentCategorizerMETest {
         new DocumentSample("1", new String[]{"a", "b", "c"}));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "0");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 0);
 
     DocumentCategorizerME.train("x-unspecified", samples,
         params, new DoccatFactory());

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.java
index 0847690..1c96a36 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/doccat/DocumentCategorizerNBTest.java
@@ -44,8 +44,8 @@ public class DocumentCategorizerNBTest {
         new DocumentSample("0", new String[]{"x", "y", "z", "7", "8"}));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "0");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 0);
     params.put(AbstractTrainer.ALGORITHM_PARAM, 
NaiveBayesTrainer.NAIVE_BAYES_VALUE);
 
     DoccatModel model = DocumentCategorizerME.train("x-unspecified", samples,

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/eval/ArvoresDeitadasEval.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/eval/ArvoresDeitadasEval.java 
b/opennlp-tools/src/test/java/opennlp/tools/eval/ArvoresDeitadasEval.java
index ca62c5b..7e55165 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/eval/ArvoresDeitadasEval.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/eval/ArvoresDeitadasEval.java
@@ -173,7 +173,7 @@ public class ArvoresDeitadasEval {
   @Test
   public void evalPortugueseTokenizerMaxentQnMultipleThreads() throws 
IOException {
     TrainingParameters params = EvalUtil.createMaxentQnParams();
-    params.put("Threads", "4");
+    params.put("Threads", 4);
     tokenizerCrossEval(params, 0.9996017148748251d);
   }
 
@@ -192,7 +192,7 @@ public class ArvoresDeitadasEval {
   @Test
   public void evalPortugueseChunkerGisMultipleThreads() throws IOException {
     TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
-    params.put("Threads", "4");
+    params.put("Threads", 4);
     chunkerCrossEval(params, 0.9573860781121228d);
   }
 
@@ -205,7 +205,7 @@ public class ArvoresDeitadasEval {
   @Test
   public void evalPortugueseChunkerQnMultipleThreads() throws IOException {
     TrainingParameters params = EvalUtil.createMaxentQnParams();
-    params.put("Threads", "4");
+    params.put("Threads", 4);
 
     // NOTE: Should be the same as without multiple threads!!!
     chunkerCrossEval(params, 0.9647304571382662);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/eval/Conll00ChunkerEval.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/eval/Conll00ChunkerEval.java 
b/opennlp-tools/src/test/java/opennlp/tools/eval/Conll00ChunkerEval.java
index 7e6102e..8ac90d7 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/eval/Conll00ChunkerEval.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/eval/Conll00ChunkerEval.java
@@ -90,7 +90,7 @@ public class Conll00ChunkerEval {
   @Test
   public void evalEnglishMaxentQn() throws IOException {
     TrainingParameters params = EvalUtil.createMaxentQnParams();
-    params.put("Threads", "4");
+    params.put("Threads", 4);
     ChunkerModel maxentModel = train(new File(EvalUtil.getOpennlpDataDir(),
         "conll00/train.txt"), params);
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/eval/EvalUtil.java
----------------------------------------------------------------------
diff --git a/opennlp-tools/src/test/java/opennlp/tools/eval/EvalUtil.java 
b/opennlp-tools/src/test/java/opennlp/tools/eval/EvalUtil.java
index 608e474..45f2471 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/eval/EvalUtil.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/eval/EvalUtil.java
@@ -31,7 +31,7 @@ public class EvalUtil {
     TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
     params.put(TrainingParameters.ALGORITHM_PARAM,
         PerceptronTrainer.PERCEPTRON_VALUE);
-    params.put(TrainingParameters.CUTOFF_PARAM, "0");
+    params.put(TrainingParameters.CUTOFF_PARAM, 0);
     return params;
   }
 
@@ -39,7 +39,7 @@ public class EvalUtil {
     TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
     params.put(TrainingParameters.ALGORITHM_PARAM,
         QNTrainer.MAXENT_QN_VALUE);
-    params.put(TrainingParameters.CUTOFF_PARAM, "0");
+    params.put(TrainingParameters.CUTOFF_PARAM, 0);
     return params;
   }
 
@@ -47,7 +47,7 @@ public class EvalUtil {
     TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
     params.put(TrainingParameters.ALGORITHM_PARAM,
         NaiveBayesTrainer.NAIVE_BAYES_VALUE);
-    params.put(TrainingParameters.CUTOFF_PARAM, "5");
+    params.put(TrainingParameters.CUTOFF_PARAM, 5);
     return params;
   }
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4ParserEval.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4ParserEval.java 
b/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4ParserEval.java
index 68d49fc..2182957 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4ParserEval.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/eval/OntoNotes4ParserEval.java
@@ -75,10 +75,10 @@ public class OntoNotes4ParserEval {
     }
 
     TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
-    params.put("build.Threads", "4");
-    params.put("tagger.Threads", "4");
-    params.put("chunker.Threads", "4");
-    params.put("check.Threads", "4");
+    params.put("build.Threads", 4);
+    params.put("tagger.Threads", 4);
+    params.put("chunker.Threads", 4);
+    params.put("check.Threads", 4);
 
 
     crossEval(params, headRules, 0.937987617163142d);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerMETest.java 
b/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerMETest.java
index f00f2b4..285af4a 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/lemmatizer/LemmatizerMETest.java
@@ -69,8 +69,8 @@ public class LemmatizerMETest {
           new File("opennlp/tools/lemmatizer/trial.old.tsv")), "UTF-8"));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "5");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     LemmatizerModel lemmatizerModel = LemmatizerME.train("en", sampleStream,
         params, new LemmatizerFactory());
@@ -95,8 +95,8 @@ public class LemmatizerMETest {
                 "UTF-8"));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "5");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     LemmatizerME.train("en", sampleStream, params, new LemmatizerFactory());
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/TrainerFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/TrainerFactoryTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/ml/TrainerFactoryTest.java
index f7ac117..b08d28a 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/ml/TrainerFactoryTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/ml/TrainerFactoryTest.java
@@ -34,8 +34,8 @@ public class TrainerFactoryTest {
   public void setup() {
     mlParams = new TrainingParameters();
     mlParams.put(TrainingParameters.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE);
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(10));
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(5));
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 10);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 5);
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISIndexingTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISIndexingTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISIndexingTest.java
index c8bc27f..03539a1 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISIndexingTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/GISIndexingTest.java
@@ -64,7 +64,7 @@ public class GISIndexingTest {
   public void testGISTrainSignature1() throws IOException {
     try (ObjectStream<Event> eventStream = createEventStream()) {
       TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
-      params.put(AbstractTrainer.CUTOFF_PARAM, "1");
+      params.put(AbstractTrainer.CUTOFF_PARAM, 1);
 
       EventTrainer trainer = TrainerFactory.getEventTrainer(params,  null);
 
@@ -79,8 +79,8 @@ public class GISIndexingTest {
   public void testGISTrainSignature2() throws IOException {
     try (ObjectStream<Event> eventStream = createEventStream()) {
       TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
-      params.put(AbstractTrainer.CUTOFF_PARAM, "1");
-      params.put("smoothing", "true");
+      params.put(AbstractTrainer.CUTOFF_PARAM, 1);
+      params.put("smoothing", true);
       EventTrainer trainer = TrainerFactory.getEventTrainer(params, null);
 
       Assert.assertNotNull(trainer.train(eventStream));
@@ -95,8 +95,8 @@ public class GISIndexingTest {
     try (ObjectStream<Event> eventStream = createEventStream()) {
       TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
 
-      params.put(AbstractTrainer.ITERATIONS_PARAM, "10");
-      params.put(AbstractTrainer.CUTOFF_PARAM, "1");
+      params.put(AbstractTrainer.ITERATIONS_PARAM, 10);
+      params.put(AbstractTrainer.CUTOFF_PARAM, 1);
 
       EventTrainer trainer = TrainerFactory.getEventTrainer(params, null);
 
@@ -111,8 +111,8 @@ public class GISIndexingTest {
   public void testGISTrainSignature4() throws IOException {
     try (ObjectStream<Event> eventStream = createEventStream()) {
       TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
-      params.put(AbstractTrainer.ITERATIONS_PARAM, "10");
-      params.put(AbstractTrainer.CUTOFF_PARAM, "1");
+      params.put(AbstractTrainer.ITERATIONS_PARAM, 10);
+      params.put(AbstractTrainer.CUTOFF_PARAM, 1);
       GISTrainer trainer = (GISTrainer) TrainerFactory.getEventTrainer(params, 
null);
       trainer.setGaussianSigma(0.01);
 
@@ -129,10 +129,10 @@ public class GISIndexingTest {
     try (ObjectStream<Event> eventStream = createEventStream()) {
       TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
 
-      params.put(AbstractTrainer.ITERATIONS_PARAM, "10");
-      params.put(AbstractTrainer.CUTOFF_PARAM, "1");
-      params.put("smoothing", "false");
-      params.put(AbstractTrainer.VERBOSE_PARAM, "false");
+      params.put(AbstractTrainer.ITERATIONS_PARAM, 10);
+      params.put(AbstractTrainer.CUTOFF_PARAM, 1);
+      params.put("smoothing", false);
+      params.put(AbstractTrainer.VERBOSE_PARAM, false);
 
       EventTrainer trainer = TrainerFactory.getEventTrainer(params, null);
       Assert.assertNotNull(trainer.train(eventStream));
@@ -145,11 +145,11 @@ public class GISIndexingTest {
     
     TrainingParameters parameters = TrainingParameters.defaultParams();
     // by default we are using GIS/EventTrainer/Cutoff of 5/100 iterations
-    parameters.put(TrainingParameters.ITERATIONS_PARAM, "10");
+    parameters.put(TrainingParameters.ITERATIONS_PARAM, 10);
     parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, 
AbstractEventTrainer.DATA_INDEXER_ONE_PASS_VALUE);
-    parameters.put(AbstractEventTrainer.CUTOFF_PARAM, "1");
+    parameters.put(AbstractEventTrainer.CUTOFF_PARAM, 1);
     // note: setting the SORT_PARAM to true is the default, so it is not 
really needed
-    parameters.put(AbstractDataIndexer.SORT_PARAM, "true");
+    parameters.put(AbstractDataIndexer.SORT_PARAM, true);
 
     // guarantee that you have a GIS trainer...
     EventTrainer trainer =
@@ -169,7 +169,7 @@ public class GISIndexingTest {
  
     parameters.put(TrainingParameters.ALGORITHM_PARAM, 
QNTrainer.MAXENT_QN_VALUE);
     parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, 
AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE);
-    parameters.put(AbstractEventTrainer.CUTOFF_PARAM, "2");
+    parameters.put(AbstractEventTrainer.CUTOFF_PARAM, 2);
     
     trainer = TrainerFactory.getEventTrainer(parameters, new HashMap<>());
     Assert.assertEquals("opennlp.tools.ml.maxent.quasinewton.QNTrainer", 
trainer.getClass().getName());
@@ -187,7 +187,7 @@ public class GISIndexingTest {
 
     // set the cutoff to 1 for this test.
     TrainingParameters parameters = new TrainingParameters();
-    parameters.put(AbstractDataIndexer.CUTOFF_PARAM, "1");
+    parameters.put(AbstractDataIndexer.CUTOFF_PARAM, 1);
     
     // test with a 1 pass data indexer...
     parameters.put(AbstractEventTrainer.DATA_INDEXER_PARAM, 
AbstractEventTrainer.DATA_INDEXER_ONE_PASS_VALUE);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.java
index 36e8926..09a40e5 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/MaxentPrepAttachTest.java
@@ -42,8 +42,8 @@ public class MaxentPrepAttachTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);
     testDataIndexer = new TwoPassDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }
@@ -78,7 +78,7 @@ public class MaxentPrepAttachTest {
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, GISTrainer.MAXENT_VALUE);
     trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM,
         AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     MaxentModel model = 
trainer.train(PrepAttachDataUtil.createTrainingStream());

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java
index 850d9bc..fbff618 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/RealValueModelTest.java
@@ -38,7 +38,7 @@ public class RealValueModelTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
     testDataIndexer = new OnePassRealValueDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.java
index 1e5c8a3..ed7b2a1 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/ScaleDoesntMatterTest.java
@@ -45,7 +45,7 @@ public class ScaleDoesntMatterTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "0");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 0);
     testDataIndexer = new OnePassRealValueDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventStreamTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventStreamTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventStreamTest.java
index d084977..b5425ac 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventStreamTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/io/RealValueFileEventStreamTest.java
@@ -37,7 +37,7 @@ public class RealValueFileEventStreamTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
     indexer = new OnePassRealValueDataIndexer();
     indexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihoodTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihoodTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihoodTest.java
index dcba896..d51852d 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihoodTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/NegLogLikelihoodTest.java
@@ -41,7 +41,7 @@ public class NegLogLikelihoodTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
     testDataIndexer = new OnePassRealValueDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttachTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttachTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttachTest.java
index c01aa76..574e871 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttachTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNPrepAttachTest.java
@@ -39,8 +39,8 @@ public class QNPrepAttachTest {
   public void testQNOnPrepAttachData() throws IOException {
     DataIndexer indexer = new TwoPassDataIndexer();
     TrainingParameters indexingParameters = new TrainingParameters();
-    indexingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    indexingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");
+    indexingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    indexingParameters.put(AbstractDataIndexer.SORT_PARAM, false);
     indexer.init(indexingParameters, new HashMap<>());
     indexer.index(PrepAttachDataUtil.createTrainingStream());
 
@@ -68,9 +68,9 @@ public class QNPrepAttachTest {
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
QNTrainer.MAXENT_QN_VALUE);
     trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM,
         AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put(QNTrainer.L1COST_PARAM, Double.toString(0.25));
-    trainParams.put(QNTrainer.L2COST_PARAM, Double.toString(1.0));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put(QNTrainer.L1COST_PARAM, 0.25);
+    trainParams.put(QNTrainer.L2COST_PARAM, 1.0D);
 
     MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null)
                                       
.train(PrepAttachDataUtil.createTrainingStream());
@@ -85,9 +85,9 @@ public class QNPrepAttachTest {
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
QNTrainer.MAXENT_QN_VALUE);
     trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM,
         AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put(QNTrainer.L1COST_PARAM, Double.toString(1.0));
-    trainParams.put(QNTrainer.L2COST_PARAM, Double.toString(0));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put(QNTrainer.L1COST_PARAM, 1.0D);
+    trainParams.put(QNTrainer.L2COST_PARAM, 0D);
 
     MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null)
                                       
.train(PrepAttachDataUtil.createTrainingStream());
@@ -102,9 +102,9 @@ public class QNPrepAttachTest {
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
QNTrainer.MAXENT_QN_VALUE);
     trainParams.put(AbstractEventTrainer.DATA_INDEXER_PARAM,
         AbstractEventTrainer.DATA_INDEXER_TWO_PASS_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put(QNTrainer.L1COST_PARAM, Double.toString(0));
-    trainParams.put(QNTrainer.L2COST_PARAM, Double.toString(1.0));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put(QNTrainer.L1COST_PARAM, 0D);
+    trainParams.put(QNTrainer.L2COST_PARAM, 1.0D);
 
     MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null)
                                       
.train(PrepAttachDataUtil.createTrainingStream());
@@ -117,7 +117,7 @@ public class QNPrepAttachTest {
 
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
QNTrainer.MAXENT_QN_VALUE);
-    trainParams.put(QNTrainer.THREADS_PARAM, Integer.toString(2));
+    trainParams.put(QNTrainer.THREADS_PARAM, 2);
 
     MaxentModel model = TrainerFactory.getEventTrainer(trainParams, null)
                                       
.train(PrepAttachDataUtil.createTrainingStream());

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTest.java
index fbe9ecc..555b9dc 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/maxent/quasinewton/QNTrainerTest.java
@@ -46,7 +46,7 @@ public class QNTrainerTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
     testDataIndexer = new OnePassRealValueDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectnessTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectnessTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectnessTest.java
index 11a961b..9a322d4 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectnessTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesCorrectnessTest.java
@@ -46,8 +46,8 @@ public class NaiveBayesCorrectnessTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");;
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);;
     testDataIndexer = new TwoPassDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReadWriteTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReadWriteTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReadWriteTest.java
index a76b428..7a0fb22 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReadWriteTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesModelReadWriteTest.java
@@ -43,8 +43,8 @@ public class NaiveBayesModelReadWriteTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");;
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);;
     testDataIndexer = new TwoPassDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttachTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttachTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttachTest.java
index e994ba1..c6c5ace 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttachTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesPrepAttachTest.java
@@ -44,8 +44,8 @@ public class NaiveBayesPrepAttachTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);
     testDataIndexer = new TwoPassDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }
@@ -62,7 +62,7 @@ public class NaiveBayesPrepAttachTest {
   public void testNaiveBayesOnPrepAttachDataUsingTrainUtil() throws 
IOException {
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
NaiveBayesTrainer.NAIVE_BAYES_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     MaxentModel model = 
trainer.train(PrepAttachDataUtil.createTrainingStream());
@@ -74,7 +74,7 @@ public class NaiveBayesPrepAttachTest {
   public void testNaiveBayesOnPrepAttachDataUsingTrainUtilWithCutoff5() throws 
IOException {
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
NaiveBayesTrainer.NAIVE_BAYES_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(5));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 5);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     MaxentModel model = 
trainer.train(PrepAttachDataUtil.createTrainingStream());

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerializedCorrectnessTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerializedCorrectnessTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerializedCorrectnessTest.java
index 0146885..f684974 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerializedCorrectnessTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/naivebayes/NaiveBayesSerializedCorrectnessTest.java
@@ -48,8 +48,8 @@ public class NaiveBayesSerializedCorrectnessTest {
   @Before
   public void initIndexer() {
     TrainingParameters trainingParameters = new TrainingParameters();
-    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");;
+    trainingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainingParameters.put(AbstractDataIndexer.SORT_PARAM, false);;
     testDataIndexer = new TwoPassDataIndexer();
     testDataIndexer.init(trainingParameters, new HashMap<>());
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttachTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttachTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttachTest.java
index eda49f8..94985cc 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttachTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/ml/perceptron/PerceptronPrepAttachTest.java
@@ -47,8 +47,8 @@ public class PerceptronPrepAttachTest {
   public void testPerceptronOnPrepAttachData() throws IOException {
     TwoPassDataIndexer indexer = new TwoPassDataIndexer();
     TrainingParameters indexingParameters = new TrainingParameters();
-    indexingParameters.put(AbstractTrainer.CUTOFF_PARAM, "1");
-    indexingParameters.put(AbstractDataIndexer.SORT_PARAM, "false");
+    indexingParameters.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    indexingParameters.put(AbstractDataIndexer.SORT_PARAM, false);
     indexer.init(indexingParameters, new HashMap<>());
     indexer.index(PrepAttachDataUtil.createTrainingStream());
     MaxentModel model = new PerceptronTrainer().trainModel(400, indexer, 1);
@@ -60,8 +60,8 @@ public class PerceptronPrepAttachTest {
 
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put("UseSkippedAveraging", Boolean.toString(true));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put("UseSkippedAveraging", true);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     MaxentModel model = 
trainer.train(PrepAttachDataUtil.createTrainingStream());
@@ -73,9 +73,9 @@ public class PerceptronPrepAttachTest {
 
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put(AbstractTrainer.ITERATIONS_PARAM, Integer.toString(500));
-    trainParams.put("Tolerance", Double.toString(0.0001d));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put(AbstractTrainer.ITERATIONS_PARAM, 500);
+    trainParams.put("Tolerance", 0.0001d);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     MaxentModel model = 
trainer.train(PrepAttachDataUtil.createTrainingStream());
@@ -87,9 +87,9 @@ public class PerceptronPrepAttachTest {
 
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put(AbstractTrainer.ITERATIONS_PARAM, Integer.toString(500));
-    trainParams.put("StepSizeDecrease", Double.toString(0.06d));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put(AbstractTrainer.ITERATIONS_PARAM, 500);
+    trainParams.put("StepSizeDecrease", 0.06d);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     MaxentModel model = 
trainer.train(PrepAttachDataUtil.createTrainingStream());
@@ -101,8 +101,8 @@ public class PerceptronPrepAttachTest {
 
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put("UseSkippedAveraging", Boolean.toString(true));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put("UseSkippedAveraging", true);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     AbstractModel model = (AbstractModel) 
trainer.train(PrepAttachDataUtil.createTrainingStream());
@@ -125,8 +125,8 @@ public class PerceptronPrepAttachTest {
   public void testModelEquals() throws IOException {
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
-    trainParams.put("UseSkippedAveraging", Boolean.toString(true));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
+    trainParams.put("UseSkippedAveraging", true);
 
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, null);
     AbstractModel modelA = (AbstractModel) 
trainer.train(PrepAttachDataUtil.createTrainingStream());
@@ -140,10 +140,10 @@ public class PerceptronPrepAttachTest {
   public void verifyReportMap() throws IOException {
     TrainingParameters trainParams = new TrainingParameters();
     trainParams.put(AbstractTrainer.ALGORITHM_PARAM, 
PerceptronTrainer.PERCEPTRON_VALUE);
-    trainParams.put(AbstractTrainer.CUTOFF_PARAM, Integer.toString(1));
+    trainParams.put(AbstractTrainer.CUTOFF_PARAM, 1);
     // Since we are verifying the report map, we don't need to have more than 
1 iteration
-    trainParams.put(AbstractTrainer.ITERATIONS_PARAM, Integer.toString(1));
-    trainParams.put("UseSkippedAveraging", Boolean.toString(true));
+    trainParams.put(AbstractTrainer.ITERATIONS_PARAM, 1);
+    trainParams.put("UseSkippedAveraging", true);
     
     Map<String,String> reportMap = new HashMap<>();
     EventTrainer trainer = TrainerFactory.getEventTrainer(trainParams, 
reportMap);

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java 
b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
index 876df5b..94fbb36 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/namefind/NameFinderMETest.java
@@ -65,8 +65,8 @@ public class NameFinderMETest {
               new File("opennlp/tools/namefind/AnnotatedSentences.txt")), 
encoding));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, 
sampleStream,
         params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));
@@ -123,8 +123,8 @@ public class NameFinderMETest {
           new File("opennlp/tools/namefind/AnnotatedSentencesWithTypes.txt")), 
encoding));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, 
sampleStream,
         params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));
@@ -167,8 +167,8 @@ public class NameFinderMETest {
               new File("opennlp/tools/namefind/OnlyWithNames.train")), 
"UTF-8"));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, 
sampleStream,
             params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));
@@ -197,8 +197,8 @@ public class NameFinderMETest {
           new File("opennlp/tools/namefind/OnlyWithNames.train")), "UTF-8"));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", 
TYPE_OVERRIDE, sampleStream,
         params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));
@@ -232,8 +232,8 @@ public class NameFinderMETest {
           new File("opennlp/tools/namefind/OnlyWithNamesWithTypes.train")), 
"UTF-8"));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, 
sampleStream,
         params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));
@@ -268,8 +268,8 @@ public class NameFinderMETest {
 
     TrainingParameters params = new TrainingParameters();
     params.put(TrainingParameters.ALGORITHM_PARAM, "MAXENT");
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, 
sampleStream,
         params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));
@@ -319,8 +319,8 @@ public class NameFinderMETest {
           new File("opennlp/tools/namefind/voa1.train")), "UTF-8"));
 
     TrainingParameters params = new TrainingParameters();
-    params.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(70));
-    params.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(1));
+    params.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    params.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     TokenNameFinderModel nameFinderModel = NameFinderME.train("en", null, 
sampleStream,
         params, TokenNameFinderFactory.create(null, null, 
Collections.emptyMap(), new BioCodec()));

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossValidatorTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossValidatorTest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossValidatorTest.java
index 9e31987..0326fb2 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossValidatorTest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/namefind/TokenNameFinderCrossValidatorTest.java
@@ -51,8 +51,8 @@ public class TokenNameFinderCrossValidatorTest {
         new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1));
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, "70");
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, "1");
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     mlParams.put(TrainingParameters.ALGORITHM_PARAM,
         ModelType.MAXENT.toString());
@@ -78,8 +78,8 @@ public class TokenNameFinderCrossValidatorTest {
         new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1));
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, "70");
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, "1");
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     mlParams.put(TrainingParameters.ALGORITHM_PARAM,
         ModelType.MAXENT.toString());
@@ -107,8 +107,8 @@ public class TokenNameFinderCrossValidatorTest {
         new PlainTextByLineStream(in, StandardCharsets.ISO_8859_1));
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, "70");
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, "1");
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 70);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 1);
 
     mlParams.put(TrainingParameters.ALGORITHM_PARAM,
         ModelType.MAXENT.toString());

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java 
b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
index e2bca48..6d0785b 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/postag/POSTaggerMETest.java
@@ -51,8 +51,8 @@ public class POSTaggerMETest {
   static POSModel trainPOSModel(ModelType type) throws IOException {
     TrainingParameters params = new TrainingParameters();
     params.put(TrainingParameters.ALGORITHM_PARAM, type.toString());
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "5");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     return POSTaggerME.train("en", createSampleStream(), params,
         new POSTaggerFactory());
@@ -98,8 +98,8 @@ public class POSTaggerMETest {
  
     TrainingParameters params = new TrainingParameters();
     params.put(TrainingParameters.ALGORITHM_PARAM, ModelType.MAXENT.name());
-    params.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    params.put(TrainingParameters.CUTOFF_PARAM, "5");
+    params.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    params.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     POSTaggerME.train("en", stream, params, new POSTaggerFactory());
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest.java
 
b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest.java
index 220650d..5fba0fd 100644
--- 
a/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest.java
+++ 
b/opennlp-tools/src/test/java/opennlp/tools/sentdetect/SentenceDetectorMETest.java
@@ -43,8 +43,8 @@ public class SentenceDetectorMETest {
         "/opennlp/tools/sentdetect/Sentences.txt");
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, "0");
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 0);
 
     SentenceDetectorFactory factory = new SentenceDetectorFactory("en", true, 
null, null);
 
@@ -143,8 +143,8 @@ public class SentenceDetectorMETest {
         "/opennlp/tools/sentdetect/SentencesInsufficient.txt");
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, "0");
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 0);
 
     SentenceDetectorFactory factory = new SentenceDetectorFactory("en", true, 
null, null);
     

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerMETest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerMETest.java 
b/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerMETest.java
index 14b9185..3dd92a0 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerMETest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerMETest.java
@@ -84,8 +84,8 @@ public class TokenizerMETest {
         new PlainTextByLineStream(trainDataIn, StandardCharsets.UTF_8));
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, "100");
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, "5");
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 5);
 
     TokenizerME.train(samples, TokenizerFactory.create(null, "en", null, true, 
null), mlParams);
 

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerTestUtil.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerTestUtil.java 
b/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerTestUtil.java
index 65fed21..4d49c58 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerTestUtil.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/tokenize/TokenizerTestUtil.java
@@ -54,8 +54,8 @@ public class TokenizerTestUtil {
         new Span(3, 4)}));
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(100));
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(0));
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 0);
 
     return TokenizerME.train(new CollectionObjectStream<>(samples),
       TokenizerFactory.create(null, "en", null, true, null), mlParams);
@@ -70,8 +70,8 @@ public class TokenizerTestUtil {
         new PlainTextByLineStream(trainDataIn, StandardCharsets.UTF_8));
 
     TrainingParameters mlParams = new TrainingParameters();
-    mlParams.put(TrainingParameters.ITERATIONS_PARAM, Integer.toString(100));
-    mlParams.put(TrainingParameters.CUTOFF_PARAM, Integer.toString(0));
+    mlParams.put(TrainingParameters.ITERATIONS_PARAM, 100);
+    mlParams.put(TrainingParameters.CUTOFF_PARAM, 0);
 
     return TokenizerME.train(samples, TokenizerFactory.create(null, "en", 
null, true, null), mlParams);
   }

http://git-wip-us.apache.org/repos/asf/opennlp/blob/99cbf0da/opennlp-tools/src/test/java/opennlp/tools/util/TrainingParametersTest.java
----------------------------------------------------------------------
diff --git 
a/opennlp-tools/src/test/java/opennlp/tools/util/TrainingParametersTest.java 
b/opennlp-tools/src/test/java/opennlp/tools/util/TrainingParametersTest.java
index 294dff8..7c8e41e 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/util/TrainingParametersTest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/util/TrainingParametersTest.java
@@ -99,20 +99,20 @@ public class TrainingParametersTest {
     Assert.assertEquals("def", tp.getStringParameter("str", "k4", "def"));
 
     Assert.assertEquals(-100, tp.getIntParameter("k11", -100));
-    tp.put("k11", "234");
+    tp.put("k11", 234);
     Assert.assertEquals(234, tp.getIntParameter("k11", -100));
     Assert.assertEquals(123, tp.getIntParameter("int", "k2", -100));
     Assert.assertEquals(-100, tp.getIntParameter("int", "k4", -100));
 
     Assert.assertEquals(234.5, tp.getDoubleParameter("k21", -100), 0.001);
-    tp.put("k21", "345.6");
+    tp.put("k21", 345.6);
     Assert.assertEquals(345.6, tp.getDoubleParameter("k21", -100), 0.001); // 
should be changed
-    tp.putIfAbsent("k21", "456.7");
+    tp.putIfAbsent("k21", 456.7);
     Assert.assertEquals(345.6, tp.getDoubleParameter("k21", -100), 0.001); // 
should be unchanged
     Assert.assertEquals(123.45, tp.getDoubleParameter("double", "k5", -100), 
0.001);
 
     Assert.assertEquals(true, tp.getBooleanParameter("k31", true));
-    tp.put("k31", "false");
+    tp.put("k31", false);
     Assert.assertEquals(false, tp.getBooleanParameter("k31", true));
     Assert.assertEquals(false, tp.getBooleanParameter("boolean", "k4", true));
   }

Reply via email to