Skip to content

Commit

Permalink
move skip logic to serializer
Browse files Browse the repository at this point in the history
Signed-off-by: MregXN <[email protected]>
  • Loading branch information
MregXN committed May 23, 2023
1 parent 34f015a commit 1aa95c6
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 25 deletions.
36 changes: 14 additions & 22 deletions sdk/src/main/java/io/dapr/client/DaprClientHttp.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,21 @@

package io.dapr.client;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.base.Strings;

import io.dapr.client.domain.BulkPublishRequest;
import io.dapr.client.domain.BulkPublishResponse;
import io.dapr.client.domain.ConfigurationItem;
Expand Down Expand Up @@ -51,18 +64,6 @@
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;


/**
* An adapter for the HTTP Client.
Expand Down Expand Up @@ -165,22 +166,13 @@ public Mono<Void> publishEvent(PublishEventRequest request) {
Object data = request.getData();
Map<String, String> 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<String, String> headers = Collections.singletonMap("content-type", contentType);

Expand Down
11 changes: 8 additions & 3 deletions sdk/src/main/java/io/dapr/client/ObjectSerializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,19 @@

package io.dapr.client;

import java.io.IOException;
import java.lang.reflect.Method;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.protobuf.MessageLite;

import io.dapr.client.domain.CloudEvent;
import io.dapr.utils.TypeRef;

import java.io.IOException;
import java.lang.reflect.Method;

/**
* Serializes and deserializes an internal object.
*/
Expand Down Expand Up @@ -69,6 +70,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);
}
Expand Down

0 comments on commit 1aa95c6

Please sign in to comment.