You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dl...@apache.org on 2017/08/02 05:53:57 UTC
svn commit: r1803763 -
/felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonBackingObjectSerializationTest.java
Author: dleangen
Date: Wed Aug 2 05:53:56 2017
New Revision: 1803763
URL: http://svn.apache.org/viewvc?rev=1803763&view=rev
Log:
Added another test case containing possible (temporary) solution FELIX-5666
Modified:
felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonBackingObjectSerializationTest.java
Modified: felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonBackingObjectSerializationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonBackingObjectSerializationTest.java?rev=1803763&r1=1803762&r2=1803763&view=diff
==============================================================================
--- felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonBackingObjectSerializationTest.java (original)
+++ felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonBackingObjectSerializationTest.java Wed Aug 2 05:53:56 2017
@@ -16,11 +16,15 @@
*/
package org.apache.felix.serializer.impl.json;
+import java.lang.reflect.Type;
import java.util.Map;
import org.junit.Ignore;
import org.junit.Test;
+import org.osgi.dto.DTO;
+import org.osgi.util.converter.ConverterFunction;
import org.osgi.util.converter.Converters;
+import org.osgi.util.converter.TargetRule;
import static org.junit.Assert.assertEquals;
@@ -38,8 +42,8 @@ public class JsonBackingObjectSerializat
final String expected =
"{\"a\":\"A\","
- + "\"o\":XXX"
- + "\"b\":\"B\"}";
+ + "\"o\":{\"a\":\"AA\",\"b\":\"BB\"},"
+ + "\"b\":\"B\"}";
final String actual = new JsonSerializerImpl().serialize(m).toString();
@@ -51,7 +55,7 @@ public class JsonBackingObjectSerializat
public void testComplexMapSerializationWithoutUsingPreConversion() {
final String expected =
"{\"a\":\"A\","
- + "\"o\":XXX"
+ + "\"o\":{\"a\":\"AA\",\"b\":\"BB\"},"
+ "\"b\":\"B\"}";
final String actual = new JsonSerializerImpl()
@@ -63,7 +67,23 @@ public class JsonBackingObjectSerializat
assertEquals(expected, actual);
}
- public static class MyDTOishObject {
+ @Test
+ public void testComplexMapSerializationUsingRule() {
+ final String expected =
+ "{\"o\":{\"a\":\"AA\",\"b\":\"BB\"},"
+ + "\"a\":\"A\","
+ + "\"b\":\"B\"}";
+
+ final String actual = new JsonSerializerImpl()
+ .serialize(MyDTOishObject.factory( "A", "B" ))
+ .with(Converters.newConverterBuilder().rule(new MapTargetRule()).build())
+ .toString();
+
+ // Cannot get result to behave predictably... Order is random.
+ assertEquals(expected.length(), actual.length());
+ }
+
+ public static class MyDTOishObject extends DTO {
public String a;
public String b;
public OtherObject o;
@@ -79,7 +99,7 @@ public class JsonBackingObjectSerializat
}
}
- public static class OtherObject {
+ public static class OtherObject extends DTO {
public String a;
public String b;
@@ -92,4 +112,29 @@ public class JsonBackingObjectSerializat
return new OtherObject( a, b );
}
}
+
+ static class MapTargetRule implements TargetRule {
+
+ @Override
+ public ConverterFunction getFunction() {
+ return new MapConverterFunction();
+ }
+
+ @Override
+ public Type getTargetType() {
+ return Map.class;
+ }
+ }
+
+ static class MapConverterFunction implements ConverterFunction {
+
+ @Override
+ public Object apply( Object obj, Type targetType ) throws Exception {
+ return Converters
+ .standardConverter()
+ .convert(obj)
+ .sourceAsDTO()
+ .to(targetType);
+ }
+ }
}