You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2017/11/17 15:50:20 UTC
svn commit: r1815574 - in /felix/trunk/converter/converter/src:
main/java/org/osgi/util/converter/ test/java/org/osgi/util/converter/
Author: davidb
Date: Fri Nov 17 15:50:19 2017
New Revision: 1815574
URL: http://svn.apache.org/viewvc?rev=1815574&view=rev
Log:
Converter fixes needed to pass the OSGi Converter CT.
Modified:
felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/DTOUtil.java
felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterMapTest.java
felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java
Modified: felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java?rev=1815574&r1=1815573&r2=1815574&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java Fri Nov 17 15:50:19 2017
@@ -168,6 +168,8 @@ class ConvertingImpl extends AbstractSpe
// At this point we know that the target is a 'singular' type: not a map, collection or array
if (Collection.class.isAssignableFrom(sourceClass)) {
return convertCollectionToSingleValue(targetAsClass);
+ } else if (isMapType(sourceClass, sourceAsJavaBean)) {
+ return convertMapToSingleValue(targetAsClass);
} else if (object instanceof Map.Entry) {
return convertMapEntryToSingleValue(targetAsClass);
} else if ((object = asBoxedArray(object)) instanceof Object[]) {
@@ -185,7 +187,7 @@ class ConvertingImpl extends AbstractSpe
}
}
- private Object convertArrayToSingleValue(Class<?> cls) {
+ private Object convertArrayToSingleValue(Class< ? > cls) {
Object[] arr = (Object[]) object;
if (arr.length == 0)
return null;
@@ -201,6 +203,15 @@ class ConvertingImpl extends AbstractSpe
return converter.convert(coll.iterator().next()).to(cls);
}
+ private Object convertMapToSingleValue(Class< ? > cls) {
+ Map< ? , ? > m = mapView(object, sourceClass, converter);
+ if (m.size() > 0) {
+ return converter.convert(m.entrySet().iterator().next()).to(cls);
+ } else {
+ return null;
+ }
+ }
+
@SuppressWarnings("rawtypes")
private Object convertMapEntryToSingleValue(Class<?> cls) {
Map.Entry entry = (Map.Entry) object;
Modified: felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/DTOUtil.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/DTOUtil.java?rev=1815574&r1=1815573&r2=1815574&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/DTOUtil.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/DTOUtil.java Fri Nov 17 15:50:19 2017
@@ -20,12 +20,15 @@ import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
+/**
+ * @author $Id: 10c7e7fc24b4365c3e536ed781683fd2327c167c $
+ */
class DTOUtil {
private DTOUtil() {
// Do not instantiate. This is a utility class.
}
- public static boolean isDTOType(Class<?> cls) {
+ static boolean isDTOType(Class< ? > cls) {
try {
cls.getDeclaredConstructor();
} catch (NoSuchMethodException | SecurityException e) {
@@ -59,6 +62,7 @@ class DTOUtil {
}
}
+ boolean foundField = false;
for (Field f : cls.getFields()) {
int modifiers = f.getModifiers();
if (Modifier.isStatic(modifiers)) {
@@ -69,7 +73,8 @@ class DTOUtil {
if (!Modifier.isPublic(modifiers)) {
return false;
}
+ foundField = true;
}
- return true;
+ return foundField;
}
}
Modified: felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterMapTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterMapTest.java?rev=1815574&r1=1815573&r2=1815574&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterMapTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterMapTest.java Fri Nov 17 15:50:19 2017
@@ -387,7 +387,7 @@ public class ConverterMapTest {
if (entry.getKey().contains("password"))
entry.setValue("xxx");
}
- return converter.convert(cm).to(String.class);
+ return cm.toString();
}) {}).
build();
assertEquals("{foo=bar, password=xxx}", c.convert(m).to(String.class));
Modified: felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java?rev=1815574&r1=1815573&r2=1815574&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java (original)
+++ felix/trunk/converter/converter/src/test/java/org/osgi/util/converter/ConverterTest.java Fri Nov 17 15:50:19 2017
@@ -1095,7 +1095,12 @@ public class ConverterTest {
public void testTargetAsString() {
Map<String, String> m = new HashMap<>();
CharSequence cs = converter.convert(m).targetAs(String.class).to(CharSequence.class);
- assertEquals("{}", cs);
+ assertNull(cs);
+
+ Map<String, String> m2 = new HashMap<>();
+ m2.put("Hi", "there");
+ CharSequence cs2 = converter.convert(m2).targetAs(String.class).to(CharSequence.class);
+ assertEquals("Hi", cs2);
}
@SuppressWarnings({ "rawtypes", "unchecked" })