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>.