This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.jcr.contentparser-1.0.0 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-contentparser.git
commit 14aec8451473b17caa8e3942bb89cf9fcf89cba8 Author: Stefan Seifert <[email protected]> AuthorDate: Fri Mar 10 13:43:24 2017 +0000 SLING-6592 BigDecimal support git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/commons/fscontentparser@1786339 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/sling/fscontentparser/impl/JcrXmlValueConverter.java | 9 +++++---- .../apache/sling/fscontentparser/impl/JsonContentFileParser.java | 2 +- .../sling/fscontentparser/impl/JcrXmlContentFileParserTest.java | 3 ++- .../sling/fscontentparser/impl/JcrXmlValueConverterTest.java | 5 +++-- .../sling/fscontentparser/impl/JsonContentFileParserTest.java | 5 +++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java b/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java index 8e9fad4..cb65b30 100644 --- a/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java +++ b/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java @@ -19,6 +19,7 @@ package org.apache.sling.fscontentparser.impl; import java.lang.reflect.Array; +import java.math.BigDecimal; import java.net.URI; import java.net.URISyntaxException; import java.util.Calendar; @@ -85,9 +86,9 @@ class JcrXmlValueConverter { case PropertyType.LONG: return Long.valueOf(value); case PropertyType.DOUBLE: - case PropertyType.DECIMAL: - // TODO: specific handling for BigDecimal? not properly supported in ValueMapDecorator until very recent Sling API versions return Double.valueOf(value); + case PropertyType.DECIMAL: + return new BigDecimal(value); case PropertyType.DATE: return ISO8601.parse(value); case PropertyType.REFERENCE: @@ -126,9 +127,9 @@ class JcrXmlValueConverter { case PropertyType.LONG: return Long.class; case PropertyType.DOUBLE: - case PropertyType.DECIMAL: - // TODO: specific handling for BigDecimal? not properly supported in ValueMapDecorator until very recent Sling API versions return Double.class; + case PropertyType.DECIMAL: + return BigDecimal.class; case PropertyType.DATE: return Calendar.class; case PropertyType.REFERENCE: diff --git a/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java b/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java index 47b3c18..4dca092 100644 --- a/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java +++ b/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java @@ -113,7 +113,7 @@ public final class JsonContentFileParser implements ContentFileParser { return numberValue.longValue(); } else { - return numberValue.doubleValue(); + return numberValue.bigDecimalValue(); } case TRUE: return true; diff --git a/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java b/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java index d89917e..8678b30 100644 --- a/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java +++ b/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java @@ -25,6 +25,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.io.File; +import java.math.BigDecimal; import java.util.Calendar; import java.util.Map; import java.util.TimeZone; @@ -75,7 +76,7 @@ public class JcrXmlContentFileParserTest { assertEquals("en", props.get("jcr:title")); assertEquals(true, props.get("includeAside")); assertEquals((Long)1234567890123L, props.get("longProp")); - assertEquals((Double)1.2345d, (Double)props.get("decimalProp"), 0.00001d); + assertEquals(new BigDecimal("1.2345"), props.get("decimalProp")); assertArrayEquals(new String[] { "aa", "bb", "cc" }, (String[])props.get("stringPropMulti")); assertArrayEquals(new Long[] { 1234567890123L, 55L }, (Long[])props.get("longPropMulti")); diff --git a/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java b/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java index 2f02aae..a3b51ab 100644 --- a/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java +++ b/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java @@ -23,6 +23,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; +import java.math.BigDecimal; import java.net.URI; import java.util.Calendar; import java.util.UUID; @@ -85,12 +86,12 @@ public class JcrXmlValueConverterTest { @Test public void testDouble() { - assertEquals(1.234d, parseValue(NAME, "{Decimal}1.234")); + assertEquals(new BigDecimal("1.234"), parseValue(NAME, "{Decimal}1.234")); } @Test public void testDoubleArray() { - assertArrayEquals(new Object[] { 1.234d, 2.345d }, (Object[]) parseValue(NAME, "{Decimal}[1.234,2.345]")); + assertArrayEquals(new Object[] { new BigDecimal("1.234"), new BigDecimal("2.345") }, (Object[]) parseValue(NAME, "{Decimal}[1.234,2.345]")); } @Test diff --git a/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java b/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java index 074cf67..6a0b8f6 100644 --- a/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java +++ b/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java @@ -25,6 +25,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.io.File; +import java.math.BigDecimal; import java.util.Calendar; import java.util.Map; import java.util.TimeZone; @@ -65,11 +66,11 @@ public class JsonContentFileParserTest { assertEquals(true, props.get("hideInNav")); assertEquals(1234567890123L, props.get("longProp")); - assertEquals(1.2345d, (Double) props.get("decimalProp"), 0.00001d); + assertEquals(new BigDecimal("1.2345"), props.get("decimalProp")); assertEquals(true, props.get("booleanProp")); assertArrayEquals(new Long[] { 1234567890123L, 55L }, (Long[]) props.get("longPropMulti")); - assertArrayEquals(new Double[] { 1.2345d, 1.1d }, (Double[]) props.get("decimalPropMulti")); + assertArrayEquals(new BigDecimal[] { new BigDecimal("1.2345"), new BigDecimal("1.1") }, (BigDecimal[]) props.get("decimalPropMulti")); assertArrayEquals(new Boolean[] { true, false }, (Boolean[]) props.get("booleanPropMulti")); } -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
