From 45fe471c48c7af04321609e02468523f545f317d Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Wed, 29 Jan 2020 11:18:29 -0800 Subject: [PATCH] Make serializers optional + javadocs about default serializers. (#168) --- .../examples/actors/http/DemoActorClient.java | 2 +- .../bindings/OutputBindingExample.java | 2 +- .../java/io/dapr/examples/bindings/README.md | 2 +- .../examples/invoke/http/InvokeClient.java | 2 +- .../io/dapr/examples/invoke/http/README.md | 2 +- .../dapr/examples/pubsub/http/Publisher.java | 2 +- .../io/dapr/examples/pubsub/http/README.md | 2 +- .../examples/state/http/OrderManager.java | 2 +- .../io/dapr/examples/state/http/README.md | 2 +- .../dapr/actors/client/ActorProxyBuilder.java | 24 ++++++-- .../io/dapr/actors/runtime/ActorRuntime.java | 39 +++++++++++-- .../actors/client/ActorProxyBuilderTest.java | 11 ++-- .../dapr/actors/runtime/ActorRuntimeTest.java | 16 +++--- .../it/actors/ActivationDeactivationIT.java | 3 +- .../io/dapr/it/binding/http/BindingIT.java | 2 +- .../io/dapr/it/state/GRPCStateClientIT.java | 2 +- .../io/dapr/it/state/HttpStateClientIT.java | 2 +- .../io/dapr/client/DaprClientBuilder.java | 55 ++++++++++++++----- .../io/dapr/client/DaprClientBuilderTest.java | 14 +++-- 19 files changed, 128 insertions(+), 58 deletions(-) diff --git a/examples/src/main/java/io/dapr/examples/actors/http/DemoActorClient.java b/examples/src/main/java/io/dapr/examples/actors/http/DemoActorClient.java index a3f370c57..81df5f7fb 100644 --- a/examples/src/main/java/io/dapr/examples/actors/http/DemoActorClient.java +++ b/examples/src/main/java/io/dapr/examples/actors/http/DemoActorClient.java @@ -35,7 +35,7 @@ public class DemoActorClient { private static final ExecutorService POOL = Executors.newFixedThreadPool(NUM_ACTORS); public static void main(String[] args) throws Exception { - ActorProxyBuilder builder = new ActorProxyBuilder("DemoActor", new DefaultObjectSerializer()); + ActorProxyBuilder builder = new ActorProxyBuilder("DemoActor"); List> futures = new ArrayList<>(NUM_ACTORS); diff --git a/examples/src/main/java/io/dapr/examples/bindings/OutputBindingExample.java b/examples/src/main/java/io/dapr/examples/bindings/OutputBindingExample.java index aefd1dea3..c0865bcff 100644 --- a/examples/src/main/java/io/dapr/examples/bindings/OutputBindingExample.java +++ b/examples/src/main/java/io/dapr/examples/bindings/OutputBindingExample.java @@ -25,7 +25,7 @@ public class OutputBindingExample { } public static void main(String[] args) { - DaprClient client = new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + DaprClient client = new DaprClientBuilder().build(); final String BINDING_NAME = "bindingSample"; diff --git a/examples/src/main/java/io/dapr/examples/bindings/README.md b/examples/src/main/java/io/dapr/examples/bindings/README.md index a69ea1488..7cf388a45 100644 --- a/examples/src/main/java/io/dapr/examples/bindings/README.md +++ b/examples/src/main/java/io/dapr/examples/bindings/README.md @@ -101,7 +101,7 @@ In the `OutputBindingExample.java` file, you will find the `OutputBindingExample public class OutputBindingExample { ///... public static void main(String[] args) throws Exception { - DaprClient client = new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + DaprClient client = new DaprClientBuilder().build(); final String BINDING_NAME = "bindingSample"; ///... MyClass myClass = new MyClass(); diff --git a/examples/src/main/java/io/dapr/examples/invoke/http/InvokeClient.java b/examples/src/main/java/io/dapr/examples/invoke/http/InvokeClient.java index ced9ab84b..72e682722 100644 --- a/examples/src/main/java/io/dapr/examples/invoke/http/InvokeClient.java +++ b/examples/src/main/java/io/dapr/examples/invoke/http/InvokeClient.java @@ -28,7 +28,7 @@ public class InvokeClient { * @param args Messages to be sent as request for the invoke API. */ public static void main(String[] args) { - DaprClient client = (new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer())).build(); + DaprClient client = (new DaprClientBuilder()).build(); for (String message : args) { client.invokeService(Verb.POST, SERVICE_APP_ID, "say", message, null, String.class).block(); } diff --git a/examples/src/main/java/io/dapr/examples/invoke/http/README.md b/examples/src/main/java/io/dapr/examples/invoke/http/README.md index 40e3c1f0c..3af90053c 100644 --- a/examples/src/main/java/io/dapr/examples/invoke/http/README.md +++ b/examples/src/main/java/io/dapr/examples/invoke/http/README.md @@ -106,7 +106,7 @@ public class InvokeClient { private static final String SERVICE_APP_ID = "invokedemo"; ///... public static void main(String[] args) { - DaprClient client = (new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer())).build(); + DaprClient client = (new DaprClientBuilder()).build(); for (String message : args) { client.invokeService(Verb.POST, SERVICE_APP_ID, "say", message, null, String.class).block(); } diff --git a/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java b/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java index 18eb1d615..edc1e2ad0 100644 --- a/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java +++ b/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java @@ -27,7 +27,7 @@ public class Publisher { public static void main(String[] args) throws Exception { //Creating the DaprClient: Using the default builder client produces an HTTP Dapr Client - DaprClient client = new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + DaprClient client = new DaprClientBuilder().build(); for (int i = 0; i < NUM_MESSAGES; i++) { String message = String.format("This is message #%d", i); //Publishing messages diff --git a/examples/src/main/java/io/dapr/examples/pubsub/http/README.md b/examples/src/main/java/io/dapr/examples/pubsub/http/README.md index 572d5f1d9..d774ab108 100644 --- a/examples/src/main/java/io/dapr/examples/pubsub/http/README.md +++ b/examples/src/main/java/io/dapr/examples/pubsub/http/README.md @@ -88,7 +88,7 @@ public class Publisher { private static final String TOPIC_NAME = "testingtopic"; ///... public static void main(String[] args) throws Exception { - DaprClient client = new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + DaprClient client = new DaprClientBuilder().build(); for (int i = 0; i < NUM_MESSAGES; i++) { String message = String.format("This is message #%d", i); client.publishEvent(TOPIC_NAME, message).block(); diff --git a/examples/src/main/java/io/dapr/examples/state/http/OrderManager.java b/examples/src/main/java/io/dapr/examples/state/http/OrderManager.java index 89a9244fd..3f1766dfb 100644 --- a/examples/src/main/java/io/dapr/examples/state/http/OrderManager.java +++ b/examples/src/main/java/io/dapr/examples/state/http/OrderManager.java @@ -39,7 +39,7 @@ public class OrderManager { HttpServer httpServer = HttpServer.create(new InetSocketAddress(httpPort), 0); DaprClient daprClient = - (new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer())).build(); + (new DaprClientBuilder()).build(); httpServer.createContext("/order").setHandler(e -> { out.println("Fetching order!"); diff --git a/examples/src/main/java/io/dapr/examples/state/http/README.md b/examples/src/main/java/io/dapr/examples/state/http/README.md index fc67e084a..6be523e76 100644 --- a/examples/src/main/java/io/dapr/examples/state/http/README.md +++ b/examples/src/main/java/io/dapr/examples/state/http/README.md @@ -30,7 +30,7 @@ This example implements a service listening on port 3000, while using Dapr's sta ``` DaprClient daprClient = - (new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer())).build(); + (new DaprClientBuilder()).build(); httpServer.createContext("/order").setHandler(e -> { out.println("Fetching order!"); diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java index 37ed0a909..2cd2fac3d 100644 --- a/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java +++ b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java @@ -3,6 +3,7 @@ package io.dapr.actors.client; import io.dapr.actors.ActorId; import io.dapr.client.DaprHttpBuilder; import io.dapr.serializer.DaprObjectSerializer; +import io.dapr.serializer.DefaultObjectSerializer; /** * Builder to generate an ActorProxy instance. Builder can be reused for multiple instances. @@ -22,24 +23,37 @@ public class ActorProxyBuilder { /** * Dapr's object serializer. */ - private final DaprObjectSerializer objectSerializer; + private DaprObjectSerializer objectSerializer; /** - * Instantiates a new builder for a given Actor type. + * Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer} by default. + * + * {@link DefaultObjectSerializer} is not recommended for production scenarios. * * @param actorType Actor's type. - * @param objectSerializer Serializer for objects sent/received. */ - public ActorProxyBuilder(String actorType, DaprObjectSerializer objectSerializer) { + public ActorProxyBuilder(String actorType) { if ((actorType == null) || actorType.isEmpty()) { throw new IllegalArgumentException("ActorType is required."); } + + this.actorType = actorType; + this.objectSerializer = new DefaultObjectSerializer(); + } + + /** + * Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer}. + * + * @param objectSerializer Serializer for objects sent/received. + * @return This instance. + */ + public ActorProxyBuilder withObjectSerializer(DaprObjectSerializer objectSerializer) { if (objectSerializer == null) { throw new IllegalArgumentException("Serializer is required."); } - this.actorType = actorType; this.objectSerializer = objectSerializer; + return this; } /** diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java index 720389aca..4db5251b8 100644 --- a/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java +++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java @@ -9,6 +9,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorTrace; import io.dapr.client.DaprHttpBuilder; import io.dapr.serializer.DaprObjectSerializer; +import io.dapr.serializer.DefaultObjectSerializer; import java.io.IOException; import java.util.Collections; import java.util.HashMap; @@ -108,6 +109,31 @@ public class ActorRuntime { return this.INTERNAL_SERIALIZER.serialize(this.config); } + /** + * Registers an actor with the runtime, using {@link DefaultObjectSerializer} and {@link DefaultActorFactory}. + * + * {@link DefaultObjectSerializer} is not recommended for production scenarios. + * + * @param clazz The type of actor. + * @param Actor class type. + */ + public void registerActor(Class clazz) { + registerActor(clazz, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + } + + /** + * Registers an actor with the runtime, using {@link DefaultObjectSerializer}. + * + * {@link DefaultObjectSerializer} is not recommended for production scenarios. + * + * @param clazz The type of actor. + * @param actorFactory An optional factory to create actors. This can be used for dependency injection. + * @param Actor class type. + */ + public void registerActor(Class clazz, ActorFactory actorFactory) { + registerActor(clazz, actorFactory, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + } + /** * Registers an actor with the runtime. * @@ -118,7 +144,7 @@ public class ActorRuntime { */ public void registerActor( Class clazz, DaprObjectSerializer objectSerializer, DaprObjectSerializer stateSerializer) { - registerActor(clazz, null, objectSerializer, stateSerializer); + registerActor(clazz, new DefaultActorFactory(), objectSerializer, stateSerializer); } /** @@ -137,21 +163,22 @@ public class ActorRuntime { if (clazz == null) { throw new IllegalArgumentException("Class is required."); } + if (actorFactory == null) { + throw new IllegalArgumentException("Actor factory is required."); + } if (objectSerializer == null) { - throw new IllegalArgumentException("Serializer is required."); + throw new IllegalArgumentException("Object serializer is required."); } if (stateSerializer == null) { - throw new IllegalArgumentException("State objectSerializer is required."); + throw new IllegalArgumentException("State serializer is required."); } ActorTypeInformation actorTypeInfo = ActorTypeInformation.create(clazz); - ActorFactory actualActorFactory = actorFactory != null ? actorFactory : new DefaultActorFactory(); - ActorRuntimeContext context = new ActorRuntimeContext<>( this, objectSerializer, - actualActorFactory, + actorFactory, actorTypeInfo, this.daprClient, new DaprStateAsyncProvider(this.daprClient, stateSerializer)); diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java index c04d68298..61e0af7f4 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java @@ -9,35 +9,36 @@ public class ActorProxyBuilderTest { @Test(expected = IllegalArgumentException.class) public void buildWithNullActorId() { - new ActorProxyBuilder("test", new DefaultObjectSerializer()) + new ActorProxyBuilder("test") .build(null); } @Test(expected = IllegalArgumentException.class) public void buildWithEmptyActorType() { - new ActorProxyBuilder("", new DefaultObjectSerializer()) + new ActorProxyBuilder("") .build(new ActorId("100")); } @Test(expected = IllegalArgumentException.class) public void buildWithNullActorType() { - new ActorProxyBuilder(null, new DefaultObjectSerializer()) + new ActorProxyBuilder(null) .build(new ActorId("100")); } @Test(expected = IllegalArgumentException.class) public void buildWithNullSerializer() { - new ActorProxyBuilder("MyActor", null) + new ActorProxyBuilder("MyActor") + .withObjectSerializer(null) .build(new ActorId("100")); } @Test() public void build() { - ActorProxyBuilder builder = new ActorProxyBuilder("test", new DefaultObjectSerializer()); + ActorProxyBuilder builder = new ActorProxyBuilder("test"); ActorProxy actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorRuntimeTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorRuntimeTest.java index ae6fc5839..58401b0a2 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorRuntimeTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorRuntimeTest.java @@ -67,21 +67,21 @@ public class ActorRuntimeTest { @Test public void registerActor() throws Exception { - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); Assert.assertTrue(new String(this.runtime.serializeConfig()).contains(ACTOR_NAME)); } @Test public void activateActor() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); this.runtime.activate(ACTOR_NAME, actorId).block(); } @Test public void invokeActor() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); this.runtime.activate(ACTOR_NAME, actorId).block(); byte[] response = this.runtime.invoke(ACTOR_NAME, actorId, "say", null).block(); @@ -92,7 +92,7 @@ public class ActorRuntimeTest { @Test public void activateThendeactivateActor() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); this.runtime.activate(ACTOR_NAME, actorId).block(); this.runtime.deactivate(ACTOR_NAME, actorId).block(); } @@ -100,14 +100,14 @@ public class ActorRuntimeTest { @Test public void deactivateActor() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); this.runtime.deactivate(ACTOR_NAME, actorId).block(); } @Test public void lazyActivate() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); this.runtime.activate(ACTOR_NAME, actorId).block(); this.runtime.invoke(ACTOR_NAME, actorId, "say", null) @@ -120,7 +120,7 @@ public class ActorRuntimeTest { @Test public void lazyDeactivate() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); this.runtime.activate(ACTOR_NAME, actorId).block(); Mono deacticateCall = this.runtime.deactivate(ACTOR_NAME, actorId); @@ -139,7 +139,7 @@ public class ActorRuntimeTest { @Test public void lazyInvoke() throws Exception { String actorId = UUID.randomUUID().toString(); - this.runtime.registerActor(MyActorImpl.class, new DefaultObjectSerializer(), new DefaultObjectSerializer()); + this.runtime.registerActor(MyActorImpl.class); Mono invokeCall = this.runtime.invoke(ACTOR_NAME, actorId, "say", null); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActivationDeactivationIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActivationDeactivationIT.java index 37164d336..c106a98d2 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActivationDeactivationIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActivationDeactivationIT.java @@ -53,9 +53,8 @@ public class ActivationDeactivationIT extends BaseIT { final AtomicInteger atomicInteger = new AtomicInteger(1); String actorType = "DemoActorTest"; - DefaultObjectSerializer serializer = new DefaultObjectSerializer(); logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = new ActorProxyBuilder(actorType, serializer); + ActorProxyBuilder proxyBuilder = new ActorProxyBuilder(actorType); logger.debug("Creating actorId"); ActorId actorId1 = new ActorId(Integer.toString(atomicInteger.getAndIncrement())); logger.debug("Building proxy"); diff --git a/sdk-tests/src/test/java/io/dapr/it/binding/http/BindingIT.java b/sdk-tests/src/test/java/io/dapr/it/binding/http/BindingIT.java index 54919650f..7261a1da5 100644 --- a/sdk-tests/src/test/java/io/dapr/it/binding/http/BindingIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/binding/http/BindingIT.java @@ -49,7 +49,7 @@ public class BindingIT extends BaseIT { // TODO: figure out why this wait is needed for this scenario to work end-to-end. Kafka not up yet? Thread.sleep(120000); - DaprClient client = new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + DaprClient client = new DaprClientBuilder().build(); final String BINDING_NAME = "sample123"; diff --git a/sdk-tests/src/test/java/io/dapr/it/state/GRPCStateClientIT.java b/sdk-tests/src/test/java/io/dapr/it/state/GRPCStateClientIT.java index ba167d562..ba0158d08 100644 --- a/sdk-tests/src/test/java/io/dapr/it/state/GRPCStateClientIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/state/GRPCStateClientIT.java @@ -42,7 +42,7 @@ public class GRPCStateClientIT extends BaseIT { 5000 ); daprRun.switchToGRPC(); - daprClient = new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + daprClient = new DaprClientBuilder().build(); assertTrue(daprClient instanceof DaprClientGrpcAdapter); } diff --git a/sdk-tests/src/test/java/io/dapr/it/state/HttpStateClientIT.java b/sdk-tests/src/test/java/io/dapr/it/state/HttpStateClientIT.java index edefd46e2..b24481de9 100644 --- a/sdk-tests/src/test/java/io/dapr/it/state/HttpStateClientIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/state/HttpStateClientIT.java @@ -545,7 +545,7 @@ public class HttpStateClientIT extends BaseIT { } private static DaprClient buildDaprClient() { - return new DaprClientBuilder(new DefaultObjectSerializer(), new DefaultObjectSerializer()).build(); + return new DaprClientBuilder().build(); } } diff --git a/sdk/src/main/java/io/dapr/client/DaprClientBuilder.java b/sdk/src/main/java/io/dapr/client/DaprClientBuilder.java index e024ddf22..8e8c97551 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClientBuilder.java +++ b/sdk/src/main/java/io/dapr/client/DaprClientBuilder.java @@ -19,40 +19,65 @@ import okhttp3.OkHttpClient; */ public class DaprClientBuilder { - /** - * Serializer used for request and response objects in DaprClient. - */ - private final DaprObjectSerializer objectSerializer; - - /** - * Serializer used for state objects in DaprClient. - */ - private final DaprObjectSerializer stateSerializer; - /** * Determine if this builder will create GRPC clients instead of HTTP clients. */ private final boolean useGRPC; + /** + * Serializer used for request and response objects in DaprClient. + */ + private DaprObjectSerializer objectSerializer; + + /** + * Serializer used for state objects in DaprClient. + */ + private DaprObjectSerializer stateSerializer; + /** * Creates a constructor for DaprClient. * + * {@link DefaultObjectSerializer} is used for object and state serializers by defaul but is not recommended + * for production scenarios. + */ + public DaprClientBuilder() { + this.objectSerializer = new DefaultObjectSerializer(); + this.stateSerializer = new DefaultObjectSerializer(); + this.useGRPC = Properties.USE_GRPC.get(); + } + + /** + * Sets the serializer for objects to be sent and received from Dapr. + * * See {@link DefaultObjectSerializer} as possible serializer for non-production scenarios. * * @param objectSerializer Serializer for objects to be sent and received from Dapr. - * @param stateSerializer Serializer for objects to be persisted. + * @return This instance. */ - public DaprClientBuilder(DaprObjectSerializer objectSerializer, DaprObjectSerializer stateSerializer) { + public DaprClientBuilder withObjectSerializer(DaprObjectSerializer objectSerializer) { if (objectSerializer == null) { - throw new IllegalArgumentException("Serializer is required"); + throw new IllegalArgumentException("Object serializer is required"); } + + this.objectSerializer = objectSerializer; + return this; + } + + /** + * Sets the serializer for objects to be persisted. + * + * See {@link DefaultObjectSerializer} as possible serializer for non-production scenarios. + * + * @param stateSerializer Serializer for objects to be persisted. + * @return This instance. + */ + public DaprClientBuilder withStateSerializer(DaprObjectSerializer stateSerializer) { if (stateSerializer == null) { throw new IllegalArgumentException("State serializer is required"); } - this.objectSerializer = objectSerializer; this.stateSerializer = stateSerializer; - this.useGRPC = Properties.USE_GRPC.get(); + return this; } /** diff --git a/sdk/src/test/java/io/dapr/client/DaprClientBuilderTest.java b/sdk/src/test/java/io/dapr/client/DaprClientBuilderTest.java index 60dc6ac82..0bb9f4a68 100644 --- a/sdk/src/test/java/io/dapr/client/DaprClientBuilderTest.java +++ b/sdk/src/test/java/io/dapr/client/DaprClientBuilderTest.java @@ -11,17 +11,21 @@ public class DaprClientBuilderTest { public void build() { DaprObjectSerializer objectSerializer = mock(DaprObjectSerializer.class); DaprObjectSerializer stateSerializer = mock(DaprObjectSerializer.class); - DaprClientBuilder daprClientBuilder = new DaprClientBuilder(objectSerializer, stateSerializer); + DaprClientBuilder daprClientBuilder = new DaprClientBuilder(); + daprClientBuilder.withObjectSerializer(objectSerializer); + daprClientBuilder.withStateSerializer(stateSerializer); DaprClient daprClient = daprClientBuilder.build(); assertNotNull(daprClient); } @Test(expected = IllegalArgumentException.class) - public void buildException() { - DaprClientBuilder daprClientBuilder = new DaprClientBuilder(null,null); - DaprClient daprClient = daprClientBuilder.build(); - assertNotNull(daprClient); + public void noObjectSerializer() { + new DaprClientBuilder().withObjectSerializer(null); } + @Test(expected = IllegalArgumentException.class) + public void noStateSerializer() { + new DaprClientBuilder().withStateSerializer(null); + } } \ No newline at end of file