diff --git a/sdk/pom.xml b/sdk/pom.xml
index 1c9817b87a..a2a986bcc0 100644
--- a/sdk/pom.xml
+++ b/sdk/pom.xml
@@ -39,6 +39,11 @@
jackson-databind
2.15.1
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ 2.15.1
+
io.projectreactor
reactor-core
diff --git a/sdk/src/main/java/io/dapr/client/ObjectSerializer.java b/sdk/src/main/java/io/dapr/client/ObjectSerializer.java
index a131060b90..80a9b6b5ef 100644
--- a/sdk/src/main/java/io/dapr/client/ObjectSerializer.java
+++ b/sdk/src/main/java/io/dapr/client/ObjectSerializer.java
@@ -18,6 +18,8 @@
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.google.protobuf.MessageLite;
import io.dapr.client.domain.CloudEvent;
import io.dapr.utils.TypeRef;
@@ -35,6 +37,8 @@ public class ObjectSerializer {
*/
protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
+ .registerModule(new JavaTimeModule())
+ .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.setSerializationInclusion(JsonInclude.Include.NON_NULL);
/**
@@ -149,7 +153,7 @@ private T deserialize(byte[] content, JavaType javaType) throws IOException
* @throws IOException In case content cannot be parsed.
*/
public JsonNode parseNode(byte[] content) throws IOException {
- return OBJECT_MAPPER.readTree(content);
+ return OBJECT_MAPPER.readTree(content);
}
/**
diff --git a/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java b/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java
index 44e36d06d0..187d1f9186 100644
--- a/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java
+++ b/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java
@@ -41,6 +41,7 @@
import java.net.ServerSocket;
import java.net.Socket;
import java.time.Duration;
+import java.time.ZonedDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -345,6 +346,16 @@ public void invokeService() {
assertEquals("hello world", mono.block());
}
+ @Test
+ public void invokeServiceWithZonedDateTime() {
+ mockInterceptor.addRule()
+ .get("http://" + sidecarIp + ":3000/v1.0/invoke/41/method/neworder")
+ .respond("\"hello world\"");
+
+ Mono mono = daprClientHttp.invokeMethod("41", "neworder", Map.of("zoned", ZonedDateTime.now()), HttpExtension.GET, null, String.class);
+ assertEquals("hello world", mono.block());
+ }
+
@Test
public void invokeServiceNullResponse() {
mockInterceptor.addRule()
@@ -486,4 +497,4 @@ public String getContentType() {
return "application/xml";
}
}
-}
\ No newline at end of file
+}
diff --git a/sdk/src/test/java/io/dapr/serializer/DefaultObjectSerializerTest.java b/sdk/src/test/java/io/dapr/serializer/DefaultObjectSerializerTest.java
index 2807d55e33..2ffaebc487 100644
--- a/sdk/src/test/java/io/dapr/serializer/DefaultObjectSerializerTest.java
+++ b/sdk/src/test/java/io/dapr/serializer/DefaultObjectSerializerTest.java
@@ -23,6 +23,7 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.google.common.base.Objects;
import com.google.protobuf.ByteString;
import com.google.protobuf.CodedOutputStream;
import com.google.protobuf.MessageLite;
@@ -37,6 +38,8 @@
import java.io.Serializable;
import java.lang.reflect.Type;
import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Base64;
@@ -71,6 +74,8 @@ public static class MyObjectTestToSerialize implements Serializable {
@JsonDeserialize(using = OffsetDateTimeDeserializer.class)
private OffsetDateTime timeValue;
+ ZonedDateTime zonedDateTimeValue;
+
public String getStringValue() {
return stringValue;
}
@@ -151,67 +156,31 @@ public void setTimeValue(OffsetDateTime timeValue) {
this.timeValue = timeValue;
}
+ public ZonedDateTime getZonedDateTimeValue() {
+ return zonedDateTimeValue;
+ }
+
+ public void setZonedDateTimeValue(ZonedDateTime zonedDateTimeValue) {
+ this.zonedDateTimeValue = zonedDateTimeValue;
+ }
+
@Override
public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof MyObjectTestToSerialize)) {
+ if (o == null || getClass() != o.getClass()) {
return false;
}
-
MyObjectTestToSerialize that = (MyObjectTestToSerialize) o;
-
- if (getIntValue() != that.getIntValue()) {
- return false;
- }
- if (isBoolValue() != that.isBoolValue()) {
- return false;
- }
- if (getCharValue() != that.getCharValue()) {
- return false;
- }
- if (getByteValue() != that.getByteValue()) {
- return false;
- }
- if (getShortValue() != that.getShortValue()) {
- return false;
- }
- if (getLongValue() != that.getLongValue()) {
- return false;
- }
- if (Float.compare(that.getFloatValue(), getFloatValue()) != 0) {
- return false;
- }
- if (Double.compare(that.getDoubleValue(), getDoubleValue()) != 0) {
- return false;
- }
- if (getStringValue() != null ? !getStringValue().equals(that.getStringValue()) : that.getStringValue() != null) {
- return false;
- }
- if (getTimeValue() != null ? !getTimeValue().isEqual(that.getTimeValue()) : that.getTimeValue() != null) {
- return false;
- }
-
- return true;
+ return intValue == that.intValue && boolValue == that.boolValue && charValue == that.charValue
+ && byteValue == that.byteValue && shortValue == that.shortValue && longValue == that.longValue
+ && Float.compare(floatValue, that.floatValue) == 0 && Double.compare(doubleValue, that.doubleValue) == 0
+ && Objects.equal(stringValue, that.stringValue) && Objects.equal(timeValue, that.timeValue)
+ && Objects.equal(zonedDateTimeValue, that.zonedDateTimeValue);
}
@Override
public int hashCode() {
- int result;
- long temp;
- result = getStringValue() != null ? getStringValue().hashCode() : 0;
- result = 31 * result + getIntValue();
- result = 31 * result + (isBoolValue() ? 1 : 0);
- result = 31 * result + (int) getCharValue();
- result = 31 * result + (int) getByteValue();
- result = 31 * result + (int) getShortValue();
- result = 31 * result + (int) (getLongValue() ^ (getLongValue() >>> 32));
- result = 31 * result + (getFloatValue() != +0.0f ? Float.floatToIntBits(getFloatValue()) : 0);
- temp = Double.doubleToLongBits(getDoubleValue());
- result = 31 * result + (int) (temp ^ (temp >>> 32));
- result = 31 * result + getTimeValue().toInstant().hashCode();
- return result;
+ return Objects.hashCode(stringValue, intValue, boolValue, charValue, byteValue, shortValue, longValue, floatValue,
+ doubleValue, timeValue, zonedDateTimeValue);
}
@Override
@@ -227,6 +196,7 @@ public String toString() {
", floatValue=" + floatValue +
", doubleValue=" + doubleValue +
", timeValue=" + timeValue +
+ ", zonedDateTimeValue=" + zonedDateTimeValue +
'}';
}
@@ -258,7 +228,9 @@ public void serializeStringObjectTest() {
obj.setFloatValue(1.0f);
obj.setDoubleValue(1000.0);
obj.setTimeValue(OffsetDateTime.MIN);
- String expectedResult = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"-999999999-01-01T00:00:00+18:00\"}";
+ obj.setZonedDateTimeValue(ZonedDateTime.of(2000, 12, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
+ String expectedResult =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"-999999999-01-01T00:00:00+18:00\",\"zonedDateTimeValue\":\"2000-12-01T00:00:00Z\"}";
String serializedValue;
@@ -322,9 +294,9 @@ public void serializeNullTest() {
public void serializeStringTest() {
String valueToSerialize = "A String";
String expectedSerializedValue = "\"A String\"";
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize));
assertEquals(expectedSerializedValue, serializedValue);
@@ -341,9 +313,9 @@ public void serializeStringTest() {
public void serializeIntTest() {
Integer valueToSerialize = 1;
String expectedResult = valueToSerialize.toString();
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize.intValue()));
assertEquals(expectedResult, serializedValue);
@@ -360,9 +332,9 @@ public void serializeIntTest() {
public void serializeShortTest() {
Short valueToSerialize = 1;
String expectedResult = valueToSerialize.toString();
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize.shortValue()));
assertEquals(expectedResult, serializedValue);
@@ -379,9 +351,9 @@ public void serializeShortTest() {
public void serializeLongTest() {
Long valueToSerialize = Long.MAX_VALUE;
String expectedResult = valueToSerialize.toString();
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize.longValue()));
assertEquals(expectedResult, serializedValue);
@@ -398,9 +370,9 @@ public void serializeLongTest() {
public void serializeFloatTest() {
Float valueToSerialize = -1.23456f;
String expectedResult = valueToSerialize.toString();
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize.floatValue()));
assertEquals(expectedResult, serializedValue);
@@ -417,9 +389,9 @@ public void serializeFloatTest() {
public void serializeDoubleTest() {
Double valueToSerialize = 1.0;
String expectedResult = valueToSerialize.toString();
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize.doubleValue()));
assertEquals(expectedResult, serializedValue);
@@ -436,9 +408,9 @@ public void serializeDoubleTest() {
public void serializeBooleanTest() {
Boolean valueToSerialize = true;
String expectedResult = valueToSerialize.toString();
-
+
String serializedValue;
- byte [] byteValue;
+ byte[] byteValue;
try {
serializedValue = new String(SERIALIZER.serialize(valueToSerialize.booleanValue()));
assertEquals(expectedResult, serializedValue);
@@ -479,7 +451,8 @@ public void serializeFakeProtoTest() throws Exception {
@Test
public void deserializeObjectTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -503,7 +476,8 @@ public void deserializeObjectTest() {
@Test
public void deserializeArrayObjectTest() {
- String jsonToDeserialize = "[{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}]";
+ String jsonToDeserialize =
+ "[{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}]";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -515,17 +489,20 @@ public void deserializeArrayObjectTest() {
expectedResult.setFloatValue(1.0f);
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
+
List result;
try {
- result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), new TypeRef>(){});
+ result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), new TypeRef>() {
+ });
assertEquals(expectedResult, result.get(0), "The expected value is different than the actual result");
} catch (IOException exception) {
fail(exception.getMessage());
}
try {
- TypeRef> tr1 = new TypeRef>(){};
+ TypeRef> tr1 = new TypeRef>() {
+ };
Type t = tr1.getType();
TypeRef> tr = TypeRef.get(t);
result = (List) SERIALIZER.deserialize(jsonToDeserialize.getBytes(), tr);
@@ -537,7 +514,7 @@ public void deserializeArrayObjectTest() {
@Test
public void deserializeBytesTest() {
-
+
try {
byte[] result = SERIALIZER.deserialize("String".getBytes(), byte[].class);
assertNotNull(result);
@@ -549,7 +526,7 @@ public void deserializeBytesTest() {
@Test
public void deserializeNullObjectOrPrimitiveTest() {
-
+
try {
MyObjectTestToSerialize objResult = SERIALIZER.deserialize(null, MyObjectTestToSerialize.class);
assertNull(objResult);
@@ -580,7 +557,8 @@ public void deserializeNullObjectOrPrimitiveTest() {
@Test
public void deserializeObjectMissingStringPropertyTest() {
- String jsonToDeserialize = "{\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setIntValue(2147483647);
expectedResult.setBoolValue(true);
@@ -592,7 +570,7 @@ public void deserializeObjectMissingStringPropertyTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -603,7 +581,8 @@ public void deserializeObjectMissingStringPropertyTest() {
@Test
public void deserializeObjectMissingIntTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setBoolValue(true);
@@ -614,8 +593,9 @@ public void deserializeObjectMissingIntTest() {
expectedResult.setFloatValue(1.0f);
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
+
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -626,7 +606,8 @@ public void deserializeObjectMissingIntTest() {
@Test
public void deserializeObjectMissingBooleanTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -638,7 +619,7 @@ public void deserializeObjectMissingBooleanTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -649,7 +630,8 @@ public void deserializeObjectMissingBooleanTest() {
@Test
public void deserializeObjectMissingCharTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -661,7 +643,7 @@ public void deserializeObjectMissingCharTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -672,7 +654,8 @@ public void deserializeObjectMissingCharTest() {
@Test
public void deserializeObjectMissingByteTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -684,7 +667,7 @@ public void deserializeObjectMissingByteTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -695,7 +678,8 @@ public void deserializeObjectMissingByteTest() {
@Test
public void deserializeObjectMissingShortTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -707,7 +691,7 @@ public void deserializeObjectMissingShortTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -718,7 +702,8 @@ public void deserializeObjectMissingShortTest() {
@Test
public void deserializeObjectMissingLongTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -730,7 +715,7 @@ public void deserializeObjectMissingLongTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -741,7 +726,8 @@ public void deserializeObjectMissingLongTest() {
@Test
public void deserializeObjectMissingFloatTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -753,7 +739,7 @@ public void deserializeObjectMissingFloatTest() {
expectedResult.setDoubleValue(1000.0);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -764,7 +750,8 @@ public void deserializeObjectMissingFloatTest() {
@Test
public void deserializeObjectMissingDoubleTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\",\"zonedDateTimeValue\":null}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -776,7 +763,7 @@ public void deserializeObjectMissingDoubleTest() {
expectedResult.setFloatValue(1.0f);
expectedResult.setTimeValue(OffsetDateTime.MAX);
MyObjectTestToSerialize result;
-
+
try {
result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
@@ -787,7 +774,31 @@ public void deserializeObjectMissingDoubleTest() {
@Test
public void deserializeObjectMissingTimeTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"zonedDateTimeValue\":null}";
+ MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
+ expectedResult.setStringValue("A String");
+ expectedResult.setIntValue(2147483647);
+ expectedResult.setBoolValue(true);
+ expectedResult.setCharValue('a');
+ expectedResult.setByteValue((byte) 65);
+ expectedResult.setShortValue((short) 32767);
+ expectedResult.setLongValue(9223372036854775807L);
+ expectedResult.setFloatValue(1.0f);
+ MyObjectTestToSerialize result;
+
+ try {
+ result = SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class);
+ assertEquals(expectedResult, result, "FOUND:[[" + result + "]] \n but was EXPECTING: [[" + expectedResult + "]]");
+ } catch (IOException exception) {
+ fail(exception.getMessage());
+ }
+ }
+
+ @Test
+ public void deserializeObjectMissingZonedDateTimeTest() {
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0}";
MyObjectTestToSerialize expectedResult = new MyObjectTestToSerialize();
expectedResult.setStringValue("A String");
expectedResult.setIntValue(2147483647);
@@ -809,50 +820,61 @@ public void deserializeObjectMissingTimeTest() {
@Test
public void deserializeObjectIntExceedMaximumValueTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483648,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483648,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
- assertThrows(IOException.class, () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
+ assertThrows(IOException.class,
+ () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
}
@Test
public void deserializeObjectNotACharTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"Not A Char\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"Not A Char\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
- assertThrows(IOException.class, () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
+ assertThrows(IOException.class,
+ () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
}
@Test
public void deserializeObjectShortExceededMaximumValueTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32768,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32768,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
- assertThrows(IOException.class, () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
+ assertThrows(IOException.class,
+ () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
}
@Test
public void deserializeObjectLongExceededMaximumValueTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775808,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775808,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+999999999-12-31T23:59:59.999999999-18:00\"}";
- assertThrows(IOException.class, () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
+ assertThrows(IOException.class,
+ () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
}
@Test
public void deserializeObjectTimeExceededMaximumValueTest() {
- String jsonToDeserialize = "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+1000000000-12-31T23:59:59.999999999-18:00\"}";
+ String jsonToDeserialize =
+ "{\"stringValue\":\"A String\",\"intValue\":2147483647,\"boolValue\":true,\"charValue\":\"a\",\"byteValue\":65,\"shortValue\":32767,\"longValue\":9223372036854775807,\"floatValue\":1.0,\"doubleValue\":1000.0,\"timeValue\":\"+1000000000-12-31T23:59:59.999999999-18:00\"}";
- assertThrows(IOException.class, () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
+ assertThrows(IOException.class,
+ () -> SERIALIZER.deserialize(jsonToDeserialize.getBytes(), MyObjectTestToSerialize.class));
}
@Test
public void deserializeNullToPrimitives() throws Exception {
-
- assertEquals(0, (char)SERIALIZER.deserialize(null, char.class));
- assertEquals(0, (int)SERIALIZER.deserialize(null, int.class));
- assertEquals(0, (long)SERIALIZER.deserialize(null, long.class));
- assertEquals(0, (byte)SERIALIZER.deserialize(null, byte.class));
+
+ assertEquals(0, (char) SERIALIZER.deserialize(null, char.class));
+ assertEquals(0, (int) SERIALIZER.deserialize(null, int.class));
+ assertEquals(0, (long) SERIALIZER.deserialize(null, long.class));
+ assertEquals(0, (byte) SERIALIZER.deserialize(null, byte.class));
assertEquals(0, SERIALIZER.deserialize(null, double.class), 0);
assertEquals(0, SERIALIZER.deserialize(null, float.class), 0);
assertEquals(false, SERIALIZER.deserialize(null, boolean.class));
- assertEquals(null, SERIALIZER.deserialize(null, OffsetDateTime.class));
+ assertNull(SERIALIZER.deserialize(null, OffsetDateTime.class));
+ assertNull(SERIALIZER.deserialize(null, OffsetDateTime.class));
assertNull(SERIALIZER.deserialize(null, Character.class));
assertNull(SERIALIZER.deserialize(null, Integer.class));
@@ -866,15 +888,16 @@ public void deserializeNullToPrimitives() throws Exception {
@Test
public void deserializeEmptyByteArrayToPrimitives() throws Exception {
-
- assertEquals(0, (char)SERIALIZER.deserialize(new byte[0], char.class));
- assertEquals(0, (int)SERIALIZER.deserialize(new byte[0], int.class));
- assertEquals(0, (long)SERIALIZER.deserialize(new byte[0], long.class));
- assertEquals(0, (byte)SERIALIZER.deserialize(new byte[0], byte.class));
+
+ assertEquals(0, (char) SERIALIZER.deserialize(new byte[0], char.class));
+ assertEquals(0, (int) SERIALIZER.deserialize(new byte[0], int.class));
+ assertEquals(0, (long) SERIALIZER.deserialize(new byte[0], long.class));
+ assertEquals(0, (byte) SERIALIZER.deserialize(new byte[0], byte.class));
assertEquals(0, SERIALIZER.deserialize(new byte[0], double.class), 0);
assertEquals(0, SERIALIZER.deserialize(new byte[0], float.class), 0);
assertEquals(false, SERIALIZER.deserialize(new byte[0], boolean.class));
- assertEquals(null, SERIALIZER.deserialize(new byte[0], OffsetDateTime.class));
+ assertNull(SERIALIZER.deserialize(new byte[0], OffsetDateTime.class));
+ assertNull(SERIALIZER.deserialize(new byte[0], ZonedDateTime.class));
assertNull(SERIALIZER.deserialize(new byte[0], Character.class));
assertNull(SERIALIZER.deserialize(new byte[0], Integer.class));
@@ -884,11 +907,12 @@ public void deserializeEmptyByteArrayToPrimitives() throws Exception {
assertNull(SERIALIZER.deserialize(new byte[0], Float.class));
assertNull(SERIALIZER.deserialize(new byte[0], Boolean.class));
assertNull(SERIALIZER.deserialize(new byte[0], OffsetDateTime.class));
+ assertNull(SERIALIZER.deserialize(new byte[0], ZonedDateTime.class));
}
@Test
public void serializeDeserializeCloudEventEnvelope() throws Exception {
-
+
Function check = (e -> {
try {
@@ -904,40 +928,40 @@ public void serializeDeserializeCloudEventEnvelope() throws Exception {
assertTrue(check.apply(null));
assertTrue(check.apply(
- new CloudEvent(
- "1",
- "mysource",
- "text",
- "v2",
- "XML",
- "")));
+ new CloudEvent(
+ "1",
+ "mysource",
+ "text",
+ "v2",
+ "XML",
+ "")));
assertTrue(check.apply(
- new CloudEvent(
- "1234-65432",
- "myother",
- "image",
- "v2",
- "byte",
- Base64.getEncoder().encodeToString(new byte[] {0, 2, 99}))));
+ new CloudEvent(
+ "1234-65432",
+ "myother",
+ "image",
+ "v2",
+ "byte",
+ Base64.getEncoder().encodeToString(new byte[] {0, 2, 99}))));
assertTrue(check.apply(
- new CloudEvent(
- "0987-0987",
- "anothersource",
- "anothertype",
- "v3",
- "blah".getBytes())));
+ new CloudEvent(
+ "0987-0987",
+ "anothersource",
+ "anothertype",
+ "v3",
+ "blah".getBytes())));
assertTrue(check.apply(
- new CloudEvent(
- "0987-0987",
- "anothersource",
- "anothertype",
- "v3",
- null)));
+ new CloudEvent(
+ "0987-0987",
+ "anothersource",
+ "anothertype",
+ "v3",
+ null)));
}
@Test
public void deserializeCloudEventEnvelopeData() throws Exception {
-
+
Function deserializeData = (jsonData -> {
try {
@@ -955,7 +979,7 @@ public void deserializeCloudEventEnvelopeData() throws Exception {
assertEquals(123.45,
deserializeData.apply("123.45"));
assertEquals("AAEI",
- deserializeData.apply(quote(Base64.getEncoder().encodeToString(new byte[]{0, 1, 8}))));
+ deserializeData.apply(quote(Base64.getEncoder().encodeToString(new byte[] {0, 1, 8}))));
assertEquals("hello world",
deserializeData.apply(quote("hello world")));
assertEquals("\"hello world\"",
@@ -970,7 +994,8 @@ public void deserializeCloudEventEnvelopeData() throws Exception {
put("time", "1970-01-01-00:00:00+00:00");
}}, deserializeData.apply("{\"id\": \"123\", \"name\": \"Jon Doe\", \"time\": \"1970-01-01-00:00:00+00:00\"}"));
assertEquals("{\"id\": \"123\", \"name\": \"Jon Doe\", \"time\": \"1970-01-01-00:00:00+00:00\"}",
- deserializeData.apply(new ObjectMapper().writeValueAsString("{\"id\": \"123\", \"name\": \"Jon Doe\", \"time\": \"1970-01-01-00:00:00+00:00\"}")));
+ deserializeData.apply(new ObjectMapper().writeValueAsString(
+ "{\"id\": \"123\", \"name\": \"Jon Doe\", \"time\": \"1970-01-01-00:00:00+00:00\"}")));
}
@Test
@@ -1017,7 +1042,7 @@ public ByteString toByteString() {
@Override
public byte[] toByteArray() {
- return new byte[]{0x1};
+ return new byte[] {0x1};
}
@Override