mirror of https://github.com/dapr/java-sdk.git
* Add support deserialization of generic types per #293 * Improving test coverage
This commit is contained in:
parent
81b47f85b3
commit
38b899d8b8
|
@ -57,10 +57,10 @@ public abstract class TypeRef<T> {
|
||||||
/**
|
/**
|
||||||
* Constructor for reflection.
|
* Constructor for reflection.
|
||||||
*
|
*
|
||||||
* @param clazz Class type to be referenced.
|
* @param type Type to be referenced.
|
||||||
*/
|
*/
|
||||||
private TypeRef(Class<T> clazz) {
|
private TypeRef(Type type) {
|
||||||
this.type = clazz;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -118,4 +118,19 @@ public abstract class TypeRef<T> {
|
||||||
|
|
||||||
return new TypeRef<T>(clazz) {};
|
return new TypeRef<T>(clazz) {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a reference to a given class type.
|
||||||
|
* @param type Type to be referenced.
|
||||||
|
* @param <T> Type to be referenced.
|
||||||
|
* @return Class type reference.
|
||||||
|
*/
|
||||||
|
public static <T> TypeRef<T> get(Type type) {
|
||||||
|
if (type instanceof Class) {
|
||||||
|
Class clazz = (Class) type;
|
||||||
|
return get(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new TypeRef<T>(type) {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import org.junit.Test;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -234,6 +235,17 @@ public class DefaultObjectSerializerTest {
|
||||||
} catch (IOException exception) {
|
} catch (IOException exception) {
|
||||||
fail(exception.getMessage());
|
fail(exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
serializedValue = SERIALIZER.serialize(obj);
|
||||||
|
assertNotNull(serializedValue);
|
||||||
|
Type t = MyObjectTestToSerialize.class;
|
||||||
|
TypeRef<MyObjectTestToSerialize> tr = TypeRef.get(t);
|
||||||
|
MyObjectTestToSerialize deserializedValue = SERIALIZER.deserialize(serializedValue, tr);
|
||||||
|
assertEquals(obj, deserializedValue);
|
||||||
|
} catch (IOException exception) {
|
||||||
|
fail(exception.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -425,6 +437,16 @@ public class DefaultObjectSerializerTest {
|
||||||
} catch (IOException exception) {
|
} catch (IOException exception) {
|
||||||
fail(exception.getMessage());
|
fail(exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
TypeRef<List<MyObjectTestToSerialize>> tr1 = new TypeRef<List<MyObjectTestToSerialize>>(){};
|
||||||
|
Type t = tr1.getType();
|
||||||
|
TypeRef<?> tr = TypeRef.get(t);
|
||||||
|
result = (List<MyObjectTestToSerialize>) SERIALIZER.deserialize(jsonToDeserialize.getBytes(), tr);
|
||||||
|
assertEquals("The expected value is different than the actual result", expectedResult, result.get(0));
|
||||||
|
} catch (IOException exception) {
|
||||||
|
fail(exception.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue