From 76afb4bcb74dd6c226e7fc40a56beb849ec48d1a Mon Sep 17 00:00:00 2001 From: MregXN Date: Tue, 23 May 2023 23:43:04 +0800 Subject: [PATCH] move skip logic to serializer Signed-off-by: MregXN --- sdk/src/main/java/io/dapr/client/DaprClientHttp.java | 12 +----------- .../main/java/io/dapr/client/ObjectSerializer.java | 4 ++++ 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/sdk/src/main/java/io/dapr/client/DaprClientHttp.java b/sdk/src/main/java/io/dapr/client/DaprClientHttp.java index 790db6312..286dbe8c1 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClientHttp.java +++ b/sdk/src/main/java/io/dapr/client/DaprClientHttp.java @@ -165,23 +165,13 @@ public Mono publishEvent(PublishEventRequest request) { Object data = request.getData(); Map metadata = request.getMetadata(); + byte[] serializedEvent = objectSerializer.serialize(data); // Content-type can be overwritten on a per-request basis. // It allows CloudEvents to be handled differently, for example. String contentType = request.getContentType(); if (contentType == null || contentType.isEmpty()) { contentType = objectSerializer.getContentType(); } - - byte[] serializedEvent; - if (contentType.equals("text/plain")) - { - serializedEvent = ((String)data).getBytes(); - } - else - { - serializedEvent = objectSerializer.serialize(data); - } - Map headers = Collections.singletonMap("content-type", contentType); String[] pathSegments = new String[]{ DaprHttp.API_VERSION, "publish", pubsubName, topic }; diff --git a/sdk/src/main/java/io/dapr/client/ObjectSerializer.java b/sdk/src/main/java/io/dapr/client/ObjectSerializer.java index a131060b9..be14acaf4 100644 --- a/sdk/src/main/java/io/dapr/client/ObjectSerializer.java +++ b/sdk/src/main/java/io/dapr/client/ObjectSerializer.java @@ -69,6 +69,10 @@ public byte[] serialize(Object state) throws IOException { return ((MessageLite) state).toByteArray(); } + if(state instanceof String) { + return ((String)state).getBytes(); + } + // Not string, not primitive, so it is a complex type: we use JSON for that. return OBJECT_MAPPER.writeValueAsBytes(state); }