You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:46:42 UTC
[sling-org-apache-sling-jcr-contentparser] 05/14: SLING-6592
BigDecimal support
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 <ss...@apache.org>
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
"commits@sling.apache.org" <co...@sling.apache.org>.