You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2017/03/10 13:43:24 UTC

svn commit: r1786339 - in /sling/trunk/bundles/commons/fscontentparser/src: main/java/org/apache/sling/fscontentparser/impl/ test/java/org/apache/sling/fscontentparser/impl/

Author: sseifert
Date: Fri Mar 10 13:43:24 2017
New Revision: 1786339

URL: http://svn.apache.org/viewvc?rev=1786339&view=rev
Log:
SLING-6592 BigDecimal support

Modified:
    sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java
    sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java
    sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java
    sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java
    sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java

Modified: sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java?rev=1786339&r1=1786338&r2=1786339&view=diff
==============================================================================
--- sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java (original)
+++ sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverter.java Fri Mar 10 13:43:24 2017
@@ -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:

Modified: sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java?rev=1786339&r1=1786338&r2=1786339&view=diff
==============================================================================
--- sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java (original)
+++ sling/trunk/bundles/commons/fscontentparser/src/main/java/org/apache/sling/fscontentparser/impl/JsonContentFileParser.java Fri Mar 10 13:43:24 2017
@@ -113,7 +113,7 @@ public final class JsonContentFileParser
                     return numberValue.longValue();
                 }
                 else {
-                    return numberValue.doubleValue();
+                    return numberValue.bigDecimalValue();
                 }
             case TRUE:
                 return true;

Modified: sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java?rev=1786339&r1=1786338&r2=1786339&view=diff
==============================================================================
--- sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java (original)
+++ sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlContentFileParserTest.java Fri Mar 10 13:43:24 2017
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertNot
 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"));

Modified: sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java?rev=1786339&r1=1786338&r2=1786339&view=diff
==============================================================================
--- sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java (original)
+++ sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JcrXmlValueConverterTest.java Fri Mar 10 13:43:24 2017
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertArr
 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

Modified: sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java?rev=1786339&r1=1786338&r2=1786339&view=diff
==============================================================================
--- sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java (original)
+++ sling/trunk/bundles/commons/fscontentparser/src/test/java/org/apache/sling/fscontentparser/impl/JsonContentFileParserTest.java Fri Mar 10 13:43:24 2017
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertNot
 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"));
     }