From 93083e86ef4fe695039bd2741d40d4c8c0c73958 Mon Sep 17 00:00:00 2001 From: Thomas Kaiser <thomas.kaiser@ruxit.com> Date: Wed, 16 Dec 2015 15:26:24 +0100 Subject: [PATCH] - revert changes to ConfigValueType of numbers beginning with '.' --- config/src/main/java/com/typesafe/config/impl/Tokenizer.java | 4 ++-- .../src/test/scala/com/typesafe/config/impl/ConfigTest.scala | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/src/main/java/com/typesafe/config/impl/Tokenizer.java b/config/src/main/java/com/typesafe/config/impl/Tokenizer.java index fc971b6e..0295ea58 100644 --- a/config/src/main/java/com/typesafe/config/impl/Tokenizer.java +++ b/config/src/main/java/com/typesafe/config/impl/Tokenizer.java @@ -295,7 +295,7 @@ final class Tokenizer { } // chars JSON allows a number to start with - static final String firstNumberChars = "0123456789-."; + static final String firstNumberChars = "0123456789-"; // chars JSON allows to be part of a number static final String numberChars = "0123456789eE+-."; // chars that stop an unquoted string @@ -350,7 +350,7 @@ final class Tokenizer { private Token pullNumber(int firstChar) throws ProblemException { StringBuilder sb = new StringBuilder(); sb.appendCodePoint(firstChar); - boolean containedDecimalOrE = firstChar == '.'; + boolean containedDecimalOrE = false; int c = nextCharRaw(); while (c != -1 && numberChars.indexOf(c) >= 0) { if (c == '.' || c == 'e' || c == 'E') diff --git a/config/src/test/scala/com/typesafe/config/impl/ConfigTest.scala b/config/src/test/scala/com/typesafe/config/impl/ConfigTest.scala index 06852c5e..fadd435b 100644 --- a/config/src/test/scala/com/typesafe/config/impl/ConfigTest.scala +++ b/config/src/test/scala/com/typesafe/config/impl/ConfigTest.scala @@ -606,8 +606,8 @@ class ConfigTest extends TestUtils { assertEquals(Seq(intValue(1), intValue(2), intValue(3)), conf.getList("arrays.ofInt").asScala) assertEquals(Seq(stringValue("a"), stringValue("b"), stringValue("c")), conf.getList("arrays.ofString").asScala) - // make sure floats starting with a '.' are parsed as numbers - assertEquals(ConfigValueType.NUMBER, conf.getValue("floats.pointThirtyThree").valueType()) + // make sure floats starting with a '.' are parsed as strings (they will be converted to double on demand) + assertEquals(ConfigValueType.STRING, conf.getValue("floats.pointThirtyThree").valueType()) } @Test