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"));
}