From 1f85a846c7febcb05f547f057f2381e1512af294 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 09:48:12 -0800 Subject: [PATCH 1/7] Use DaprChannel instead of closeable ActorProxyBuilder. --- .../io/dapr/actors/client/DaprChannel.java | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java b/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java new file mode 100644 index 0000000000..11f33ce5fb --- /dev/null +++ b/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + */ + +package io.dapr.actors.client; + +import io.dapr.actors.ActorId; +import io.dapr.actors.ActorUtils; +import io.dapr.client.DaprApiProtocol; +import io.dapr.client.DaprHttpBuilder; +import io.dapr.config.Properties; +import io.dapr.serializer.DaprObjectSerializer; +import io.dapr.serializer.DefaultObjectSerializer; +import io.dapr.v1.DaprGrpc; +import io.grpc.ManagedChannel; +import io.grpc.ManagedChannelBuilder; + +import java.io.Closeable; +import java.lang.reflect.Proxy; + +/** + * Builder to generate an ActorProxy instance. Builder can be reused for multiple instances. + */ +public class DaprChannel implements AutoCloseable { + + /** + * Determine if channel is for GRPC clients or HTTP clients. + */ + private final DaprApiProtocol apiProtocol; + + /** + * gRPC channel for communication with Dapr sidecar. + */ + private final ManagedChannel channel; + + /** + * Instantiates a new channel for Dapr sidecar communication. + * + * @param apiProtocol Dapr's API protocol. + */ + private DaprChannel(DaprApiProtocol apiProtocol) { + this.apiProtocol = apiProtocol; + this.channel = buildManagedChannel(apiProtocol); + } + + /** + * Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer}. + * + * @param objectSerializer Serializer for objects sent/received. + * @return This instance. + */ + public DaprChannel withObjectSerializer(DaprObjectSerializer objectSerializer) { + if (objectSerializer == null) { + throw new IllegalArgumentException("Serializer is required."); + } + + this.objectSerializer = objectSerializer; + return this; + } + + /** + * Instantiates a new ActorProxy. + * + * @param actorId Actor's identifier. + * @return New instance of ActorProxy. + */ + public T build(ActorId actorId) { + if (actorId == null) { + throw new IllegalArgumentException("Cannot instantiate an Actor without Id."); + } + + ActorProxyImpl proxy = new ActorProxyImpl( + this.actorType, + actorId, + this.objectSerializer, + buildDaprClient()); + + if (this.clazz.equals(ActorProxy.class)) { + // If users want to use the not strongly typed API, we respect that here. + return (T) proxy; + } + + return (T) Proxy.newProxyInstance( + ActorProxyImpl.class.getClassLoader(), + new Class[]{this.clazz}, + proxy); + } + + /** + * Build an instance of the Client based on the provided setup. + * + * @return an instance of the setup Client + * @throws IllegalStateException if any required field is missing + */ + private DaprClient buildDaprClient() { + switch (this.apiProtocol) { + case GRPC: return new DaprGrpcClient(DaprGrpc.newFutureStub(this.channel)); + case HTTP: return new DaprHttpClient(daprHttpBuilder.build()); + default: throw new IllegalStateException("Unsupported protocol: " + this.apiProtocol.name()); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void close() { + if (channel != null && !channel.isShutdown()) { + channel.shutdown(); + } + } + + /** + * Creates a GRPC managed channel (or null, if not applicable). + * + * @param apiProtocol Dapr's API protocol. + * @return GRPC managed channel or null. + */ + private static ManagedChannel buildManagedChannel(DaprApiProtocol apiProtocol) { + if (apiProtocol != DaprApiProtocol.GRPC) { + return null; + } + + int port = Properties.GRPC_PORT.get(); + if (port <= 0) { + throw new IllegalArgumentException("Invalid port."); + } + + return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port).usePlaintext().build(); + } +} From 55f238898619a646dfe17b12ab19ef7e0f466eb3 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 11:26:18 -0800 Subject: [PATCH 2/7] Refactor Actor channel into DaprChannel and out of ActorProxyBuilder. --- .../dapr/examples/actors/DemoActorClient.java | 4 +- .../java/io/dapr/examples/actors/README.md | 5 +- .../dapr/actors/client/ActorProxyBuilder.java | 93 +++--------------- .../io/dapr/actors/client/DaprChannel.java | 98 ++++++++----------- .../actors/client/ActorProxyBuilderTest.java | 42 +++++--- .../src/test/java/io/dapr/it/BaseIT.java | 17 ++-- .../it/actors/ActivationDeactivationIT.java | 3 +- .../io/dapr/it/actors/ActorMethodNameIT.java | 6 +- .../it/actors/ActorReminderFailoverIT.java | 3 +- .../it/actors/ActorReminderRecoveryIT.java | 4 +- .../java/io/dapr/it/actors/ActorStateIT.java | 6 +- .../dapr/it/actors/ActorTimerRecoveryIT.java | 3 +- .../actors/ActorTurnBasedConcurrencyIT.java | 3 +- .../java/io/dapr/client/DaprHttpBuilder.java | 25 +---- 14 files changed, 116 insertions(+), 196 deletions(-) diff --git a/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java b/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java index d25065f3b1..5a20c25d63 100644 --- a/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java +++ b/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java @@ -7,6 +7,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxyBuilder; +import io.dapr.actors.client.DaprChannel; import java.util.ArrayList; import java.util.List; @@ -30,7 +31,8 @@ public class DemoActorClient { * @throws InterruptedException If program has been interrupted. */ public static void main(String[] args) throws InterruptedException { - try (ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class)) { + try (DaprChannel channel = new DaprChannel()) { + ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class, channel); List threads = new ArrayList<>(NUM_ACTORS); // Creates multiple actors. diff --git a/examples/src/main/java/io/dapr/examples/actors/README.md b/examples/src/main/java/io/dapr/examples/actors/README.md index 4f6855dea5..a07fb743b7 100644 --- a/examples/src/main/java/io/dapr/examples/actors/README.md +++ b/examples/src/main/java/io/dapr/examples/actors/README.md @@ -149,7 +149,8 @@ public class DemoActorClient { private static final int NUM_ACTORS = 3; public static void main(String[] args) throws InterruptedException { - try (ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class)) { + try (DaprChannel channel = new DaprChannel()) { + ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class, channel); ///... for (int i = 0; i < NUM_ACTORS; i++) { DemoActor actor = builder.build(ActorId.createRandom()); @@ -189,7 +190,7 @@ public class DemoActorClient { } ``` -First, the client defines how many actors it is going to create. The main method declares a `ActorProxyBuilder` to create instances of the `DemoActor` interface, which are implemented automatically by the SDK and make remote calls to the equivalent methods in Actor runtime. `ActorProxyBuilder` implements `Closeable`, which means it holds resources that need to be closed. In this example, we use the "try-resource" feature in Java. +First, the client defines how many actors it is going to create. The main method declares a `DaprChannel` and `ActorProxyBuilder` to create instances of the `DemoActor` interface, which are implemented automatically by the SDK and make remote calls to the equivalent methods in Actor runtime. `DaprChannel` is reusable for different actor types and should be instantiated only once in your code. `DaprChannel` also implements `AutoCloseable`, which means it holds resources that need to be closed. In this example, we use the "try-resource" feature in Java. Then, the code executes the `callActorForever` private method once per actor. Initially, it will invoke `registerReminder()`, which sets the due time and period for the reminder. Then, `incrementAndGet()` increments a counter, persists it and sends it back as response. Finally `say` method which will print a message containing the received string along with the formatted server time. 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 d001ec4049..81e8a629e9 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 @@ -7,27 +7,15 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorUtils; -import io.dapr.client.DaprApiProtocol; -import io.dapr.client.DaprHttpBuilder; -import io.dapr.config.Properties; import io.dapr.serializer.DaprObjectSerializer; import io.dapr.serializer.DefaultObjectSerializer; -import io.dapr.v1.DaprGrpc; -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import java.io.Closeable; import java.lang.reflect.Proxy; /** * Builder to generate an ActorProxy instance. Builder can be reused for multiple instances. */ -public class ActorProxyBuilder implements Closeable { - - /** - * Determine if this builder will create GRPC clients instead of HTTP clients. - */ - private final DaprApiProtocol apiProtocol; +public class ActorProxyBuilder { /** * Actor's type. @@ -44,37 +32,21 @@ public class ActorProxyBuilder implements Closeable { */ private DaprObjectSerializer objectSerializer; - /** - * Builds Dapr HTTP client. - */ - private DaprHttpBuilder daprHttpBuilder; - /** * Channel for communication with Dapr. */ - private final ManagedChannel channel; - - /** - * Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer} by default. - * - * {@link DefaultObjectSerializer} is not recommended for production scenarios. - * - * @param actorTypeClass Actor's type class. - */ - public ActorProxyBuilder(Class actorTypeClass) { - this(ActorUtils.findActorTypeName(actorTypeClass), actorTypeClass); - } + private final DaprChannel channel; /** * 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 actorTypeClass Actor's type class. + * @param channel Dapr's sidecar channel. */ - public ActorProxyBuilder(String actorType, Class actorTypeClass) { - this(actorType, actorTypeClass, Properties.API_PROTOCOL.get()); + public ActorProxyBuilder(Class actorTypeClass, DaprChannel channel) { + this(ActorUtils.findActorTypeName(actorTypeClass), actorTypeClass, channel); } /** @@ -84,22 +56,23 @@ public ActorProxyBuilder(String actorType, Class actorTypeClass) { * * @param actorType Actor's type. * @param actorTypeClass Actor's type class. - * @param apiProtocol Dapr's API protocol. + * @param channel Dapr's sidecar channel. */ - private ActorProxyBuilder(String actorType, Class actorTypeClass, DaprApiProtocol apiProtocol) { + public ActorProxyBuilder(String actorType, Class actorTypeClass, DaprChannel channel) { if ((actorType == null) || actorType.isEmpty()) { throw new IllegalArgumentException("ActorType is required."); } if (actorTypeClass == null) { throw new IllegalArgumentException("ActorTypeClass is required."); } + if (channel == null) { + throw new IllegalArgumentException("Channel is required."); + } - this.apiProtocol = apiProtocol; this.actorType = actorType; this.objectSerializer = new DefaultObjectSerializer(); this.clazz = actorTypeClass; - this.daprHttpBuilder = new DaprHttpBuilder(); - this.channel = buildManagedChannel(apiProtocol); + this.channel = channel; } /** @@ -132,7 +105,7 @@ public T build(ActorId actorId) { this.actorType, actorId, this.objectSerializer, - buildDaprClient()); + this.channel.getDaprClient()); if (this.clazz.equals(ActorProxy.class)) { // If users want to use the not strongly typed API, we respect that here. @@ -145,46 +118,4 @@ public T build(ActorId actorId) { proxy); } - /** - * Build an instance of the Client based on the provided setup. - * - * @return an instance of the setup Client - * @throws java.lang.IllegalStateException if any required field is missing - */ - private DaprClient buildDaprClient() { - switch (this.apiProtocol) { - case GRPC: return new DaprGrpcClient(DaprGrpc.newFutureStub(this.channel)); - case HTTP: return new DaprHttpClient(daprHttpBuilder.build()); - default: throw new IllegalStateException("Unsupported protocol: " + this.apiProtocol.name()); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void close() { - if (channel != null && !channel.isShutdown()) { - channel.shutdown(); - } - } - - /** - * Creates a GRPC managed channel (or null, if not applicable). - * - * @param apiProtocol Dapr's API protocol. - * @return GRPC managed channel or null. - */ - private static ManagedChannel buildManagedChannel(DaprApiProtocol apiProtocol) { - if (apiProtocol != DaprApiProtocol.GRPC) { - return null; - } - - int port = Properties.GRPC_PORT.get(); - if (port <= 0) { - throw new IllegalArgumentException("Invalid port."); - } - - return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port).usePlaintext().build(); - } } diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java b/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java index 11f33ce5fb..215091b59f 100644 --- a/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java +++ b/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java @@ -5,22 +5,16 @@ package io.dapr.actors.client; -import io.dapr.actors.ActorId; -import io.dapr.actors.ActorUtils; import io.dapr.client.DaprApiProtocol; import io.dapr.client.DaprHttpBuilder; import io.dapr.config.Properties; -import io.dapr.serializer.DaprObjectSerializer; -import io.dapr.serializer.DefaultObjectSerializer; import io.dapr.v1.DaprGrpc; +import io.grpc.Channel; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; -import java.io.Closeable; -import java.lang.reflect.Proxy; - /** - * Builder to generate an ActorProxy instance. Builder can be reused for multiple instances. + * Holds a channel for Dapr sidecar communication. Channel should be reused. */ public class DaprChannel implements AutoCloseable { @@ -32,73 +26,47 @@ public class DaprChannel implements AutoCloseable { /** * gRPC channel for communication with Dapr sidecar. */ - private final ManagedChannel channel; + private final ManagedChannel grpcManagedChannel; + + /** + * Dapr's client. + */ + private final DaprClient daprClient; /** * Instantiates a new channel for Dapr sidecar communication. - * - * @param apiProtocol Dapr's API protocol. */ - private DaprChannel(DaprApiProtocol apiProtocol) { - this.apiProtocol = apiProtocol; - this.channel = buildManagedChannel(apiProtocol); + public DaprChannel() { + this(Properties.API_PROTOCOL.get()); } /** - * Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer}. + * Instantiates a new channel for Dapr sidecar communication. * - * @param objectSerializer Serializer for objects sent/received. - * @return This instance. + * @param apiProtocol Dapr's API protocol. */ - public DaprChannel withObjectSerializer(DaprObjectSerializer objectSerializer) { - if (objectSerializer == null) { - throw new IllegalArgumentException("Serializer is required."); - } - - this.objectSerializer = objectSerializer; - return this; + private DaprChannel(DaprApiProtocol apiProtocol) { + this(apiProtocol, buildManagedChannel(apiProtocol)); } /** - * Instantiates a new ActorProxy. + * Instantiates a new channel for Dapr sidecar communication. * - * @param actorId Actor's identifier. - * @return New instance of ActorProxy. + * @param apiProtocol Dapr's API protocol. */ - public T build(ActorId actorId) { - if (actorId == null) { - throw new IllegalArgumentException("Cannot instantiate an Actor without Id."); - } - - ActorProxyImpl proxy = new ActorProxyImpl( - this.actorType, - actorId, - this.objectSerializer, - buildDaprClient()); - - if (this.clazz.equals(ActorProxy.class)) { - // If users want to use the not strongly typed API, we respect that here. - return (T) proxy; - } - - return (T) Proxy.newProxyInstance( - ActorProxyImpl.class.getClassLoader(), - new Class[]{this.clazz}, - proxy); + private DaprChannel(DaprApiProtocol apiProtocol, ManagedChannel grpcManagedChannel) { + this.apiProtocol = apiProtocol; + this.grpcManagedChannel = grpcManagedChannel; + this.daprClient = buildDaprClient(apiProtocol, grpcManagedChannel); } /** - * Build an instance of the Client based on the provided setup. + * Gets the Dapr client. * - * @return an instance of the setup Client - * @throws IllegalStateException if any required field is missing + * @return the Dapr client. */ - private DaprClient buildDaprClient() { - switch (this.apiProtocol) { - case GRPC: return new DaprGrpcClient(DaprGrpc.newFutureStub(this.channel)); - case HTTP: return new DaprHttpClient(daprHttpBuilder.build()); - default: throw new IllegalStateException("Unsupported protocol: " + this.apiProtocol.name()); - } + DaprClient getDaprClient() { + return this.daprClient; } /** @@ -106,8 +74,8 @@ private DaprClient buildDaprClient() { */ @Override public void close() { - if (channel != null && !channel.isShutdown()) { - channel.shutdown(); + if (grpcManagedChannel != null && !grpcManagedChannel.isShutdown()) { + grpcManagedChannel.shutdown(); } } @@ -129,4 +97,18 @@ private static ManagedChannel buildManagedChannel(DaprApiProtocol apiProtocol) { return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port).usePlaintext().build(); } + + /** + * Build an instance of the Client based on the provided setup. + * + * @return an instance of the setup Client + * @throws java.lang.IllegalStateException if any required field is missing + */ + private static DaprClient buildDaprClient(DaprApiProtocol apiProtocol, Channel grpcManagedChannel) { + switch (apiProtocol) { + case GRPC: return new DaprGrpcClient(DaprGrpc.newFutureStub(grpcManagedChannel)); + case HTTP: return new DaprHttpClient(new DaprHttpBuilder().build()); + default: throw new IllegalStateException("Unsupported protocol: " + apiProtocol.name()); + } + } } 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 be8df06378..1d2de372d4 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 @@ -7,43 +7,56 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorType; +import org.junit.AfterClass; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; public class ActorProxyBuilderTest { + private static DaprChannel daprChannel; + + @BeforeClass + public static void initClass() { + daprChannel = new DaprChannel(); + } + + @AfterClass + public static void tearDownClass() { + daprChannel.close(); + } + @Test(expected = IllegalArgumentException.class) public void buildWithNullActorId() { - new ActorProxyBuilder("test", Object.class) + new ActorProxyBuilder("test", Object.class, daprChannel) .build(null); - } @Test(expected = IllegalArgumentException.class) public void buildWithEmptyActorType() { - new ActorProxyBuilder("", Object.class) - .build(new ActorId("100")); - + new ActorProxyBuilder("", Object.class, daprChannel); } @Test(expected = IllegalArgumentException.class) public void buildWithNullActorType() { - new ActorProxyBuilder(null, Object.class) - .build(new ActorId("100")); - + new ActorProxyBuilder(null, Object.class, daprChannel); } @Test(expected = IllegalArgumentException.class) public void buildWithNullSerializer() { - new ActorProxyBuilder("MyActor", Object.class) + new ActorProxyBuilder("MyActor", Object.class, daprChannel) .withObjectSerializer(null) .build(new ActorId("100")); + } + @Test(expected = IllegalArgumentException.class) + public void buildWithNullChannel() { + new ActorProxyBuilder("MyActor", Object.class, null); } @Test() public void build() { - ActorProxyBuilder builder = new ActorProxyBuilder("test", ActorProxy.class); + ActorProxyBuilder builder = new ActorProxyBuilder("test", ActorProxy.class, daprChannel); ActorProxy actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); @@ -53,7 +66,7 @@ public void build() { @Test() public void buildWithType() { - ActorProxyBuilder builder = new ActorProxyBuilder(MyActor.class); + ActorProxyBuilder builder = new ActorProxyBuilder(MyActor.class, daprChannel); MyActor actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); @@ -61,8 +74,8 @@ public void buildWithType() { @Test() public void buildWithTypeDefaultName() { - ActorProxyBuilder builder = new ActorProxyBuilder(MyActorWithDefaultName.class); - MyActorWithDefaultName actorProxy = builder.build(new ActorId("100")); + ActorProxyBuilder builder = new ActorProxyBuilder(ActorWithDefaultName.class, daprChannel); + ActorWithDefaultName actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); } @@ -71,6 +84,7 @@ public void buildWithTypeDefaultName() { public interface MyActor { } - public interface MyActorWithDefaultName { + public interface ActorWithDefaultName { } + } \ No newline at end of file diff --git a/sdk-tests/src/test/java/io/dapr/it/BaseIT.java b/sdk-tests/src/test/java/io/dapr/it/BaseIT.java index 1e8f146e4b..b5b6723478 100644 --- a/sdk-tests/src/test/java/io/dapr/it/BaseIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/BaseIT.java @@ -5,11 +5,11 @@ package io.dapr.it; +import io.dapr.actors.client.DaprChannel; import io.dapr.client.DaprApiProtocol; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.AfterClass; -import java.io.Closeable; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; @@ -23,7 +23,7 @@ public abstract class BaseIT { private static final Queue TO_BE_STOPPED = new LinkedList<>(); - private static final Queue TO_BE_CLOSED = new LinkedList<>(); + private static final Queue TO_BE_CLOSED = new LinkedList<>(); protected static DaprRun startDaprApp( String testName, @@ -109,18 +109,17 @@ protected static ImmutablePair startSplitDaprAndApp( @AfterClass public static void cleanUp() throws Exception { while (!TO_BE_CLOSED.isEmpty()) { - Closeable toBeClosed = TO_BE_CLOSED.remove(); - toBeClosed.close(); + TO_BE_CLOSED.remove().close(); } while (!TO_BE_STOPPED.isEmpty()) { - Stoppable toBeStopped = TO_BE_STOPPED.remove(); - toBeStopped.stop(); + TO_BE_STOPPED.remove().stop(); } } - protected static T deferClose(T closeable) { - TO_BE_CLOSED.add(closeable); - return closeable; + protected DaprChannel newDaprActorChannel() { + DaprChannel channel = new DaprChannel(); + TO_BE_CLOSED.add(channel); + return channel; } } 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 2641672bc7..f1d3df74b9 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 @@ -7,6 +7,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxyBuilder; +import io.dapr.actors.client.DaprChannel; import io.dapr.it.BaseIT; import io.dapr.it.actors.services.springboot.DemoActor; import io.dapr.it.actors.services.springboot.DemoActorService; @@ -38,7 +39,7 @@ public void activateInvokeDeactivate() throws Exception { final AtomicInteger atomicInteger = new AtomicInteger(1); logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder(DemoActor.class)); + ActorProxyBuilder proxyBuilder = new ActorProxyBuilder(DemoActor.class, newDaprActorChannel()); 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/actors/ActorMethodNameIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorMethodNameIT.java index 70071b5724..4c555f77dd 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorMethodNameIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorMethodNameIT.java @@ -33,7 +33,8 @@ public void actorMethodNameChange() throws Exception { 60000); logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder("MyActorTest", MyActor.class)); + ActorProxyBuilder proxyBuilder = + new ActorProxyBuilder("MyActorTest", MyActor.class, newDaprActorChannel()); logger.debug("Creating actorId"); ActorId actorId1 = new ActorId("1"); logger.debug("Building proxy"); @@ -47,7 +48,8 @@ public void actorMethodNameChange() throws Exception { }, 60000); logger.debug("Creating proxy builder 2"); - ActorProxyBuilder proxyBuilder2 = deferClose(new ActorProxyBuilder("MyActorTest", ActorProxy.class)); + ActorProxyBuilder proxyBuilder2 = + new ActorProxyBuilder("MyActorTest", ActorProxy.class, newDaprActorChannel()); logger.debug("Building proxy 2"); ActorProxy proxy2 = proxyBuilder2.build(actorId1); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java index acc56b140a..a549312d04 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java @@ -63,7 +63,8 @@ public void init() throws Exception { String actorType="MyActorTest"; logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder(actorType, ActorProxy.class)); + ActorProxyBuilder proxyBuilder = + new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); logger.debug("Creating actorId"); logger.debug("Building proxy"); proxy = proxyBuilder.build(actorId); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java index 8989160bc7..e38a2f2588 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java @@ -8,6 +8,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxy; import io.dapr.actors.client.ActorProxyBuilder; +import io.dapr.actors.client.DaprChannel; import io.dapr.it.AppRun; import io.dapr.it.BaseIT; import io.dapr.it.DaprRun; @@ -51,7 +52,8 @@ public void init() throws Exception { String actorType="MyActorTest"; logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder(actorType, ActorProxy.class)); + ActorProxyBuilder proxyBuilder = + new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); logger.debug("Creating actorId"); logger.debug("Building proxy"); proxy = proxyBuilder.build(actorId); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java index 60fc74abae..5715dd8ecc 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java @@ -8,6 +8,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxy; import io.dapr.actors.client.ActorProxyBuilder; +import io.dapr.actors.client.DaprChannel; import io.dapr.client.DaprApiProtocol; import io.dapr.it.BaseIT; import io.dapr.it.DaprRun; @@ -74,7 +75,8 @@ public void writeReadState() throws Exception { String.format("%d-%b-%b", System.currentTimeMillis(), this.daprClientProtocol, this.serviceAppProtocol)); String actorType = "StatefulActorTest"; logger.debug("Building proxy ..."); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder(actorType, ActorProxy.class)); + ActorProxyBuilder proxyBuilder = + new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); ActorProxy proxy = proxyBuilder.build(actorId); // Validate conditional read works. @@ -160,7 +162,7 @@ public void writeReadState() throws Exception { runtime.switchToProtocol(this.daprClientProtocol); // Need new proxy builder because the proxy builder holds the channel. - proxyBuilder = deferClose(new ActorProxyBuilder(actorType, ActorProxy.class)); + proxyBuilder = new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); ActorProxy newProxy = proxyBuilder.build(actorId); callWithRetry(() -> { diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java index 0de9292804..ab117bf90d 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java @@ -47,7 +47,8 @@ public void timerRecoveryTest() throws Exception { String actorType="MyActorTest"; logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder(actorType, ActorProxy.class)); + ActorProxyBuilder proxyBuilder = + new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); logger.debug("Creating actorId"); ActorId actorId = new ActorId(UUID.randomUUID().toString()); logger.debug("Building proxy"); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java index 9597605e26..6f07dd86bc 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java @@ -80,7 +80,8 @@ public void actorTest1() throws Exception { String actorType="MyActorTest"; logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = deferClose(new ActorProxyBuilder(actorType, ActorProxy.class)); + ActorProxyBuilder proxyBuilder = + new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); logger.debug("Creating actorId"); ActorId actorId1 = new ActorId(ACTOR_ID); logger.debug("Building proxy"); diff --git a/sdk/src/main/java/io/dapr/client/DaprHttpBuilder.java b/sdk/src/main/java/io/dapr/client/DaprHttpBuilder.java index 40013add96..8d53490607 100644 --- a/sdk/src/main/java/io/dapr/client/DaprHttpBuilder.java +++ b/sdk/src/main/java/io/dapr/client/DaprHttpBuilder.java @@ -26,26 +26,6 @@ public class DaprHttpBuilder { */ private static final Object LOCK = new Object(); - /** - * Read timeout used to build object. - */ - private Duration readTimeout = Duration.ofSeconds(Properties.HTTP_CLIENT_READ_TIMEOUT_SECONDS.get()); - - /** - * Sets the read timeout duration for the instance to be built. - * - *

Instead, set environment variable "DAPR_HTTP_CLIENT_READTIMEOUTSECONDS", - * or system property "dapr.http.client.readtimeoutseconds". - * - * @param duration Read timeout duration. - * @return Same builder instance. - */ - @Deprecated - public DaprHttpBuilder withReadTimeout(Duration duration) { - this.readTimeout = duration; - return this; - } - /** * Build an instance of the Http client based on the provided setup. * @@ -57,7 +37,7 @@ public DaprHttp build() { } /** - * Creates and instance of the HTTP Client. + * Creates an instance of the HTTP Client. * * @return Instance of {@link DaprHttp} */ @@ -66,7 +46,8 @@ private DaprHttp buildDaprHttp() { synchronized (LOCK) { if (OK_HTTP_CLIENT.get() == null) { OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.readTimeout(this.readTimeout); + Duration readTimeout = Duration.ofSeconds(Properties.HTTP_CLIENT_READ_TIMEOUT_SECONDS.get()); + builder.readTimeout(readTimeout); OkHttpClient okHttpClient = builder.build(); OK_HTTP_CLIENT.set(okHttpClient); } From dbc712a17ec8dc4b1f33f313360e6fb756cb10a0 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 15:50:12 -0800 Subject: [PATCH 3/7] Rename DaprChannel to ActorClient and make it a DaprClient. --- .../dapr/examples/actors/DemoActorClient.java | 6 ++-- .../java/io/dapr/examples/actors/README.md | 6 ++-- .../{DaprChannel.java => ActorClient.java} | 28 ++++++++----------- .../dapr/actors/client/ActorProxyBuilder.java | 20 ++++++------- .../actors/client/ActorProxyBuilderTest.java | 20 ++++++------- .../src/test/java/io/dapr/it/BaseIT.java | 10 +++---- .../it/actors/ActivationDeactivationIT.java | 3 +- .../io/dapr/it/actors/ActorMethodNameIT.java | 4 +-- .../it/actors/ActorReminderFailoverIT.java | 2 +- .../it/actors/ActorReminderRecoveryIT.java | 3 +- .../java/io/dapr/it/actors/ActorStateIT.java | 5 ++-- .../dapr/it/actors/ActorTimerRecoveryIT.java | 2 +- .../actors/ActorTurnBasedConcurrencyIT.java | 2 +- 13 files changed, 51 insertions(+), 60 deletions(-) rename sdk-actors/src/main/java/io/dapr/actors/client/{DaprChannel.java => ActorClient.java} (80%) diff --git a/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java b/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java index 5a20c25d63..fb90d37cb5 100644 --- a/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java +++ b/examples/src/main/java/io/dapr/examples/actors/DemoActorClient.java @@ -6,8 +6,8 @@ package io.dapr.examples.actors; import io.dapr.actors.ActorId; +import io.dapr.actors.client.ActorClient; import io.dapr.actors.client.ActorProxyBuilder; -import io.dapr.actors.client.DaprChannel; import java.util.ArrayList; import java.util.List; @@ -31,8 +31,8 @@ public class DemoActorClient { * @throws InterruptedException If program has been interrupted. */ public static void main(String[] args) throws InterruptedException { - try (DaprChannel channel = new DaprChannel()) { - ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class, channel); + try (ActorClient client = new ActorClient()) { + ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class, client); List threads = new ArrayList<>(NUM_ACTORS); // Creates multiple actors. diff --git a/examples/src/main/java/io/dapr/examples/actors/README.md b/examples/src/main/java/io/dapr/examples/actors/README.md index a07fb743b7..09b3a71d14 100644 --- a/examples/src/main/java/io/dapr/examples/actors/README.md +++ b/examples/src/main/java/io/dapr/examples/actors/README.md @@ -149,8 +149,8 @@ public class DemoActorClient { private static final int NUM_ACTORS = 3; public static void main(String[] args) throws InterruptedException { - try (DaprChannel channel = new DaprChannel()) { - ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class, channel); + try (ActorClient client = new ActorClient()) { + ActorProxyBuilder builder = new ActorProxyBuilder(DemoActor.class, client); ///... for (int i = 0; i < NUM_ACTORS; i++) { DemoActor actor = builder.build(ActorId.createRandom()); @@ -190,7 +190,7 @@ public class DemoActorClient { } ``` -First, the client defines how many actors it is going to create. The main method declares a `DaprChannel` and `ActorProxyBuilder` to create instances of the `DemoActor` interface, which are implemented automatically by the SDK and make remote calls to the equivalent methods in Actor runtime. `DaprChannel` is reusable for different actor types and should be instantiated only once in your code. `DaprChannel` also implements `AutoCloseable`, which means it holds resources that need to be closed. In this example, we use the "try-resource" feature in Java. +First, the client defines how many actors it is going to create. The main method declares a `ActorClient` and `ActorProxyBuilder` to create instances of the `DemoActor` interface, which are implemented automatically by the SDK and make remote calls to the equivalent methods in Actor runtime. `ActorClient` is reusable for different actor types and should be instantiated only once in your code. `ActorClient` also implements `AutoCloseable`, which means it holds resources that need to be closed. In this example, we use the "try-resource" feature in Java. Then, the code executes the `callActorForever` private method once per actor. Initially, it will invoke `registerReminder()`, which sets the due time and period for the reminder. Then, `incrementAndGet()` increments a counter, persists it and sends it back as response. Finally `say` method which will print a message containing the received string along with the formatted server time. diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java similarity index 80% rename from sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java rename to sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java index 215091b59f..1f9b74be90 100644 --- a/sdk-actors/src/main/java/io/dapr/actors/client/DaprChannel.java +++ b/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java @@ -12,16 +12,12 @@ import io.grpc.Channel; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; +import reactor.core.publisher.Mono; /** - * Holds a channel for Dapr sidecar communication. Channel should be reused. + * Holds a client for Dapr sidecar communication. ActorClient should be reused. */ -public class DaprChannel implements AutoCloseable { - - /** - * Determine if channel is for GRPC clients or HTTP clients. - */ - private final DaprApiProtocol apiProtocol; +public class ActorClient implements DaprClient, AutoCloseable { /** * gRPC channel for communication with Dapr sidecar. @@ -36,7 +32,7 @@ public class DaprChannel implements AutoCloseable { /** * Instantiates a new channel for Dapr sidecar communication. */ - public DaprChannel() { + public ActorClient() { this(Properties.API_PROTOCOL.get()); } @@ -45,8 +41,8 @@ public DaprChannel() { * * @param apiProtocol Dapr's API protocol. */ - private DaprChannel(DaprApiProtocol apiProtocol) { - this(apiProtocol, buildManagedChannel(apiProtocol)); + private ActorClient(DaprApiProtocol apiProtocol) { + this(apiProtocol, buildManagedChannel(apiProtocol)); } /** @@ -54,19 +50,17 @@ private DaprChannel(DaprApiProtocol apiProtocol) { * * @param apiProtocol Dapr's API protocol. */ - private DaprChannel(DaprApiProtocol apiProtocol, ManagedChannel grpcManagedChannel) { - this.apiProtocol = apiProtocol; + private ActorClient(DaprApiProtocol apiProtocol, ManagedChannel grpcManagedChannel) { this.grpcManagedChannel = grpcManagedChannel; this.daprClient = buildDaprClient(apiProtocol, grpcManagedChannel); } /** - * Gets the Dapr client. - * - * @return the Dapr client. + * {@inheritDoc} */ - DaprClient getDaprClient() { - return this.daprClient; + @Override + public Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) { + return daprClient.invoke(actorType, actorId, methodName, jsonPayload); } /** 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 81e8a629e9..079f647b6a 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 @@ -33,9 +33,9 @@ public class ActorProxyBuilder { private DaprObjectSerializer objectSerializer; /** - * Channel for communication with Dapr. + * Client for communication with Dapr's Actor APIs. */ - private final DaprChannel channel; + private final ActorClient actorClient; /** * Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer} by default. @@ -43,10 +43,10 @@ public class ActorProxyBuilder { * {@link DefaultObjectSerializer} is not recommended for production scenarios. * * @param actorTypeClass Actor's type class. - * @param channel Dapr's sidecar channel. + * @param actorClient Dapr's sidecar client for Actor APIs. */ - public ActorProxyBuilder(Class actorTypeClass, DaprChannel channel) { - this(ActorUtils.findActorTypeName(actorTypeClass), actorTypeClass, channel); + public ActorProxyBuilder(Class actorTypeClass, ActorClient actorClient) { + this(ActorUtils.findActorTypeName(actorTypeClass), actorTypeClass, actorClient); } /** @@ -56,23 +56,23 @@ public ActorProxyBuilder(Class actorTypeClass, DaprChannel channel) { * * @param actorType Actor's type. * @param actorTypeClass Actor's type class. - * @param channel Dapr's sidecar channel. + * @param actorClient Dapr's sidecar client for Actor APIs. */ - public ActorProxyBuilder(String actorType, Class actorTypeClass, DaprChannel channel) { + public ActorProxyBuilder(String actorType, Class actorTypeClass, ActorClient actorClient) { if ((actorType == null) || actorType.isEmpty()) { throw new IllegalArgumentException("ActorType is required."); } if (actorTypeClass == null) { throw new IllegalArgumentException("ActorTypeClass is required."); } - if (channel == null) { + if (actorClient == null) { throw new IllegalArgumentException("Channel is required."); } this.actorType = actorType; this.objectSerializer = new DefaultObjectSerializer(); this.clazz = actorTypeClass; - this.channel = channel; + this.actorClient = actorClient; } /** @@ -105,7 +105,7 @@ public T build(ActorId actorId) { this.actorType, actorId, this.objectSerializer, - this.channel.getDaprClient()); + this.actorClient); if (this.clazz.equals(ActorProxy.class)) { // If users want to use the not strongly typed API, we respect that here. 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 1d2de372d4..bb6bdea467 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 @@ -14,37 +14,37 @@ public class ActorProxyBuilderTest { - private static DaprChannel daprChannel; + private static ActorClient actorClient; @BeforeClass public static void initClass() { - daprChannel = new DaprChannel(); + actorClient = new ActorClient(); } @AfterClass public static void tearDownClass() { - daprChannel.close(); + actorClient.close(); } @Test(expected = IllegalArgumentException.class) public void buildWithNullActorId() { - new ActorProxyBuilder("test", Object.class, daprChannel) + new ActorProxyBuilder("test", Object.class, actorClient) .build(null); } @Test(expected = IllegalArgumentException.class) public void buildWithEmptyActorType() { - new ActorProxyBuilder("", Object.class, daprChannel); + new ActorProxyBuilder("", Object.class, actorClient); } @Test(expected = IllegalArgumentException.class) public void buildWithNullActorType() { - new ActorProxyBuilder(null, Object.class, daprChannel); + new ActorProxyBuilder(null, Object.class, actorClient); } @Test(expected = IllegalArgumentException.class) public void buildWithNullSerializer() { - new ActorProxyBuilder("MyActor", Object.class, daprChannel) + new ActorProxyBuilder("MyActor", Object.class, actorClient) .withObjectSerializer(null) .build(new ActorId("100")); } @@ -56,7 +56,7 @@ public void buildWithNullChannel() { @Test() public void build() { - ActorProxyBuilder builder = new ActorProxyBuilder("test", ActorProxy.class, daprChannel); + ActorProxyBuilder builder = new ActorProxyBuilder("test", ActorProxy.class, actorClient); ActorProxy actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); @@ -66,7 +66,7 @@ public void build() { @Test() public void buildWithType() { - ActorProxyBuilder builder = new ActorProxyBuilder(MyActor.class, daprChannel); + ActorProxyBuilder builder = new ActorProxyBuilder(MyActor.class, actorClient); MyActor actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); @@ -74,7 +74,7 @@ public void buildWithType() { @Test() public void buildWithTypeDefaultName() { - ActorProxyBuilder builder = new ActorProxyBuilder(ActorWithDefaultName.class, daprChannel); + ActorProxyBuilder builder = new ActorProxyBuilder(ActorWithDefaultName.class, actorClient); ActorWithDefaultName actorProxy = builder.build(new ActorId("100")); Assert.assertNotNull(actorProxy); diff --git a/sdk-tests/src/test/java/io/dapr/it/BaseIT.java b/sdk-tests/src/test/java/io/dapr/it/BaseIT.java index b5b6723478..5ce0c6ce90 100644 --- a/sdk-tests/src/test/java/io/dapr/it/BaseIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/BaseIT.java @@ -5,7 +5,7 @@ package io.dapr.it; -import io.dapr.actors.client.DaprChannel; +import io.dapr.actors.client.ActorClient; import io.dapr.client.DaprApiProtocol; import org.apache.commons.lang3.tuple.ImmutablePair; import org.junit.AfterClass; @@ -117,9 +117,9 @@ public static void cleanUp() throws Exception { } } - protected DaprChannel newDaprActorChannel() { - DaprChannel channel = new DaprChannel(); - TO_BE_CLOSED.add(channel); - return channel; + protected ActorClient newActorClient() { + ActorClient client = new ActorClient(); + TO_BE_CLOSED.add(client); + return client; } } 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 f1d3df74b9..8c7b84a98c 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 @@ -7,7 +7,6 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxyBuilder; -import io.dapr.actors.client.DaprChannel; import io.dapr.it.BaseIT; import io.dapr.it.actors.services.springboot.DemoActor; import io.dapr.it.actors.services.springboot.DemoActorService; @@ -39,7 +38,7 @@ public void activateInvokeDeactivate() throws Exception { final AtomicInteger atomicInteger = new AtomicInteger(1); logger.debug("Creating proxy builder"); - ActorProxyBuilder proxyBuilder = new ActorProxyBuilder(DemoActor.class, newDaprActorChannel()); + ActorProxyBuilder proxyBuilder = new ActorProxyBuilder(DemoActor.class, newActorClient()); 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/actors/ActorMethodNameIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorMethodNameIT.java index 4c555f77dd..ef1de2e431 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorMethodNameIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorMethodNameIT.java @@ -34,7 +34,7 @@ public void actorMethodNameChange() throws Exception { logger.debug("Creating proxy builder"); ActorProxyBuilder proxyBuilder = - new ActorProxyBuilder("MyActorTest", MyActor.class, newDaprActorChannel()); + new ActorProxyBuilder("MyActorTest", MyActor.class, newActorClient()); logger.debug("Creating actorId"); ActorId actorId1 = new ActorId("1"); logger.debug("Building proxy"); @@ -49,7 +49,7 @@ public void actorMethodNameChange() throws Exception { logger.debug("Creating proxy builder 2"); ActorProxyBuilder proxyBuilder2 = - new ActorProxyBuilder("MyActorTest", ActorProxy.class, newDaprActorChannel()); + new ActorProxyBuilder("MyActorTest", ActorProxy.class, newActorClient()); logger.debug("Building proxy 2"); ActorProxy proxy2 = proxyBuilder2.build(actorId1); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java index a549312d04..42be26431c 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderFailoverIT.java @@ -64,7 +64,7 @@ public void init() throws Exception { logger.debug("Creating proxy builder"); ActorProxyBuilder proxyBuilder = - new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); + new ActorProxyBuilder(actorType, ActorProxy.class, newActorClient()); logger.debug("Creating actorId"); logger.debug("Building proxy"); proxy = proxyBuilder.build(actorId); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java index e38a2f2588..504b6876ec 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorReminderRecoveryIT.java @@ -8,7 +8,6 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxy; import io.dapr.actors.client.ActorProxyBuilder; -import io.dapr.actors.client.DaprChannel; import io.dapr.it.AppRun; import io.dapr.it.BaseIT; import io.dapr.it.DaprRun; @@ -53,7 +52,7 @@ public void init() throws Exception { logger.debug("Creating proxy builder"); ActorProxyBuilder proxyBuilder = - new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); + new ActorProxyBuilder(actorType, ActorProxy.class, newActorClient()); logger.debug("Creating actorId"); logger.debug("Building proxy"); proxy = proxyBuilder.build(actorId); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java index 5715dd8ecc..5d152fe325 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorStateIT.java @@ -8,7 +8,6 @@ import io.dapr.actors.ActorId; import io.dapr.actors.client.ActorProxy; import io.dapr.actors.client.ActorProxyBuilder; -import io.dapr.actors.client.DaprChannel; import io.dapr.client.DaprApiProtocol; import io.dapr.it.BaseIT; import io.dapr.it.DaprRun; @@ -76,7 +75,7 @@ public void writeReadState() throws Exception { String actorType = "StatefulActorTest"; logger.debug("Building proxy ..."); ActorProxyBuilder proxyBuilder = - new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); + new ActorProxyBuilder(actorType, ActorProxy.class, newActorClient()); ActorProxy proxy = proxyBuilder.build(actorId); // Validate conditional read works. @@ -162,7 +161,7 @@ public void writeReadState() throws Exception { runtime.switchToProtocol(this.daprClientProtocol); // Need new proxy builder because the proxy builder holds the channel. - proxyBuilder = new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); + proxyBuilder = new ActorProxyBuilder(actorType, ActorProxy.class, newActorClient()); ActorProxy newProxy = proxyBuilder.build(actorId); callWithRetry(() -> { diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java index ab117bf90d..09f8ffea42 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTimerRecoveryIT.java @@ -48,7 +48,7 @@ public void timerRecoveryTest() throws Exception { logger.debug("Creating proxy builder"); ActorProxyBuilder proxyBuilder = - new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); + new ActorProxyBuilder(actorType, ActorProxy.class, newActorClient()); logger.debug("Creating actorId"); ActorId actorId = new ActorId(UUID.randomUUID().toString()); logger.debug("Building proxy"); diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java index 6f07dd86bc..7cb19d3d76 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/ActorTurnBasedConcurrencyIT.java @@ -81,7 +81,7 @@ public void actorTest1() throws Exception { logger.debug("Creating proxy builder"); ActorProxyBuilder proxyBuilder = - new ActorProxyBuilder(actorType, ActorProxy.class, newDaprActorChannel()); + new ActorProxyBuilder(actorType, ActorProxy.class, newActorClient()); logger.debug("Creating actorId"); ActorId actorId1 = new ActorId(ACTOR_ID); logger.debug("Building proxy"); From 5d4dfe7b2677c8d8aa77bbedfc36a5d1531dd249 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 16:15:20 -0800 Subject: [PATCH 4/7] Make ActorClient not implement DaprClient but implement same method. --- .../io/dapr/actors/client/ActorClient.java | 13 ++++-- .../io/dapr/actors/client/ActorProxyImpl.java | 16 ++++---- .../actors/client/ActorProxyForTestsImpl.java | 4 +- .../actors/client/ActorProxyImplTest.java | 40 +++++++++---------- .../io/dapr/actors/client/DaprClientStub.java | 2 +- 5 files changed, 40 insertions(+), 35 deletions(-) diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java index 1f9b74be90..ffd6a1fc70 100644 --- a/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java +++ b/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java @@ -17,7 +17,7 @@ /** * Holds a client for Dapr sidecar communication. ActorClient should be reused. */ -public class ActorClient implements DaprClient, AutoCloseable { +public class ActorClient implements AutoCloseable { /** * gRPC channel for communication with Dapr sidecar. @@ -56,10 +56,15 @@ private ActorClient(DaprApiProtocol apiProtocol, ManagedChannel grpcManagedChann } /** - * {@inheritDoc} + * Invokes an Actor method on Dapr. + * + * @param actorType Type of actor. + * @param actorId Actor Identifier. + * @param methodName Method name to invoke. + * @param jsonPayload Serialized body. + * @return Asynchronous result with the Actor's response. */ - @Override - public Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) { + Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) { return daprClient.invoke(actorType, actorId, methodName, jsonPayload); } diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyImpl.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyImpl.java index 8b97fd7cb5..d17df555c8 100644 --- a/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyImpl.java +++ b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyImpl.java @@ -41,7 +41,7 @@ class ActorProxyImpl implements ActorProxy, InvocationHandler { /** * Client to talk to the Dapr's API. */ - private final DaprClient daprClient; + private final ActorClient actorClient; /** * Creates a new instance of {@link ActorProxyImpl}. @@ -49,12 +49,12 @@ class ActorProxyImpl implements ActorProxy, InvocationHandler { * @param actorType actor implementation type of the actor associated with the proxy object. * @param actorId The actorId associated with the proxy * @param serializer Serializer and deserializer for method calls. - * @param daprClient Dapr client. + * @param actorClient Dapr client for Actor APIs. */ - ActorProxyImpl(String actorType, ActorId actorId, DaprObjectSerializer serializer, DaprClient daprClient) { + ActorProxyImpl(String actorType, ActorId actorId, DaprObjectSerializer serializer, ActorClient actorClient) { this.actorType = actorType; this.actorId = actorId; - this.daprClient = daprClient; + this.actorClient = actorClient; this.serializer = serializer; } @@ -77,7 +77,7 @@ public String getActorType() { */ @Override public Mono invokeMethod(String methodName, Object data, TypeRef type) { - return this.daprClient.invoke(actorType, actorId.toString(), methodName, this.serialize(data)) + return this.actorClient.invoke(actorType, actorId.toString(), methodName, this.serialize(data)) .filter(s -> s.length > 0) .map(s -> deserialize(s, type)); } @@ -95,7 +95,7 @@ public Mono invokeMethod(String methodName, Object data, Class clazz) */ @Override public Mono invokeMethod(String methodName, TypeRef type) { - return this.daprClient.invoke(actorType, actorId.toString(), methodName, null) + return this.actorClient.invoke(actorType, actorId.toString(), methodName, null) .filter(s -> s.length > 0) .map(s -> deserialize(s, type)); } @@ -113,7 +113,7 @@ public Mono invokeMethod(String methodName, Class clazz) { */ @Override public Mono invokeMethod(String methodName) { - return this.daprClient.invoke(actorType, actorId.toString(), methodName, null).then(); + return this.actorClient.invoke(actorType, actorId.toString(), methodName, null).then(); } /** @@ -121,7 +121,7 @@ public Mono invokeMethod(String methodName) { */ @Override public Mono invokeMethod(String methodName, Object data) { - return this.daprClient.invoke(actorType, actorId.toString(), methodName, this.serialize(data)).then(); + return this.actorClient.invoke(actorType, actorId.toString(), methodName, this.serialize(data)).then(); } /** diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java index faa237136a..6c6d1aabdd 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java +++ b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java @@ -10,7 +10,7 @@ public class ActorProxyForTestsImpl extends ActorProxyImpl { - public ActorProxyForTestsImpl(String actorType, ActorId actorId, DaprObjectSerializer serializer, DaprClient daprClient) { - super(actorType, actorId, serializer, daprClient); + public ActorProxyForTestsImpl(String actorType, ActorId actorId, DaprObjectSerializer serializer, ActorClient actorClient) { + super(actorType, actorId, serializer, actorClient); } } diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java index d6cf4ce097..d9b867fbc1 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java @@ -23,7 +23,7 @@ public class ActorProxyImplTest { @Test() public void constructorActorProxyTest() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); final DaprObjectSerializer serializer = mock(DaprObjectSerializer.class); final ActorProxyImpl actorProxy = new ActorProxyImpl( "myActorType", @@ -36,7 +36,7 @@ public void constructorActorProxyTest() { @Test() public void invokeActorMethodWithoutDataWithReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.just( "{\n\t\t\"propertyA\": \"valueA\",\n\t\t\"propertyB\": \"valueB\"\n\t}".getBytes()); @@ -58,7 +58,7 @@ public void invokeActorMethodWithoutDataWithReturnType() { @Test() public void invokeActorMethodWithoutDataWithReturnTypeViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.just( "{\n\t\t\"propertyA\": \"valueA\",\n\t\t\"propertyB\": \"valueB\"\n\t}".getBytes()); @@ -79,7 +79,7 @@ public void invokeActorMethodWithoutDataWithReturnTypeViaReflection() throws NoS @Test() public void invokeActorMethodWithoutDataWithReturnMonoTypeViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.just( "{\n\t\t\"propertyA\": \"valueA\",\n\t\t\"propertyB\": \"valueB\"\n\t}".getBytes()); @@ -102,7 +102,7 @@ public void invokeActorMethodWithoutDataWithReturnMonoTypeViaReflection() throws @Test() public void invokeActorMethodWithDataWithReturnTypeViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.just( "\"OK\"".getBytes()); @@ -125,7 +125,7 @@ public void invokeActorMethodWithDataWithReturnTypeViaReflection() throws NoSuch @Test() public void invokeActorMethodWithDataWithReturnMonoTypeViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.just( "\"OK\"".getBytes()); @@ -149,7 +149,7 @@ public void invokeActorMethodWithDataWithReturnMonoTypeViaReflection() throws No @Test() public void invokeActorMethodWithoutDataWithoutReturnTypeViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.empty(); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull())) @@ -167,7 +167,7 @@ public void invokeActorMethodWithoutDataWithoutReturnTypeViaReflection() throws @Test() public void invokeActorMethodWithoutDataWithoutReturnTypeMonoViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.empty(); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull())) @@ -186,7 +186,7 @@ public void invokeActorMethodWithoutDataWithoutReturnTypeMonoViaReflection() thr @Test() public void invokeActorMethodWithDataWithoutReturnTypeMonoViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.empty(); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes()))) @@ -209,7 +209,7 @@ public void invokeActorMethodWithDataWithoutReturnTypeMonoViaReflection() throws @Test(expected = UnsupportedOperationException.class) public void invokeActorMethodWithTooManyArgsViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); final ActorProxyImpl actorProxy = new ActorProxyImpl( "myActorType", @@ -228,7 +228,7 @@ public void invokeActorMethodWithTooManyArgsViaReflection() throws NoSuchMethodE @Test() public void invokeActorMethodWithDataWithoutReturnTypeViaReflection() throws NoSuchMethodException { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); Mono daprResponse = Mono.empty(); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes()))) @@ -250,7 +250,7 @@ public void invokeActorMethodWithDataWithoutReturnTypeViaReflection() throws NoS @Test() public void invokeActorMethodWithoutDataWithEmptyReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull())) .thenReturn(Mono.just("".getBytes())); @@ -267,7 +267,7 @@ public void invokeActorMethodWithoutDataWithEmptyReturnType() { @Test(expected = RuntimeException.class) public void invokeActorMethodWithIncorrectReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull())) .thenReturn(Mono.just("{test}".getBytes())); @@ -287,7 +287,7 @@ public void invokeActorMethodWithIncorrectReturnType() { @Test() public void invokeActorMethodSavingDataWithReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull())) .thenReturn( Mono.just("{\n\t\t\"propertyA\": \"valueA\",\n\t\t\"propertyB\": \"valueB\"\n\t}".getBytes())); @@ -312,7 +312,7 @@ public void invokeActorMethodSavingDataWithReturnType() { @Test(expected = DaprException.class) public void invokeActorMethodSavingDataWithIncorrectReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull())) .thenReturn(Mono.just("{test}".getBytes())); @@ -336,7 +336,7 @@ public void invokeActorMethodSavingDataWithIncorrectReturnType() { @Test() public void invokeActorMethodSavingDataWithEmptyReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull())) .thenReturn(Mono.just("".getBytes())); @@ -358,7 +358,7 @@ public void invokeActorMethodSavingDataWithEmptyReturnType() { @Test(expected = DaprException.class) public void invokeActorMethodSavingDataWithIncorrectInputType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull())) .thenReturn(Mono.just("{test}".getBytes())); @@ -387,7 +387,7 @@ public void invokeActorMethodWithDataWithVoidReturnType() { saveData.setPropertyA("valueA"); saveData.setPropertyB("valueB"); - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull())) .thenReturn(Mono.empty()); @@ -410,7 +410,7 @@ public void invokeActorMethodWithDataWithVoidIncorrectInputType() { saveData.setPropertyB("valueB"); saveData.setMyData(saveData); - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull())) .thenReturn(Mono.empty()); @@ -427,7 +427,7 @@ public void invokeActorMethodWithDataWithVoidIncorrectInputType() { @Test() public void invokeActorMethodWithoutDataWithVoidReturnType() { - final DaprClient daprClient = mock(DaprClient.class); + final ActorClient daprClient = mock(ActorClient.class); when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull())) .thenReturn(Mono.empty()); diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/DaprClientStub.java b/sdk-actors/src/test/java/io/dapr/actors/client/DaprClientStub.java index 7bff09f046..9e7f668423 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/client/DaprClientStub.java +++ b/sdk-actors/src/test/java/io/dapr/actors/client/DaprClientStub.java @@ -7,7 +7,7 @@ import reactor.core.publisher.Mono; -public class DaprClientStub implements DaprClient { +public class DaprClientStub extends ActorClient implements DaprClient { @Override public Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) { From 8bc672370d76bade5d339579a46651be7f284194 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 22:53:11 -0800 Subject: [PATCH 5/7] Update sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java Co-authored-by: Mukundan Sundararajan --- .../src/main/java/io/dapr/actors/client/ActorProxyBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 079f647b6a..389e414efa 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 @@ -66,7 +66,7 @@ public ActorProxyBuilder(String actorType, Class actorTypeClass, ActorClient throw new IllegalArgumentException("ActorTypeClass is required."); } if (actorClient == null) { - throw new IllegalArgumentException("Channel is required."); + throw new IllegalArgumentException("ActorClient is required."); } this.actorType = actorType; From 93df429a097edc7bc7a991a62f68f6c0257faabf Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 22:53:18 -0800 Subject: [PATCH 6/7] Update sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java Co-authored-by: Mukundan Sundararajan --- .../java/io/dapr/actors/client/ActorProxyBuilderTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 bb6bdea467..b53efeca30 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 @@ -50,7 +50,7 @@ public void buildWithNullSerializer() { } @Test(expected = IllegalArgumentException.class) - public void buildWithNullChannel() { + public void buildWithNullClient() { new ActorProxyBuilder("MyActor", Object.class, null); } @@ -87,4 +87,4 @@ public interface MyActor { public interface ActorWithDefaultName { } -} \ No newline at end of file +} From 42669e1df5d302174141006a67ac694fcd6fef62 Mon Sep 17 00:00:00 2001 From: Artur Souza Date: Sun, 24 Jan 2021 22:59:37 -0800 Subject: [PATCH 7/7] Rename ActorProxyForTestsImpl to ActorProxyImplForTests --- ...ProxyForTestsImpl.java => ActorProxyImplForTests.java} | 4 ++-- .../io/dapr/actors/runtime/ActorCustomSerializerTest.java | 4 ++-- .../java/io/dapr/actors/runtime/ActorNoStateTest.java | 8 ++++---- .../java/io/dapr/actors/runtime/ActorStatefulTest.java | 4 ++-- .../java/io/dapr/actors/runtime/DerivedActorTest.java | 4 ++-- .../runtime/ThrowFromPreAndPostActorMethodsTest.java | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) rename sdk-actors/src/test/java/io/dapr/actors/client/{ActorProxyForTestsImpl.java => ActorProxyImplForTests.java} (69%) diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplForTests.java similarity index 69% rename from sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java rename to sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplForTests.java index 6c6d1aabdd..a5160ace2a 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java +++ b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplForTests.java @@ -8,9 +8,9 @@ import io.dapr.actors.ActorId; import io.dapr.serializer.DaprObjectSerializer; -public class ActorProxyForTestsImpl extends ActorProxyImpl { +public class ActorProxyImplForTests extends ActorProxyImpl { - public ActorProxyForTestsImpl(String actorType, ActorId actorId, DaprObjectSerializer serializer, ActorClient actorClient) { + public ActorProxyImplForTests(String actorType, ActorId actorId, DaprObjectSerializer serializer, ActorClient actorClient) { super(actorType, actorId, serializer, actorClient); } } diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorCustomSerializerTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorCustomSerializerTest.java index 2a53723595..608374acc5 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorCustomSerializerTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorCustomSerializerTest.java @@ -8,7 +8,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorType; import io.dapr.actors.client.ActorProxy; -import io.dapr.actors.client.ActorProxyForTestsImpl; +import io.dapr.actors.client.ActorProxyImplForTests; import io.dapr.actors.client.DaprClientStub; import io.dapr.serializer.DaprObjectSerializer; import org.junit.Assert; @@ -143,7 +143,7 @@ private ActorProxy createActorProxy() { this.manager.activateActor(actorId).block(); - return new ActorProxyForTestsImpl( + return new ActorProxyImplForTests( context.getActorTypeInformation().getName(), actorId, CUSTOM_SERIALIZER, diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorNoStateTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorNoStateTest.java index 2b01ea93bb..c7e7fc66fe 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorNoStateTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorNoStateTest.java @@ -9,7 +9,7 @@ import io.dapr.actors.ActorMethod; import io.dapr.actors.ActorType; import io.dapr.actors.client.ActorProxy; -import io.dapr.actors.client.ActorProxyForTestsImpl; +import io.dapr.actors.client.ActorProxyImplForTests; import io.dapr.actors.client.DaprClientStub; import io.dapr.serializer.DefaultObjectSerializer; import org.junit.Assert; @@ -245,7 +245,7 @@ private ActorProxy createActorProxy() { this.manager.activateActor(actorId).block(); - return new ActorProxyForTestsImpl( + return new ActorProxyImplForTests( context.getActorTypeInformation().getName(), actorId, new DefaultObjectSerializer(), @@ -271,13 +271,13 @@ private T createActorProxy(Class clazz) { this.manager.activateActor(actorId).block(); - ActorProxyForTestsImpl proxy = new ActorProxyForTestsImpl( + ActorProxyImplForTests proxy = new ActorProxyImplForTests( context.getActorTypeInformation().getName(), actorId, new DefaultObjectSerializer(), daprClient); return (T) Proxy.newProxyInstance( - ActorProxyForTestsImpl.class.getClassLoader(), + ActorProxyImplForTests.class.getClassLoader(), new Class[]{clazz}, proxy); } diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorStatefulTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorStatefulTest.java index cd477a50cc..7b43c0bfe1 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorStatefulTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorStatefulTest.java @@ -8,7 +8,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorType; import io.dapr.actors.client.ActorProxy; -import io.dapr.actors.client.ActorProxyForTestsImpl; +import io.dapr.actors.client.ActorProxyImplForTests; import io.dapr.actors.client.DaprClientStub; import io.dapr.serializer.DefaultObjectSerializer; import io.dapr.utils.TypeRef; @@ -620,7 +620,7 @@ private ActorProxy newActorProxy() { this.manager.activateActor(actorId).block(); - return new ActorProxyForTestsImpl( + return new ActorProxyImplForTests( context.getActorTypeInformation().getName(), actorId, new DefaultObjectSerializer(), diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/DerivedActorTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/DerivedActorTest.java index 09d377b314..ad46016dd0 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/runtime/DerivedActorTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/DerivedActorTest.java @@ -8,7 +8,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorType; import io.dapr.actors.client.ActorProxy; -import io.dapr.actors.client.ActorProxyForTestsImpl; +import io.dapr.actors.client.ActorProxyImplForTests; import io.dapr.actors.client.DaprClientStub; import io.dapr.serializer.DefaultObjectSerializer; import org.junit.Assert; @@ -340,7 +340,7 @@ private ActorProxy createActorProxyForActorChild() { this.manager.activateActor(actorId).block(); - return new ActorProxyForTestsImpl( + return new ActorProxyImplForTests( context.getActorTypeInformation().getName(), actorId, new DefaultObjectSerializer(), diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/ThrowFromPreAndPostActorMethodsTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ThrowFromPreAndPostActorMethodsTest.java index dbd3c3c45f..5dbb1e9380 100644 --- a/sdk-actors/src/test/java/io/dapr/actors/runtime/ThrowFromPreAndPostActorMethodsTest.java +++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/ThrowFromPreAndPostActorMethodsTest.java @@ -8,7 +8,7 @@ import io.dapr.actors.ActorId; import io.dapr.actors.ActorType; import io.dapr.actors.client.ActorProxy; -import io.dapr.actors.client.ActorProxyForTestsImpl; +import io.dapr.actors.client.ActorProxyImplForTests; import io.dapr.actors.client.DaprClientStub; import io.dapr.serializer.DefaultObjectSerializer; import org.junit.Assert; @@ -159,7 +159,7 @@ private ActorProxy createActorProxyForActorChild() { this.manager.activateActor(actorId).block(); - return new ActorProxyForTestsImpl( + return new ActorProxyImplForTests( context.getActorTypeInformation().getName(), actorId, new DefaultObjectSerializer(),