mirror of https://github.com/dapr/java-sdk.git
Removed final from CloudEvent class (#775)
* Remove final from CloudEvent Class Signed-off-by: addjuarez <addiajuarez@gmail.com> * Add private field Signed-off-by: addjuarez <addiajuarez@gmail.com> * Changing test to not use a complex constructor and double deserialization. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> * Remove OBJECT_MAPPER. Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Signed-off-by: addjuarez <addiajuarez@gmail.com> Signed-off-by: Artur Souza <artursouza.ms@outlook.com> Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
This commit is contained in:
parent
2cc9e536c8
commit
bbb6a1d9c0
|
@ -26,7 +26,7 @@ import java.util.Objects;
|
|||
* A cloud event in Dapr.
|
||||
* @param <T> The type of the payload.
|
||||
*/
|
||||
public final class CloudEvent<T> {
|
||||
public class CloudEvent<T> {
|
||||
|
||||
/**
|
||||
* Mime type used for CloudEvent.
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright 2022 The Dapr Authors
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package io.dapr.client;
|
||||
|
||||
import io.dapr.client.domain.CloudEvent;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
public class CloudEventCustom<T> extends CloudEvent<T> {
|
||||
|
||||
private String newValue;
|
||||
|
||||
private int newInt;
|
||||
|
||||
private double newDouble;
|
||||
|
||||
public String getNewValue() {
|
||||
return newValue;
|
||||
}
|
||||
|
||||
public void setNewValue(String newValue) {
|
||||
this.newValue = newValue;
|
||||
}
|
||||
|
||||
public int getNewInt() {
|
||||
return newInt;
|
||||
}
|
||||
|
||||
public void setNewInt(int newInt) {
|
||||
this.newInt = newInt;
|
||||
}
|
||||
|
||||
public double getNewDouble() {
|
||||
return newDouble;
|
||||
}
|
||||
|
||||
public void setNewDouble(double newDouble) {
|
||||
this.newDouble = newDouble;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
CloudEventCustom<?> that = (CloudEventCustom<?>) o;
|
||||
return newInt == that.newInt && Double.compare(that.newDouble, newDouble) == 0 && Objects.equals(newValue, that.newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), newValue, newInt, newDouble);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,250 @@
|
|||
/*
|
||||
* Copyright 2022 The Dapr Authors
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package io.dapr.client;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertArrayEquals;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import io.dapr.serializer.DaprObjectSerializer;
|
||||
import io.dapr.serializer.DefaultObjectSerializer;
|
||||
import io.dapr.utils.TypeRef;
|
||||
|
||||
public class CloudEventCustomTest {
|
||||
|
||||
private DaprObjectSerializer serializer = new DefaultObjectSerializer();
|
||||
|
||||
public static class MyClass {
|
||||
public int id;
|
||||
public String name;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void deserializeNewAttributes() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"newValue\" : \"hello world again\",\n" +
|
||||
" \"newDouble\" : 432434324.43,\n" +
|
||||
" \"newInt\" : 435,\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"application/json\"\n" +
|
||||
"}";
|
||||
|
||||
CloudEventCustom cloudEventCustom = serializer.deserialize(content.getBytes(), TypeRef.get(CloudEventCustom.class));
|
||||
assertEquals("application/json", cloudEventCustom.getDatacontenttype());
|
||||
assertEquals("hello world again", cloudEventCustom.getNewValue());
|
||||
assertEquals(432434324.43, cloudEventCustom.getNewDouble(),0);
|
||||
assertEquals(435, cloudEventCustom.getNewInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeObjectClass() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"newValue\" : \"hello world again\",\n" +
|
||||
" \"newDouble\" : 432434324.43,\n" +
|
||||
" \"newInt\" : 435,\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"application/json\",\n" +
|
||||
" \"data\" : {\"id\": 1, \"name\": \"hello world\"}\n" +
|
||||
"}";
|
||||
|
||||
CloudEventCustom<MyClass> cloudEventCustom = serializer.deserialize(
|
||||
content.getBytes(), new TypeRef<CloudEventCustom<MyClass>>() {});
|
||||
assertEquals("application/json", cloudEventCustom.getDatacontenttype());
|
||||
assertEquals(1, cloudEventCustom.getData().id);
|
||||
assertEquals("hello world", cloudEventCustom.getData().name);
|
||||
assertEquals("hello world again", cloudEventCustom.getNewValue());
|
||||
assertEquals(432434324.43, cloudEventCustom.getNewDouble(), 0);
|
||||
assertEquals(435, cloudEventCustom.getNewInt());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeNullData() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"application/json\"\n" +
|
||||
"}";
|
||||
|
||||
CloudEventCustom cloudEventCustom = serializer.deserialize(content.getBytes(), TypeRef.get(CloudEventCustom.class));
|
||||
assertEquals("application/json", cloudEventCustom.getDatacontenttype());
|
||||
assertNull(cloudEventCustom.getData());
|
||||
assertNull(cloudEventCustom.getNewValue());
|
||||
assertEquals(0, cloudEventCustom.getNewInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeInteger() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : 7,\n" +
|
||||
" \"newInt\" : 7,\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"application/json\",\n" +
|
||||
" \"data\" : 1\n" +
|
||||
"}";
|
||||
|
||||
CloudEventCustom<Integer> cloudEventCustom = serializer.deserialize(
|
||||
content.getBytes(), new TypeRef<CloudEventCustom<Integer>>() {});
|
||||
assertEquals("application/json", cloudEventCustom.getDatacontenttype());
|
||||
assertEquals(1, cloudEventCustom.getData().intValue());
|
||||
assertEquals(7, cloudEventCustom.getNewInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeString() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"text/plain\",\n" +
|
||||
" \"data\" : \"hello world\"\n" +
|
||||
"}";
|
||||
|
||||
CloudEventCustom<String> cloudEventCustom = serializer.deserialize(
|
||||
content.getBytes(), new TypeRef<CloudEventCustom<String>>() {});
|
||||
assertEquals("text/plain", cloudEventCustom.getDatacontenttype());
|
||||
assertEquals("hello world", cloudEventCustom.getData());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeXML() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"text/xml\",\n" +
|
||||
" \"data\" : \"<root/>\"\n" +
|
||||
"}";
|
||||
|
||||
CloudEventCustom<String> cloudEventCustom = serializer.deserialize(
|
||||
content.getBytes(), new TypeRef<CloudEventCustom<String>>() {});
|
||||
assertEquals("text/xml", cloudEventCustom.getDatacontenttype());
|
||||
assertEquals("<root/>", cloudEventCustom.getData());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeBytes() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"application/json\",\n" +
|
||||
" \"data\" : \"AQI=\"\n" +
|
||||
"}";
|
||||
|
||||
byte[] expected = new byte[]{ 0x1, 0x2 };
|
||||
CloudEventCustom<byte[]> cloudEventCustom = serializer.deserialize(
|
||||
content.getBytes(), new TypeRef<CloudEventCustom<byte[]>>() {});
|
||||
assertEquals("application/json", cloudEventCustom.getDatacontenttype());
|
||||
assertArrayEquals(expected, cloudEventCustom.getData());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deserializeBinaryData() throws Exception {
|
||||
String content = "{\n" +
|
||||
" \"specversion\" : \"1.0\",\n" +
|
||||
" \"type\" : \"com.github.pull_request.opened\",\n" +
|
||||
" \"source\" : \"https://github.com/cloudevents/spec/pull\",\n" +
|
||||
" \"subject\" : \"123\",\n" +
|
||||
" \"id\" : \"A234-1234-1234\",\n" +
|
||||
" \"time\" : \"2018-04-05T17:31:00Z\",\n" +
|
||||
" \"comexampleextension1\" : \"value\",\n" +
|
||||
" \"comexampleothervalue\" : 5,\n" +
|
||||
" \"datacontenttype\" : \"application/octet-stream\",\n" +
|
||||
" \"data_base64\" : \"AQI=\"\n" +
|
||||
"}";
|
||||
|
||||
byte[] expected = new byte[]{ 0x1, 0x2 };
|
||||
CloudEventCustom<byte[]> cloudEventCustom = serializer.deserialize(
|
||||
content.getBytes(), new TypeRef<CloudEventCustom<byte[]>>() {});
|
||||
assertEquals("application/octet-stream", cloudEventCustom.getDatacontenttype());
|
||||
assertNull(cloudEventCustom.getData());
|
||||
assertArrayEquals(expected, cloudEventCustom.getBinaryData());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void serializeAndDeserialize() throws Exception {
|
||||
CloudEventCustom<MyClass> cloudEventCustom = new CloudEventCustom();
|
||||
cloudEventCustom.setId("idVal");
|
||||
cloudEventCustom.setSource("sourceVal");
|
||||
cloudEventCustom.setType("typeVal");
|
||||
cloudEventCustom.setSpecversion("specVal");
|
||||
cloudEventCustom.setDatacontenttype("contentVal");
|
||||
cloudEventCustom.setNewValue("specVal");
|
||||
cloudEventCustom.setNewInt(5);
|
||||
cloudEventCustom.setNewDouble(323.32323);
|
||||
cloudEventCustom.setData(new MyClass() {{
|
||||
this.id = 1;
|
||||
this.name = "hello world";
|
||||
}});
|
||||
byte[] byte_array = serializer.serialize(cloudEventCustom);
|
||||
CloudEventCustom<MyClass> cloudEventUnserial =
|
||||
serializer.deserialize(byte_array, new TypeRef<CloudEventCustom<MyClass>>() {});
|
||||
assertEquals(cloudEventCustom.getDatacontenttype(), cloudEventUnserial.getDatacontenttype());
|
||||
assertEquals(cloudEventCustom.getData().id, cloudEventUnserial.getData().id);
|
||||
assertEquals(cloudEventCustom.getData().name, cloudEventUnserial.getData().name);
|
||||
assertEquals(cloudEventCustom.getId(), cloudEventUnserial.getId());
|
||||
assertEquals(cloudEventCustom.getSource(), cloudEventUnserial.getSource());
|
||||
assertEquals(cloudEventCustom.getType(), cloudEventUnserial.getType());
|
||||
assertEquals(cloudEventCustom.getSpecversion(), cloudEventUnserial.getSpecversion());
|
||||
assertEquals(cloudEventCustom.getNewValue(), cloudEventUnserial.getNewValue());
|
||||
assertEquals(cloudEventCustom.getNewInt(), cloudEventUnserial.getNewInt());
|
||||
assertEquals(cloudEventCustom.getNewDouble(), cloudEventUnserial.getNewDouble(), 0.00001);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue