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 2016/12/21 13:35:08 UTC
svn commit: r1775415 - in /sling/trunk/bundles/api/src:
main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java
Author: sseifert
Date: Wed Dec 21 13:35:08 2016
New Revision: 1775415
URL: http://svn.apache.org/viewvc?rev=1775415&view=rev
Log:
SLING-6420 ensure arrays if primitives are untouched by converter
Modified:
sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java
Modified: sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java?rev=1775415&r1=1775414&r2=1775415&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java (original)
+++ sling/trunk/bundles/api/src/main/java/org/apache/sling/api/wrappers/impl/ObjectConverter.java Wed Dec 21 13:35:08 2016
@@ -46,16 +46,19 @@ public final class ObjectConverter {
return null;
}
- // convert array elements individually
- if (type.isArray()) {
- return (T)convertToArray(obj, type.getComponentType());
- }
-
// check if direct assignment is possible
if (type.isAssignableFrom(obj.getClass())) {
+ if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
+ return null;
+ }
return (T)obj;
}
+ // convert array elements individually
+ if (type.isArray()) {
+ return (T)convertToArray(obj, type.getComponentType());
+ }
+
// convert Calendar in Date and vice versa
if (Calendar.class.isAssignableFrom(type) && obj instanceof Date) {
return (T)DateUtils.toCalendar((Date)obj);
Modified: sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java?rev=1775415&r1=1775414&r2=1775415&view=diff
==============================================================================
--- sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java (original)
+++ sling/trunk/bundles/api/src/test/java/org/apache/sling/api/wrappers/impl/ObjectConverterTest.java Wed Dec 21 13:35:08 2016
@@ -21,6 +21,8 @@ package org.apache.sling.api.wrappers.im
import static org.apache.sling.api.wrappers.impl.DateUtils.calendarToString;
import static org.apache.sling.api.wrappers.impl.DateUtils.toCalendar;
import static org.apache.sling.api.wrappers.impl.DateUtils.toDate;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNull;
import java.math.BigDecimal;
import java.util.Calendar;
@@ -217,4 +219,12 @@ public class ObjectConverterTest {
Convert.<Boolean,Date>from(BOOLEAN_1, BOOLEAN_2).toNull(Date.class).test();
}
+ @Test
+ public void testPrimitiveByteArray() {
+ byte[] array = new byte[] { 0x01, 0x02, 0x03 };
+ assertArrayEquals(array, ObjectConverter.convert(array, byte[].class));
+ assertNull(ObjectConverter.convert(new byte[0], byte[].class));
+ assertNull(ObjectConverter.convert(null, byte[].class));
+ }
+
}