sleep(@RequestAttribute(name = "opentelemetry-context") Context context) {
+ InvokeMethodRequestBuilder builder = new InvokeMethodRequestBuilder(INVOKE_APP_ID, "sleep");
+ InvokeMethodRequest request = builder.withHttpExtension(HttpExtension.POST).withContext(context).build();
+ return client.invokeMethod(request, TypeRef.get(byte[].class)).then();
+ }
+
+}
diff --git a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java
index f7a5a25c08..97d6abf8ae 100644
--- a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java
+++ b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java
@@ -5,7 +5,8 @@
package io.dapr.examples.tracing;
-import io.dapr.springboot.DaprApplication;
+import io.dapr.examples.DaprApplication;
+import io.dapr.examples.OpenTelemetryInterceptor;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
@@ -14,7 +15,7 @@
/**
* Main method to invoke DemoService to test tracing.
*
- * Instrumentation is handled in {@link io.dapr.springboot.OpenTelemetryInterceptor}.
+ *
Instrumentation is handled in {@link OpenTelemetryInterceptor}.
*
*
1. Build and install jars:
* mvn clean install
@@ -22,6 +23,9 @@
* 3. Run in server mode:
* dapr run --app-id tracingdemo --app-port 3000 \
* -- java -jar target/dapr-java-sdk-examples-exec.jar io.dapr.examples.tracing.TracingDemoService -p 3000
+ * 4. Run middle server:
+ * dapr run --app-id tracingdemoproxy --app-port 3001 \
+ * -- java -jar target/dapr-java-sdk-examples-exec.jar io.dapr.examples.tracing.TracingDemoService -p 3001
*/
public class TracingDemoService {
diff --git a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java
index 46aee0666c..be333718e7 100644
--- a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java
+++ b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java
@@ -6,6 +6,7 @@
package io.dapr.examples.tracing;
import com.fasterxml.jackson.databind.ObjectMapper;
+import io.dapr.examples.OpenTelemetryInterceptor;
import io.opentelemetry.api.trace.Tracer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -14,7 +15,6 @@
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
-import java.nio.charset.StandardCharsets;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@@ -24,7 +24,7 @@
/**
* SpringBoot Controller to handle service invocation.
*
- *
Instrumentation is handled in {@link io.dapr.springboot.OpenTelemetryInterceptor}.
+ *
Instrumentation is handled in {@link OpenTelemetryInterceptor}.
*/
@RestController
public class TracingDemoServiceController {
@@ -53,11 +53,11 @@ public class TracingDemoServiceController {
* @return A message containing the time.
*/
@PostMapping(path = "/echo")
- public Mono handleMethod(@RequestBody(required = false) byte[] body,
+ public Mono handleMethod(@RequestBody(required = false) String body,
@RequestHeader Map headers) {
return Mono.fromSupplier(() -> {
try {
- String message = body == null ? "" : new String(body, StandardCharsets.UTF_8);
+ String message = body == null ? "" : body;
Calendar utcNow = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
String utcNowAsString = DATE_FORMAT.format(utcNow.getTime());
diff --git a/examples/src/main/resources/img/publisher.png b/examples/src/main/resources/img/publisher.png
deleted file mode 100644
index cea3d8e60f..0000000000
Binary files a/examples/src/main/resources/img/publisher.png and /dev/null differ
diff --git a/examples/src/main/resources/img/state.png b/examples/src/main/resources/img/state.png
index f07ae1108a..852874abf0 100644
Binary files a/examples/src/main/resources/img/state.png and b/examples/src/main/resources/img/state.png differ
diff --git a/examples/src/main/resources/img/subscriber.png b/examples/src/main/resources/img/subscriber.png
deleted file mode 100644
index 506456d986..0000000000
Binary files a/examples/src/main/resources/img/subscriber.png and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 3d7d13a7bf..e8883d5dc2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
UTF-8
1.33.1
3.13.0
- https://raw.githubusercontent.com/dapr/dapr/3cca3cc1567f1cb955ae69b8fd784f075f62ad42/dapr/proto
+ https://raw.githubusercontent.com/dapr/dapr/4a6369caaba9cf46eae9bfa4fa6e76b474854c89/dapr/proto
1.6.2
3.1.1
1.8
diff --git a/sdk-actors/src/main/java/io/dapr/actors/ActorMethod.java b/sdk-actors/src/main/java/io/dapr/actors/ActorMethod.java
index 424a41ccce..74f380ca17 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/ActorMethod.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/ActorMethod.java
@@ -21,5 +21,13 @@
*
* @return Actor's method return type.
*/
- Class returns();
+ Class returns() default Undefined.class;
+
+ /**
+ * Actor's method name. This is optional and will override the method's default name for actor invocation.
+ *
+ * @return Actor's method name.
+ */
+ String name() default "";
+
}
diff --git a/sdk-actors/src/main/java/io/dapr/actors/Undefined.java b/sdk-actors/src/main/java/io/dapr/actors/Undefined.java
new file mode 100644
index 0000000000..7375493bba
--- /dev/null
+++ b/sdk-actors/src/main/java/io/dapr/actors/Undefined.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ */
+
+package io.dapr.actors;
+
+/**
+ * Internal class to represent the undefined value for an optional Class attribute.
+ */
+final class Undefined {
+
+ private Undefined() {
+ }
+
+}
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
new file mode 100644
index 0000000000..ffd6a1fc70
--- /dev/null
+++ b/sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ */
+
+package io.dapr.actors.client;
+
+import io.dapr.client.DaprApiProtocol;
+import io.dapr.client.DaprHttpBuilder;
+import io.dapr.config.Properties;
+import io.dapr.v1.DaprGrpc;
+import io.grpc.Channel;
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+import reactor.core.publisher.Mono;
+
+/**
+ * Holds a client for Dapr sidecar communication. ActorClient should be reused.
+ */
+public class ActorClient implements AutoCloseable {
+
+ /**
+ * gRPC channel for communication with Dapr sidecar.
+ */
+ private final ManagedChannel grpcManagedChannel;
+
+ /**
+ * Dapr's client.
+ */
+ private final DaprClient daprClient;
+
+ /**
+ * Instantiates a new channel for Dapr sidecar communication.
+ */
+ public ActorClient() {
+ this(Properties.API_PROTOCOL.get());
+ }
+
+ /**
+ * Instantiates a new channel for Dapr sidecar communication.
+ *
+ * @param apiProtocol Dapr's API protocol.
+ */
+ private ActorClient(DaprApiProtocol apiProtocol) {
+ this(apiProtocol, buildManagedChannel(apiProtocol));
+ }
+
+ /**
+ * Instantiates a new channel for Dapr sidecar communication.
+ *
+ * @param apiProtocol Dapr's API protocol.
+ */
+ private ActorClient(DaprApiProtocol apiProtocol, ManagedChannel grpcManagedChannel) {
+ this.grpcManagedChannel = grpcManagedChannel;
+ this.daprClient = buildDaprClient(apiProtocol, grpcManagedChannel);
+ }
+
+ /**
+ * 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.
+ */
+ Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) {
+ return daprClient.invoke(actorType, actorId, methodName, jsonPayload);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void close() {
+ if (grpcManagedChannel != null && !grpcManagedChannel.isShutdown()) {
+ grpcManagedChannel.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();
+ }
+
+ /**
+ * 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/main/java/io/dapr/actors/client/ActorProxy.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxy.java
index c76b08bfc0..d573a3185a 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxy.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxy.java
@@ -36,7 +36,7 @@ public interface ActorProxy {
* @param The type to be returned.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String methodName, TypeRef type);
+ Mono invokeMethod(String methodName, TypeRef type);
/**
* Invokes an Actor method on Dapr.
@@ -46,7 +46,7 @@ public interface ActorProxy {
* @param The type to be returned.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String methodName, Class clazz);
+ Mono invokeMethod(String methodName, Class clazz);
/**
* Invokes an Actor method on Dapr.
@@ -57,7 +57,7 @@ public interface ActorProxy {
* @param The type to be returned.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String methodName, Object data, TypeRef type);
+ Mono invokeMethod(String methodName, Object data, TypeRef type);
/**
* Invokes an Actor method on Dapr.
@@ -68,7 +68,7 @@ public interface ActorProxy {
* @param The type to be returned.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String methodName, Object data, Class clazz);
+ Mono invokeMethod(String methodName, Object data, Class clazz);
/**
* Invokes an Actor method on Dapr.
@@ -76,7 +76,7 @@ public interface ActorProxy {
* @param methodName Method name to invoke.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String methodName);
+ Mono invokeMethod(String methodName);
/**
* Invokes an Actor method on Dapr.
@@ -85,6 +85,6 @@ public interface ActorProxy {
* @param data Object with the data.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String methodName, Object data);
+ Mono invokeMethod(String methodName, Object data);
}
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 e19ad7caf0..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
@@ -7,28 +7,15 @@
import io.dapr.actors.ActorId;
import io.dapr.actors.ActorUtils;
-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;
-import static io.dapr.exceptions.DaprException.throwIllegalArgumentException;
-
/**
* 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 boolean useGrpc;
+public class ActorProxyBuilder {
/**
* Actor's type.
@@ -46,14 +33,9 @@ public class ActorProxyBuilder implements Closeable {
private DaprObjectSerializer objectSerializer;
/**
- * Builds Dapr HTTP client.
- */
- private DaprHttpBuilder daprHttpBuilder;
-
- /**
- * Channel for communication with Dapr.
+ * Client for communication with Dapr's Actor APIs.
*/
- private final ManagedChannel channel;
+ private final ActorClient actorClient;
/**
* Instantiates a new builder for a given Actor type, using {@link DefaultObjectSerializer} by default.
@@ -61,9 +43,10 @@ public class ActorProxyBuilder implements Closeable {
* {@link DefaultObjectSerializer} is not recommended for production scenarios.
*
* @param actorTypeClass Actor's type class.
+ * @param actorClient Dapr's sidecar client for Actor APIs.
*/
- public ActorProxyBuilder(Class actorTypeClass) {
- this(ActorUtils.findActorTypeName(actorTypeClass), actorTypeClass);
+ public ActorProxyBuilder(Class actorTypeClass, ActorClient actorClient) {
+ this(ActorUtils.findActorTypeName(actorTypeClass), actorTypeClass, actorClient);
}
/**
@@ -73,21 +56,23 @@ public ActorProxyBuilder(Class actorTypeClass) {
*
* @param actorType Actor's type.
* @param actorTypeClass Actor's type class.
+ * @param actorClient Dapr's sidecar client for Actor APIs.
*/
- public ActorProxyBuilder(String actorType, Class actorTypeClass) {
+ public ActorProxyBuilder(String actorType, Class actorTypeClass, ActorClient actorClient) {
if ((actorType == null) || actorType.isEmpty()) {
- throwIllegalArgumentException("ActorType is required.");
+ throw new IllegalArgumentException("ActorType is required.");
}
if (actorTypeClass == null) {
- throwIllegalArgumentException("ActorTypeClass is required.");
+ throw new IllegalArgumentException("ActorTypeClass is required.");
+ }
+ if (actorClient == null) {
+ throw new IllegalArgumentException("ActorClient is required.");
}
- this.useGrpc = Properties.USE_GRPC.get();
this.actorType = actorType;
this.objectSerializer = new DefaultObjectSerializer();
this.clazz = actorTypeClass;
- this.daprHttpBuilder = new DaprHttpBuilder();
- this.channel = buildManagedChannel();
+ this.actorClient = actorClient;
}
/**
@@ -98,7 +83,7 @@ public ActorProxyBuilder(String actorType, Class actorTypeClass) {
*/
public ActorProxyBuilder withObjectSerializer(DaprObjectSerializer objectSerializer) {
if (objectSerializer == null) {
- throwIllegalArgumentException("Serializer is required.");
+ throw new IllegalArgumentException("Serializer is required.");
}
this.objectSerializer = objectSerializer;
@@ -113,14 +98,14 @@ public ActorProxyBuilder withObjectSerializer(DaprObjectSerializer objectSeri
*/
public T build(ActorId actorId) {
if (actorId == null) {
- throwIllegalArgumentException("Cannot instantiate an Actor without Id.");
+ throw new IllegalArgumentException("Cannot instantiate an Actor without Id.");
}
ActorProxyImpl proxy = new ActorProxyImpl(
this.actorType,
actorId,
this.objectSerializer,
- buildDaprClient());
+ this.actorClient);
if (this.clazz.equals(ActorProxy.class)) {
// If users want to use the not strongly typed API, we respect that here.
@@ -133,45 +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() {
- if (this.useGrpc) {
- return new DaprGrpcClient(DaprGrpc.newFutureStub(this.channel));
- }
-
- return new DaprHttpClient(daprHttpBuilder.build());
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void close() {
- if (channel != null && !channel.isShutdown()) {
- channel.shutdown();
- }
- }
-
- /**
- * Creates a GRPC managed channel (or null, if not applicable).
- *
- * @return GRPC managed channel or null.
- */
- private static ManagedChannel buildManagedChannel() {
- if (!Properties.USE_GRPC.get()) {
- return null;
- }
-
- int port = Properties.GRPC_PORT.get();
- if (port <= 0) {
- throwIllegalArgumentException("Invalid port.");
- }
-
- return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port).usePlaintext().build();
- }
}
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 d26e50754f..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
@@ -21,6 +21,8 @@
*/
class ActorProxyImpl implements ActorProxy, InvocationHandler {
+ private static final String UNDEFINED_CLASS_NAME = "io.dapr.actors.Undefined";
+
/**
* Actor's identifier for this Actor instance.
*/
@@ -39,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}.
@@ -47,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;
}
@@ -74,8 +76,8 @@ public String getActorType() {
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String methodName, Object data, TypeRef type) {
- return this.daprClient.invokeActorMethod(actorType, actorId.toString(), methodName, this.serialize(data))
+ public Mono invokeMethod(String methodName, Object data, TypeRef type) {
+ return this.actorClient.invoke(actorType, actorId.toString(), methodName, this.serialize(data))
.filter(s -> s.length > 0)
.map(s -> deserialize(s, type));
}
@@ -84,16 +86,16 @@ public Mono invokeActorMethod(String methodName, Object data, TypeRef
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String methodName, Object data, Class clazz) {
- return this.invokeActorMethod(methodName, data, TypeRef.get(clazz));
+ public Mono invokeMethod(String methodName, Object data, Class clazz) {
+ return this.invokeMethod(methodName, data, TypeRef.get(clazz));
}
/**
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String methodName, TypeRef type) {
- return this.daprClient.invokeActorMethod(actorType, actorId.toString(), methodName, null)
+ public Mono invokeMethod(String methodName, TypeRef type) {
+ return this.actorClient.invoke(actorType, actorId.toString(), methodName, null)
.filter(s -> s.length > 0)
.map(s -> deserialize(s, type));
}
@@ -102,24 +104,24 @@ public Mono invokeActorMethod(String methodName, TypeRef type) {
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String methodName, Class clazz) {
- return this.invokeActorMethod(methodName, TypeRef.get(clazz));
+ public Mono invokeMethod(String methodName, Class clazz) {
+ return this.invokeMethod(methodName, TypeRef.get(clazz));
}
/**
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String methodName) {
- return this.daprClient.invokeActorMethod(actorType, actorId.toString(), methodName, null).then();
+ public Mono invokeMethod(String methodName) {
+ return this.actorClient.invoke(actorType, actorId.toString(), methodName, null).then();
}
/**
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String methodName, Object data) {
- return this.daprClient.invokeActorMethod(actorType, actorId.toString(), methodName, this.serialize(data)).then();
+ public Mono invokeMethod(String methodName, Object data) {
+ return this.actorClient.invoke(actorType, actorId.toString(), methodName, this.serialize(data)).then();
}
/**
@@ -136,29 +138,33 @@ public Object invoke(Object proxy, Method method, Object[] args) {
throw new UnsupportedOperationException("Actor methods can only have zero or one arguments.");
}
+ ActorMethod actorMethodAnnotation = method.getDeclaredAnnotation(ActorMethod.class);
+ String methodName = method.getName();
+ if ((actorMethodAnnotation != null) && !actorMethodAnnotation.name().isEmpty()) {
+ methodName = actorMethodAnnotation.name();
+ }
+
if (method.getParameterCount() == 0) {
if (method.getReturnType().equals(Mono.class)) {
- ActorMethod actorMethodAnnotation = method.getDeclaredAnnotation(ActorMethod.class);
- if (actorMethodAnnotation == null) {
- return invokeActorMethod(method.getName());
+ if ((actorMethodAnnotation == null) || UNDEFINED_CLASS_NAME.equals(actorMethodAnnotation.returns().getName())) {
+ return invokeMethod(methodName);
}
- return invokeActorMethod(method.getName(), actorMethodAnnotation.returns());
+ return invokeMethod(methodName, actorMethodAnnotation.returns());
}
- return invokeActorMethod(method.getName(), method.getReturnType()).block();
+ return invokeMethod(methodName, method.getReturnType()).block();
}
if (method.getReturnType().equals(Mono.class)) {
- ActorMethod actorMethodAnnotation = method.getDeclaredAnnotation(ActorMethod.class);
- if (actorMethodAnnotation == null) {
- return invokeActorMethod(method.getName(), args[0]);
+ if ((actorMethodAnnotation == null) || UNDEFINED_CLASS_NAME.equals(actorMethodAnnotation.returns().getName())) {
+ return invokeMethod(methodName, args[0]);
}
- return invokeActorMethod(method.getName(), args[0], actorMethodAnnotation.returns());
+ return invokeMethod(methodName, args[0], actorMethodAnnotation.returns());
}
- return invokeActorMethod(method.getName(), args[0], method.getReturnType()).block();
+ return invokeMethod(methodName, args[0], method.getReturnType()).block();
}
/**
diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/DaprClient.java b/sdk-actors/src/main/java/io/dapr/actors/client/DaprClient.java
index 5871f4cdc0..5d803420f9 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/client/DaprClient.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/client/DaprClient.java
@@ -21,6 +21,6 @@ interface DaprClient {
* @param jsonPayload Serialized body.
* @return Asynchronous result with the Actor's response.
*/
- Mono invokeActorMethod(String actorType, String actorId, String methodName, byte[] jsonPayload);
+ Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload);
}
diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/DaprGrpcClient.java b/sdk-actors/src/main/java/io/dapr/actors/client/DaprGrpcClient.java
index 3b64b1a80b..499068d96a 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/client/DaprGrpcClient.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/client/DaprGrpcClient.java
@@ -40,7 +40,7 @@ class DaprGrpcClient implements DaprClient {
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String actorType, String actorId, String methodName, byte[] jsonPayload) {
+ public Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) {
return Mono.fromCallable(DaprException.wrap(() -> {
DaprProtos.InvokeActorRequest req =
DaprProtos.InvokeActorRequest.newBuilder()
diff --git a/sdk-actors/src/main/java/io/dapr/actors/client/DaprHttpClient.java b/sdk-actors/src/main/java/io/dapr/actors/client/DaprHttpClient.java
index a12270beda..728048f058 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/client/DaprHttpClient.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/client/DaprHttpClient.java
@@ -15,16 +15,6 @@
*/
class DaprHttpClient implements DaprClient {
- /**
- * Base URL for Dapr Actor APIs.
- */
- private static final String ACTORS_BASE_URL = DaprHttp.API_VERSION + "/" + "actors";
-
- /**
- * String format for Actors method invocation relative url.
- */
- private static final String ACTOR_METHOD_RELATIVE_URL_FORMAT = ACTORS_BASE_URL + "/%s/%s/method/%s";
-
/**
* The HTTP client to be used.
*
@@ -45,10 +35,10 @@ class DaprHttpClient implements DaprClient {
* {@inheritDoc}
*/
@Override
- public Mono invokeActorMethod(String actorType, String actorId, String methodName, byte[] jsonPayload) {
- String url = String.format(ACTOR_METHOD_RELATIVE_URL_FORMAT, actorType, actorId, methodName);
+ public Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) {
+ String[] pathSegments = new String[] { DaprHttp.API_VERSION, "actors", actorType, actorId, "method", methodName };
Mono responseMono =
- this.client.invokeApi(DaprHttp.HttpMethods.POST.name(), url, null, jsonPayload, null, null);
+ this.client.invokeApi(DaprHttp.HttpMethods.POST.name(), pathSegments, null, jsonPayload, null, null);
return responseMono.map(r -> r.getBody());
}
}
diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/AbstractActor.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/AbstractActor.java
index 540b8cfe46..3d72aafc41 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/runtime/AbstractActor.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/AbstractActor.java
@@ -114,7 +114,7 @@ protected Mono registerReminder(
try {
byte[] data = this.actorRuntimeContext.getObjectSerializer().serialize(state);
ActorReminderParams params = new ActorReminderParams(data, dueTime, period);
- return this.actorRuntimeContext.getDaprClient().registerActorReminder(
+ return this.actorRuntimeContext.getDaprClient().registerReminder(
this.actorRuntimeContext.getActorTypeInformation().getName(),
this.id.toString(),
reminderName,
@@ -157,7 +157,7 @@ protected Mono registerActorTimer(
byte[] data = this.actorRuntimeContext.getObjectSerializer().serialize(state);
ActorTimerParams actorTimer = new ActorTimerParams(callback, data, dueTime, period);
- return this.actorRuntimeContext.getDaprClient().registerActorTimer(
+ return this.actorRuntimeContext.getDaprClient().registerTimer(
this.actorRuntimeContext.getActorTypeInformation().getName(),
this.id.toString(),
name,
@@ -174,7 +174,7 @@ protected Mono registerActorTimer(
* @return Asynchronous void response.
*/
protected Mono unregisterTimer(String timerName) {
- return this.actorRuntimeContext.getDaprClient().unregisterActorTimer(
+ return this.actorRuntimeContext.getDaprClient().unregisterTimer(
this.actorRuntimeContext.getActorTypeInformation().getName(),
this.id.toString(),
timerName);
@@ -187,7 +187,7 @@ protected Mono unregisterTimer(String timerName) {
* @return Asynchronous void response.
*/
protected Mono unregisterReminder(String reminderName) {
- return this.actorRuntimeContext.getDaprClient().unregisterActorReminder(
+ return this.actorRuntimeContext.getDaprClient().unregisterReminder(
this.actorRuntimeContext.getActorTypeInformation().getName(),
this.id.toString(),
reminderName);
diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java
index dc41fd627a..f3f43b53bd 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java
@@ -5,6 +5,8 @@
package io.dapr.actors.runtime;
+import io.dapr.actors.ActorMethod;
+
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Collections;
@@ -35,7 +37,12 @@ class ActorMethodInfoMap {
if (methodInfo.getParameterCount() <= 1) {
// If Actor class uses overloading, then one will win.
// Document this behavior, so users know how to write their code.
- methods.put(methodInfo.getName(), methodInfo);
+ String methodName = methodInfo.getName();
+ ActorMethod actorMethodAnnotation = methodInfo.getAnnotation(ActorMethod.class);
+ if ((actorMethodAnnotation != null) && !actorMethodAnnotation.name().isEmpty()) {
+ methodName = actorMethodAnnotation.name();
+ }
+ methods.put(methodName, methodInfo);
}
}
}
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 5312046c53..d9a31c41a2 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
@@ -7,6 +7,7 @@
import io.dapr.actors.ActorId;
import io.dapr.actors.ActorTrace;
+import io.dapr.client.DaprApiProtocol;
import io.dapr.client.DaprHttpBuilder;
import io.dapr.config.Properties;
import io.dapr.serializer.DaprObjectSerializer;
@@ -307,7 +308,7 @@ private ActorManager getActorManager(String actorTypeName) {
* @throws java.lang.IllegalStateException if any required field is missing
*/
private static DaprClient buildDaprClient(ManagedChannel channel) {
- if (Properties.USE_GRPC.get()) {
+ if (Properties.API_PROTOCOL.get() == DaprApiProtocol.GRPC) {
return new DaprGrpcClient(channel);
}
@@ -320,7 +321,7 @@ private static DaprClient buildDaprClient(ManagedChannel channel) {
* @return GRPC managed channel or null.
*/
private static ManagedChannel buildManagedChannel() {
- if (!Properties.USE_GRPC.get()) {
+ if (Properties.API_PROTOCOL.get() != DaprApiProtocol.GRPC) {
return null;
}
diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprClient.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprClient.java
index 5da02ca109..878f3ab9fb 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprClient.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprClient.java
@@ -22,7 +22,7 @@ interface DaprClient {
* @param keyName State name.
* @return Asynchronous result with current state value.
*/
- Mono getActorState(String actorType, String actorId, String keyName);
+ Mono getState(String actorType, String actorId, String keyName);
/**
* Saves state batch to Dapr.
@@ -32,7 +32,7 @@ interface DaprClient {
* @param operations State transaction operations.
* @return Asynchronous void result.
*/
- Mono saveActorStateTransactionally(String actorType, String actorId, List operations);
+ Mono saveStateTransactionally(String actorType, String actorId, List operations);
/**
* Register a reminder.
@@ -43,7 +43,7 @@ interface DaprClient {
* @param reminderParams Parameters for the reminder.
* @return Asynchronous void result.
*/
- Mono registerActorReminder(
+ Mono registerReminder(
String actorType,
String actorId,
String reminderName,
@@ -57,7 +57,7 @@ Mono registerActorReminder(
* @param reminderName Name of reminder to be unregistered.
* @return Asynchronous void result.
*/
- Mono unregisterActorReminder(String actorType, String actorId, String reminderName);
+ Mono unregisterReminder(String actorType, String actorId, String reminderName);
/**
* Register a timer.
@@ -68,7 +68,7 @@ Mono registerActorReminder(
* @param timerParams Parameters for the timer.
* @return Asynchronous void result.
*/
- Mono registerActorTimer(String actorType, String actorId, String timerName, ActorTimerParams timerParams);
+ Mono registerTimer(String actorType, String actorId, String timerName, ActorTimerParams timerParams);
/**
* Unregisters a timer.
@@ -78,5 +78,5 @@ Mono registerActorReminder(
* @param timerName Name of timer to be unregistered.
* @return Asynchronous void result.
*/
- Mono unregisterActorTimer(String actorType, String actorId, String timerName);
+ Mono unregisterTimer(String actorType, String actorId, String timerName);
}
diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprGrpcClient.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprGrpcClient.java
index 7f2de0579c..c29b406caf 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprGrpcClient.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprGrpcClient.java
@@ -66,7 +66,7 @@ class DaprGrpcClient implements DaprClient {
* {@inheritDoc}
*/
@Override
- public Mono getActorState(String actorType, String actorId, String keyName) {
+ public Mono getState(String actorType, String actorId, String keyName) {
return Mono.fromCallable(() -> {
DaprProtos.GetActorStateRequest req =
DaprProtos.GetActorStateRequest.newBuilder()
@@ -84,7 +84,7 @@ public Mono getActorState(String actorType, String actorId, String keyNa
* {@inheritDoc}
*/
@Override
- public Mono saveActorStateTransactionally(
+ public Mono saveStateTransactionally(
String actorType,
String actorId,
List operations) {
@@ -134,7 +134,7 @@ public Mono saveActorStateTransactionally(
* {@inheritDoc}
*/
@Override
- public Mono registerActorReminder(
+ public Mono registerReminder(
String actorType,
String actorId,
String reminderName,
@@ -160,7 +160,7 @@ public Mono registerActorReminder(
* {@inheritDoc}
*/
@Override
- public Mono unregisterActorReminder(String actorType, String actorId, String reminderName) {
+ public Mono unregisterReminder(String actorType, String actorId, String reminderName) {
return Mono.fromCallable(() -> {
DaprProtos.UnregisterActorReminderRequest req =
DaprProtos.UnregisterActorReminderRequest.newBuilder()
@@ -179,7 +179,7 @@ public Mono unregisterActorReminder(String actorType, String actorId, Stri
* {@inheritDoc}
*/
@Override
- public Mono registerActorTimer(
+ public Mono registerTimer(
String actorType,
String actorId,
String timerName,
@@ -206,7 +206,7 @@ public Mono registerActorTimer(
* {@inheritDoc}
*/
@Override
- public Mono unregisterActorTimer(String actorType, String actorId, String timerName) {
+ public Mono unregisterTimer(String actorType, String actorId, String timerName) {
return Mono.fromCallable(() -> {
DaprProtos.UnregisterActorTimerRequest req =
DaprProtos.UnregisterActorTimerRequest.newBuilder()
diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprHttpClient.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprHttpClient.java
index f7abe68833..ca5f0deba0 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprHttpClient.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprHttpClient.java
@@ -29,31 +29,6 @@ class DaprHttpClient implements DaprClient {
*/
private static final JsonFactory JSON_FACTORY = new JsonFactory();
- /**
- * Base URL for Dapr Actor APIs.
- */
- private static final String ACTORS_BASE_URL = DaprHttp.API_VERSION + "/" + "actors";
-
- /**
- * String format for Actors state management relative url.
- */
- private static final String ACTOR_STATE_KEY_RELATIVE_URL_FORMAT = ACTORS_BASE_URL + "/%s/%s/state/%s";
-
- /**
- * String format for Actors state management relative url.
- */
- private static final String ACTOR_STATE_RELATIVE_URL_FORMAT = ACTORS_BASE_URL + "/%s/%s/state";
-
- /**
- * String format for Actors reminder registration relative url.
- */
- private static final String ACTOR_REMINDER_RELATIVE_URL_FORMAT = ACTORS_BASE_URL + "/%s/%s/reminders/%s";
-
- /**
- * String format for Actors timer registration relative url.
- */
- private static final String ACTOR_TIMER_RELATIVE_URL_FORMAT = ACTORS_BASE_URL + "/%s/%s/timers/%s";
-
/**
* The HTTP client to be used.
*
@@ -74,10 +49,10 @@ class DaprHttpClient implements DaprClient {
* {@inheritDoc}
*/
@Override
- public Mono getActorState(String actorType, String actorId, String keyName) {
- String url = String.format(ACTOR_STATE_KEY_RELATIVE_URL_FORMAT, actorType, actorId, keyName);
+ public Mono getState(String actorType, String actorId, String keyName) {
+ String[] pathSegments = new String[] { DaprHttp.API_VERSION, "actors", actorType, actorId, "state", keyName };
Mono responseMono =
- this.client.invokeApi(DaprHttp.HttpMethods.GET.name(), url, null, "", null, null);
+ this.client.invokeApi(DaprHttp.HttpMethods.GET.name(), pathSegments, null, "", null, null);
return responseMono.map(r -> {
if ((r.getStatusCode() != 200) && (r.getStatusCode() != 204)) {
throw new IllegalStateException(
@@ -91,7 +66,7 @@ public Mono getActorState(String actorType, String actorId, String keyNa
* {@inheritDoc}
*/
@Override
- public Mono saveActorStateTransactionally(
+ public Mono saveStateTransactionally(
String actorType,
String actorId,
List operations) {
@@ -144,23 +119,30 @@ public Mono saveActorStateTransactionally(
return Mono.error(e);
}
- String url = String.format(ACTOR_STATE_RELATIVE_URL_FORMAT, actorType, actorId);
- return this.client.invokeApi(DaprHttp.HttpMethods.PUT.name(), url, null, payload, null, null).then();
+ String[] pathSegments = new String[] { DaprHttp.API_VERSION, "actors", actorType, actorId, "state" };
+ return this.client.invokeApi(DaprHttp.HttpMethods.PUT.name(), pathSegments, null, payload, null, null).then();
}
/**
* {@inheritDoc}
*/
@Override
- public Mono registerActorReminder(
+ public Mono registerReminder(
String actorType,
String actorId,
String reminderName,
ActorReminderParams reminderParams) {
- String url = String.format(ACTOR_REMINDER_RELATIVE_URL_FORMAT, actorType, actorId, reminderName);
+ String[] pathSegments = new String[] {
+ DaprHttp.API_VERSION,
+ "actors",
+ actorType,
+ actorId,
+ "reminders",
+ reminderName
+ };
return Mono.fromCallable(() -> INTERNAL_SERIALIZER.serialize(reminderParams))
.flatMap(data ->
- this.client.invokeApi(DaprHttp.HttpMethods.PUT.name(), url, null, data, null, null)
+ this.client.invokeApi(DaprHttp.HttpMethods.PUT.name(), pathSegments, null, data, null, null)
).then();
}
@@ -168,24 +150,38 @@ public Mono registerActorReminder(
* {@inheritDoc}
*/
@Override
- public Mono unregisterActorReminder(String actorType, String actorId, String reminderName) {
- String url = String.format(ACTOR_REMINDER_RELATIVE_URL_FORMAT, actorType, actorId, reminderName);
- return this.client.invokeApi(DaprHttp.HttpMethods.DELETE.name(), url, null, null, null).then();
+ public Mono unregisterReminder(String actorType, String actorId, String reminderName) {
+ String[] pathSegments = new String[] {
+ DaprHttp.API_VERSION,
+ "actors",
+ actorType,
+ actorId,
+ "reminders",
+ reminderName
+ };
+ return this.client.invokeApi(DaprHttp.HttpMethods.DELETE.name(), pathSegments, null, null, null).then();
}
/**
* {@inheritDoc}
*/
@Override
- public Mono registerActorTimer(
+ public Mono registerTimer(
String actorType,
String actorId,
String timerName,
ActorTimerParams timerParams) {
return Mono.fromCallable(() -> INTERNAL_SERIALIZER.serialize(timerParams))
.flatMap(data -> {
- String url = String.format(ACTOR_TIMER_RELATIVE_URL_FORMAT, actorType, actorId, timerName);
- return this.client.invokeApi(DaprHttp.HttpMethods.PUT.name(), url, null, data, null, null);
+ String[] pathSegments = new String[] {
+ DaprHttp.API_VERSION,
+ "actors",
+ actorType,
+ actorId,
+ "timers",
+ timerName
+ };
+ return this.client.invokeApi(DaprHttp.HttpMethods.PUT.name(), pathSegments, null, data, null, null);
}).then();
}
@@ -193,9 +189,9 @@ public Mono registerActorTimer(
* {@inheritDoc}
*/
@Override
- public Mono unregisterActorTimer(String actorType, String actorId, String timerName) {
- String url = String.format(ACTOR_TIMER_RELATIVE_URL_FORMAT, actorType, actorId, timerName);
- return this.client.invokeApi(DaprHttp.HttpMethods.DELETE.name(), url, null, null, null).then();
+ public Mono unregisterTimer(String actorType, String actorId, String timerName) {
+ String[] pathSegments = new String[] { DaprHttp.API_VERSION, "actors", actorType, actorId, "timers", timerName };
+ return this.client.invokeApi(DaprHttp.HttpMethods.DELETE.name(), pathSegments, null, null, null).then();
}
}
diff --git a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java
index 7fa621f6ac..e4882926b6 100644
--- a/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java
+++ b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java
@@ -60,7 +60,7 @@ class DaprStateAsyncProvider {
}
Mono load(String actorType, ActorId actorId, String stateName, TypeRef type) {
- Mono result = this.daprClient.getActorState(actorType, actorId.toString(), stateName);
+ Mono result = this.daprClient.getState(actorType, actorId.toString(), stateName);
return result.flatMap(s -> {
try {
@@ -88,7 +88,7 @@ Mono load(String actorType, ActorId actorId, String stateName, TypeRef
}
Mono contains(String actorType, ActorId actorId, String stateName) {
- Mono result = this.daprClient.getActorState(actorType, actorId.toString(), stateName);
+ Mono result = this.daprClient.getState(actorType, actorId.toString(), stateName);
return result.map(s -> s.length > 0).defaultIfEmpty(false);
}
@@ -155,7 +155,7 @@ Mono apply(String actorType, ActorId actorId, ActorStateChange... stateCha
operations.add(new ActorStateOperation(operationName, key, value));
}
- return this.daprClient.saveActorStateTransactionally(actorType, actorId.toString(), operations);
+ return this.daprClient.saveStateTransactionally(actorType, actorId.toString(), operations);
}
}
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 900ecad46d..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
@@ -7,44 +7,56 @@
import io.dapr.actors.ActorId;
import io.dapr.actors.ActorType;
-import io.dapr.exceptions.DaprException;
+import org.junit.AfterClass;
import org.junit.Assert;
+import org.junit.BeforeClass;
import org.junit.Test;
public class ActorProxyBuilderTest {
- @Test(expected = DaprException.class)
+ private static ActorClient actorClient;
+
+ @BeforeClass
+ public static void initClass() {
+ actorClient = new ActorClient();
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ actorClient.close();
+ }
+
+ @Test(expected = IllegalArgumentException.class)
public void buildWithNullActorId() {
- new ActorProxyBuilder("test", Object.class)
+ new ActorProxyBuilder("test", Object.class, actorClient)
.build(null);
-
}
- @Test(expected = DaprException.class)
+ @Test(expected = IllegalArgumentException.class)
public void buildWithEmptyActorType() {
- new ActorProxyBuilder("", Object.class)
- .build(new ActorId("100"));
-
+ new ActorProxyBuilder("", Object.class, actorClient);
}
- @Test(expected = DaprException.class)
+ @Test(expected = IllegalArgumentException.class)
public void buildWithNullActorType() {
- new ActorProxyBuilder(null, Object.class)
- .build(new ActorId("100"));
-
+ new ActorProxyBuilder(null, Object.class, actorClient);
}
- @Test(expected = DaprException.class)
+ @Test(expected = IllegalArgumentException.class)
public void buildWithNullSerializer() {
- new ActorProxyBuilder("MyActor", Object.class)
+ new ActorProxyBuilder("MyActor", Object.class, actorClient)
.withObjectSerializer(null)
.build(new ActorId("100"));
+ }
+ @Test(expected = IllegalArgumentException.class)
+ public void buildWithNullClient() {
+ new ActorProxyBuilder("MyActor", Object.class, null);
}
@Test()
public void build() {
- ActorProxyBuilder builder = new ActorProxyBuilder("test", ActorProxy.class);
+ ActorProxyBuilder builder = new ActorProxyBuilder("test", ActorProxy.class, actorClient);
ActorProxy actorProxy = builder.build(new ActorId("100"));
Assert.assertNotNull(actorProxy);
@@ -54,7 +66,7 @@ public void build() {
@Test()
public void buildWithType() {
- ActorProxyBuilder builder = new ActorProxyBuilder(MyActor.class);
+ ActorProxyBuilder builder = new ActorProxyBuilder(MyActor.class, actorClient);
MyActor actorProxy = builder.build(new ActorId("100"));
Assert.assertNotNull(actorProxy);
@@ -62,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, actorClient);
+ ActorWithDefaultName actorProxy = builder.build(new ActorId("100"));
Assert.assertNotNull(actorProxy);
}
@@ -72,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-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java
deleted file mode 100644
index faa237136a..0000000000
--- a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyForTestsImpl.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (c) Microsoft Corporation.
- * Licensed under the MIT License.
- */
-
-package io.dapr.actors.client;
-
-import io.dapr.actors.ActorId;
-import io.dapr.serializer.DaprObjectSerializer;
-
-public class ActorProxyForTestsImpl extends ActorProxyImpl {
-
- public ActorProxyForTestsImpl(String actorType, ActorId actorId, DaprObjectSerializer serializer, DaprClient daprClient) {
- super(actorType, actorId, serializer, daprClient);
- }
-}
diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplForTests.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplForTests.java
new file mode 100644
index 0000000000..a5160ace2a
--- /dev/null
+++ b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplForTests.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) Microsoft Corporation.
+ * Licensed under the MIT License.
+ */
+
+package io.dapr.actors.client;
+
+import io.dapr.actors.ActorId;
+import io.dapr.serializer.DaprObjectSerializer;
+
+public class ActorProxyImplForTests extends ActorProxyImpl {
+
+ 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/client/ActorProxyImplTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java
index 5bbe2213d7..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,11 +36,11 @@ 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());
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(daprResponse);
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -49,7 +49,7 @@ public void invokeActorMethodWithoutDataWithReturnType() {
new DefaultObjectSerializer(),
daprClient);
- Mono result = actorProxy.invokeActorMethod("getData", MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", MyData.class);
MyData myData = result.block();
Assert.assertNotNull(myData);
Assert.assertEquals("valueA", myData.getPropertyA());
@@ -58,11 +58,11 @@ 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());
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -79,11 +79,11 @@ 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());
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -102,11 +102,11 @@ 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());
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -125,11 +125,11 @@ 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());
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -149,10 +149,10 @@ 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.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -167,10 +167,10 @@ 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.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -186,10 +186,10 @@ 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.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -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,10 +228,10 @@ 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.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.eq("\"hello world\"".getBytes())))
.thenReturn(daprResponse);
final ActorProxyImpl actorProxy = new ActorProxyImpl(
@@ -250,8 +250,8 @@ public void invokeActorMethodWithDataWithoutReturnTypeViaReflection() throws NoS
@Test()
public void invokeActorMethodWithoutDataWithEmptyReturnType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(Mono.just("".getBytes()));
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -260,15 +260,15 @@ public void invokeActorMethodWithoutDataWithEmptyReturnType() {
new DefaultObjectSerializer(),
daprClient);
- Mono result = actorProxy.invokeActorMethod("getData", MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", MyData.class);
MyData myData = result.block();
Assert.assertNull(myData);
}
@Test(expected = RuntimeException.class)
public void invokeActorMethodWithIncorrectReturnType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(Mono.just("{test}".getBytes()));
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -277,7 +277,7 @@ public void invokeActorMethodWithIncorrectReturnType() {
new DefaultObjectSerializer(),
daprClient);
- Mono result = actorProxy.invokeActorMethod("getData", MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", MyData.class);
result.doOnSuccess(x ->
Assert.fail("Not exception was throw"))
@@ -287,8 +287,8 @@ public void invokeActorMethodWithIncorrectReturnType() {
@Test()
public void invokeActorMethodSavingDataWithReturnType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNotNull()))
+ 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()));
@@ -302,7 +302,7 @@ public void invokeActorMethodSavingDataWithReturnType() {
saveData.setPropertyA("valueA");
saveData.setPropertyB("valueB");
- Mono result = actorProxy.invokeActorMethod("getData", saveData, MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", saveData, MyData.class);
MyData myData = result.block();
Assert.assertNotNull(myData);
Assert.assertEquals("valueA", myData.getPropertyA());
@@ -312,8 +312,8 @@ public void invokeActorMethodSavingDataWithReturnType() {
@Test(expected = DaprException.class)
public void invokeActorMethodSavingDataWithIncorrectReturnType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNotNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull()))
.thenReturn(Mono.just("{test}".getBytes()));
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -326,7 +326,7 @@ public void invokeActorMethodSavingDataWithIncorrectReturnType() {
saveData.setPropertyA("valueA");
saveData.setPropertyB("valueB");
- Mono result = actorProxy.invokeActorMethod("getData", saveData, MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", saveData, MyData.class);
result.doOnSuccess(x ->
Assert.fail("Not exception was throw"))
.doOnError(Throwable::printStackTrace
@@ -336,8 +336,8 @@ public void invokeActorMethodSavingDataWithIncorrectReturnType() {
@Test()
public void invokeActorMethodSavingDataWithEmptyReturnType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNotNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull()))
.thenReturn(Mono.just("".getBytes()));
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -350,7 +350,7 @@ public void invokeActorMethodSavingDataWithEmptyReturnType() {
saveData.setPropertyA("valueA");
saveData.setPropertyB("valueB");
- Mono result = actorProxy.invokeActorMethod("getData", saveData, MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", saveData, MyData.class);
MyData myData = result.block();
Assert.assertNull(myData);
}
@@ -358,8 +358,8 @@ public void invokeActorMethodSavingDataWithEmptyReturnType() {
@Test(expected = DaprException.class)
public void invokeActorMethodSavingDataWithIncorrectInputType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNotNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull()))
.thenReturn(Mono.just("{test}".getBytes()));
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -373,7 +373,7 @@ public void invokeActorMethodSavingDataWithIncorrectInputType() {
saveData.setPropertyB("valueB");
saveData.setMyData(saveData);
- Mono result = actorProxy.invokeActorMethod("getData", saveData, MyData.class);
+ Mono result = actorProxy.invokeMethod("getData", saveData, MyData.class);
result.doOnSuccess(x ->
Assert.fail("Not exception was throw"))
.doOnError(Throwable::printStackTrace
@@ -387,8 +387,8 @@ public void invokeActorMethodWithDataWithVoidReturnType() {
saveData.setPropertyA("valueA");
saveData.setPropertyB("valueB");
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNotNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull()))
.thenReturn(Mono.empty());
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -397,7 +397,7 @@ public void invokeActorMethodWithDataWithVoidReturnType() {
new DefaultObjectSerializer(),
daprClient);
- Mono result = actorProxy.invokeActorMethod("getData", saveData);
+ Mono result = actorProxy.invokeMethod("getData", saveData);
Void emptyResponse = result.block();
Assert.assertNull(emptyResponse);
}
@@ -410,8 +410,8 @@ public void invokeActorMethodWithDataWithVoidIncorrectInputType() {
saveData.setPropertyB("valueB");
saveData.setMyData(saveData);
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNotNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNotNull()))
.thenReturn(Mono.empty());
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -420,15 +420,15 @@ public void invokeActorMethodWithDataWithVoidIncorrectInputType() {
new DefaultObjectSerializer(),
daprClient);
- Mono result = actorProxy.invokeActorMethod("getData", saveData);
+ Mono result = actorProxy.invokeMethod("getData", saveData);
Void emptyResponse = result.doOnError(Throwable::printStackTrace).block();
Assert.assertNull(emptyResponse);
}
@Test()
public void invokeActorMethodWithoutDataWithVoidReturnType() {
- final DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.invokeActorMethod(anyString(), anyString(), anyString(), Mockito.isNull()))
+ final ActorClient daprClient = mock(ActorClient.class);
+ when(daprClient.invoke(anyString(), anyString(), anyString(), Mockito.isNull()))
.thenReturn(Mono.empty());
final ActorProxy actorProxy = new ActorProxyImpl(
@@ -437,7 +437,7 @@ public void invokeActorMethodWithoutDataWithVoidReturnType() {
new DefaultObjectSerializer(),
daprClient);
- Mono result = actorProxy.invokeActorMethod("getData");
+ Mono result = actorProxy.invokeMethod("getData");
Void emptyResponse = result.block();
Assert.assertNull(emptyResponse);
}
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 374b61a316..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,10 +7,10 @@
import reactor.core.publisher.Mono;
-public class DaprClientStub implements DaprClient {
+public class DaprClientStub extends ActorClient implements DaprClient {
@Override
- public Mono invokeActorMethod(String actorType, String actorId, String methodName, byte[] jsonPayload) {
+ public Mono invoke(String actorType, String actorId, String methodName, byte[] jsonPayload) {
return Mono.just(new byte[0]);
}
diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/DaprGrpcClientTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/DaprGrpcClientTest.java
index a43f8adf1d..9869bc756c 100644
--- a/sdk-actors/src/test/java/io/dapr/actors/client/DaprGrpcClientTest.java
+++ b/sdk-actors/src/test/java/io/dapr/actors/client/DaprGrpcClientTest.java
@@ -54,7 +54,7 @@ public void invoke() {
assertArrayEquals(payload, argument.getData().toByteArray());
return true;
}))).thenReturn(settableFuture);
- Mono result = client.invokeActorMethod(ACTOR_TYPE, ACTOR_ID, methodName, payload);
+ Mono result = client.invoke(ACTOR_TYPE, ACTOR_ID, methodName, payload);
assertArrayEquals(response, result.block());
}
@@ -73,7 +73,7 @@ public void invokeNullPayload() {
assertArrayEquals(new byte[0], argument.getData().toByteArray());
return true;
}))).thenReturn(settableFuture);
- Mono result = client.invokeActorMethod(ACTOR_TYPE, ACTOR_ID, methodName, null);
+ Mono result = client.invoke(ACTOR_TYPE, ACTOR_ID, methodName, null);
assertArrayEquals(response, result.block());
}
@@ -91,7 +91,7 @@ public void invokeException() {
assertArrayEquals(new byte[0], argument.getData().toByteArray());
return true;
}))).thenReturn(settableFuture);
- Mono result = client.invokeActorMethod(ACTOR_TYPE, ACTOR_ID, methodName, null);
+ Mono result = client.invoke(ACTOR_TYPE, ACTOR_ID, methodName, null);
assertThrowsDaprException(
ExecutionException.class,
@@ -114,7 +114,7 @@ public void invokeNotHotMono() {
assertArrayEquals(new byte[0], argument.getData().toByteArray());
return true;
}))).thenReturn(settableFuture);
- client.invokeActorMethod(ACTOR_TYPE, ACTOR_ID, methodName, null);
+ client.invoke(ACTOR_TYPE, ACTOR_ID, methodName, null);
// No exception thrown because Mono is ignored here.
}
diff --git a/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java
index 2fabe7ced7..c486db65a9 100644
--- a/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java
+++ b/sdk-actors/src/test/java/io/dapr/actors/client/DaprHttpClientTest.java
@@ -43,7 +43,7 @@ public void invokeActorMethod() {
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono =
- DaprHttpClient.invokeActorMethod("DemoActor", "1", "Payment", "".getBytes());
+ DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
assertEquals(new String(mono.block()), EXPECTED_RESULT);
}
@@ -58,7 +58,7 @@ public void invokeActorMethodError() {
DaprHttp daprHttp = new DaprHttpProxy(Properties.SIDECAR_IP.get(), 3000, okHttpClient);
DaprHttpClient = new DaprHttpClient(daprHttp);
Mono mono =
- DaprHttpClient.invokeActorMethod("DemoActor", "1", "Payment", "".getBytes());
+ DaprHttpClient.invoke("DemoActor", "1", "Payment", "".getBytes());
assertThrowsDaprException(
"ERR_SOMETHING",
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 d85ab428f2..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;
@@ -98,7 +98,7 @@ public void classInClassOut() {
ActorProxy actorProxy = createActorProxy();
MyData d = new MyData("hi", 3);
- MyData response = actorProxy.invokeActorMethod("classInClassOut", d, MyData.class).block();
+ MyData response = actorProxy.invokeMethod("classInClassOut", d, MyData.class).block();
Assert.assertEquals("hihi", response.getName());
Assert.assertEquals(6, response.getNum());
@@ -107,7 +107,7 @@ public void classInClassOut() {
@Test
public void stringInStringOut() {
ActorProxy actorProxy = createActorProxy();
- String response = actorProxy.invokeActorMethod("stringInStringOut", "oi", String.class).block();
+ String response = actorProxy.invokeMethod("stringInStringOut", "oi", String.class).block();
Assert.assertEquals("oioi", response);
}
@@ -115,7 +115,7 @@ public void stringInStringOut() {
@Test
public void intInIntOut() {
ActorProxy actorProxy = createActorProxy();
- int response = actorProxy.invokeActorMethod("intInIntOut", 2, int.class).block();
+ int response = actorProxy.invokeMethod("intInIntOut", 2, int.class).block();
Assert.assertEquals(4, response);
}
@@ -130,7 +130,7 @@ private ActorProxy createActorProxy() {
// Mock daprClient for ActorProxy only, not for runtime.
DaprClientStub daprClient = mock(DaprClientStub.class);
- when(daprClient.invokeActorMethod(
+ when(daprClient.invoke(
eq(context.getActorTypeInformation().getName()),
eq(actorId.toString()),
any(),
@@ -143,7 +143,7 @@ private ActorProxy createActorProxy() {
this.manager.activateActor(actorId).block();
- return new ActorProxyForTestsImpl(
+ return new ActorProxyImplForTests(
context.getActorTypeInformation().getName(),
actorId,
CUSTOM_SERIALIZER,
@@ -153,10 +153,10 @@ private ActorProxy createActorProxy() {
private static ActorRuntimeContext createContext() {
DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.registerActorTimer(any(), any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.registerActorReminder(any(), any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.unregisterActorTimer(any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.unregisterActorReminder(any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.registerTimer(any(), any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.registerReminder(any(), any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.unregisterTimer(any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.unregisterReminder(any(), any(), any())).thenReturn(Mono.empty());
return new ActorRuntimeContext(
mock(ActorRuntime.class),
diff --git a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java
index f8eb562738..7b679b8df8 100644
--- a/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java
+++ b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java
@@ -287,10 +287,10 @@ private static String executeSayMethod(String something) {
private static ActorRuntimeContext createContext(Class clazz) {
DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.registerActorTimer(any(), any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.registerActorReminder(any(), any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.unregisterActorTimer(any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.unregisterActorReminder(any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.registerTimer(any(), any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.registerReminder(any(), any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.unregisterTimer(any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.unregisterReminder(any(), any(), any())).thenReturn(Mono.empty());
return new ActorRuntimeContext(
mock(ActorRuntime.class),
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 fd5c99e72d..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
@@ -6,9 +6,10 @@
package io.dapr.actors.runtime;
import io.dapr.actors.ActorId;
+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;
@@ -43,6 +44,8 @@ public interface MyActor {
Mono classInClassOut(MyData input);
Mono registerBadCallbackName();
String registerTimerAutoName();
+ @ActorMethod(name = "DotNetMethodASync")
+ Mono dotNetMethod();
}
@ActorType(name = "MyActor")
@@ -108,6 +111,11 @@ public Mono registerBadCallbackName() {
public String registerTimerAutoName() {
return super.registerActorTimer("", "anything", "state", Duration.ofSeconds(1), Duration.ofSeconds(1)).block();
}
+
+ @Override
+ public Mono dotNetMethod() {
+ return Mono.empty();
+ }
}
static class MyData {
@@ -139,7 +147,7 @@ public void actorId() {
Assert.assertEquals(
proxy.getActorId().toString(),
- proxy.invokeActorMethod("getMyId", String.class).block());
+ proxy.invokeMethod("getMyId", String.class).block());
}
@Test
@@ -149,7 +157,7 @@ public void stringInStringOut() {
// these should only call the actor methods for ActorChild. The implementations in ActorParent will throw.
Assert.assertEquals(
"abcabc",
- proxy.invokeActorMethod("stringInStringOut", "abc", String.class).block());
+ proxy.invokeMethod("stringInStringOut", "abc", String.class).block());
}
@Test
@@ -159,11 +167,11 @@ public void stringInBooleanOut() {
// these should only call the actor methods for ActorChild. The implementations in ActorParent will throw.
Assert.assertEquals(
false,
- proxy.invokeActorMethod("stringInBooleanOut", "hello world", Boolean.class).block());
+ proxy.invokeMethod("stringInBooleanOut", "hello world", Boolean.class).block());
Assert.assertEquals(
true,
- proxy.invokeActorMethod("stringInBooleanOut", "true", Boolean.class).block());
+ proxy.invokeMethod("stringInBooleanOut", "true", Boolean.class).block());
}
@Test(expected = IllegalMonitorStateException.class)
@@ -171,7 +179,13 @@ public void stringInVoidOutIntentionallyThrows() {
ActorProxy actorProxy = createActorProxy();
// these should only call the actor methods for ActorChild. The implementations in ActorParent will throw.
- actorProxy.invokeActorMethod("stringInVoidOutIntentionallyThrows", "hello world").block();
+ actorProxy.invokeMethod("stringInVoidOutIntentionallyThrows", "hello world").block();
+ }
+
+ @Test
+ public void testMethodNameChange() {
+ MyActor actor = createActorProxy(MyActor.class);
+ actor.dotNetMethod();
}
@Test
@@ -180,7 +194,7 @@ public void classInClassOut() {
MyData d = new MyData("hi", 3);
// this should only call the actor methods for ActorChild. The implementations in ActorParent will throw.
- MyData response = actorProxy.invokeActorMethod("classInClassOut", d, MyData.class).block();
+ MyData response = actorProxy.invokeMethod("classInClassOut", d, MyData.class).block();
Assert.assertEquals(
"hihi",
@@ -218,7 +232,7 @@ private ActorProxy createActorProxy() {
// Mock daprClient for ActorProxy only, not for runtime.
DaprClientStub daprClient = mock(DaprClientStub.class);
- when(daprClient.invokeActorMethod(
+ when(daprClient.invoke(
eq(context.getActorTypeInformation().getName()),
eq(actorId.toString()),
any(),
@@ -231,7 +245,7 @@ private ActorProxy createActorProxy() {
this.manager.activateActor(actorId).block();
- return new ActorProxyForTestsImpl(
+ return new ActorProxyImplForTests(
context.getActorTypeInformation().getName(),
actorId,
new DefaultObjectSerializer(),
@@ -244,7 +258,7 @@ private T createActorProxy(Class clazz) {
// Mock daprClient for ActorProxy only, not for runtime.
DaprClientStub daprClient = mock(DaprClientStub.class);
- when(daprClient.invokeActorMethod(
+ when(daprClient.invoke(
eq(context.getActorTypeInformation().getName()),
eq(actorId.toString()),
any(),
@@ -257,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);
}
@@ -271,10 +285,10 @@ private T createActorProxy(Class clazz) {
private static ActorRuntimeContext createContext() {
DaprClient daprClient = mock(DaprClient.class);
- when(daprClient.registerActorTimer(any(), any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.registerActorReminder(any(), any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.unregisterActorTimer(any(), any(), any())).thenReturn(Mono.empty());
- when(daprClient.unregisterActorReminder(any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.registerTimer(any(), any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.registerReminder(any(), any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.unregisterTimer(any(), any(), any())).thenReturn(Mono.empty());
+ when(daprClient.unregisterReminder(any(), any(), any())).thenReturn(Mono.empty());
return new ActorRuntimeContext(
mock(ActorRuntime.class),
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 7af99614b1..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;
@@ -289,33 +289,33 @@ public MyMethodContext setName(String name) {
public void happyGetSetDeleteContains() {
ActorProxy proxy = newActorProxy();
Assert.assertEquals(
- proxy.getActorId().toString(), proxy.invokeActorMethod("getIdString", String.class).block());
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ proxy.getActorId().toString(), proxy.invokeMethod("getIdString", String.class).block());
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
- proxy.invokeActorMethod("setMessage", "hello world").block();
- Assert.assertTrue(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ proxy.invokeMethod("setMessage", "hello world").block();
+ Assert.assertTrue(proxy.invokeMethod("hasMessage", Boolean.class).block());
Assert.assertEquals(
- "hello world", proxy.invokeActorMethod("getMessage", String.class).block());
+ "hello world", proxy.invokeMethod("getMessage", String.class).block());
Assert.assertEquals(
executeSayMethod("hello world"),
- proxy.invokeActorMethod("setMessage", "hello world", String.class).block());
+ proxy.invokeMethod("setMessage", "hello world", String.class).block());
- proxy.invokeActorMethod("deleteMessage").block();
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ proxy.invokeMethod("deleteMessage").block();
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
}
@Test(expected = IllegalStateException.class)
public void lazyGet() {
ActorProxy proxy = newActorProxy();
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
- proxy.invokeActorMethod("setMessage", "first message").block();
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
+ proxy.invokeMethod("setMessage", "first message").block();
// Creates the mono plan but does not call it yet.
- Mono getMessageCall = proxy.invokeActorMethod("getMessage", String.class);
+ Mono getMessageCall = proxy.invokeMethod("getMessage", String.class);
- proxy.invokeActorMethod("deleteMessage").block();
+ proxy.invokeMethod("deleteMessage").block();
// Call should fail because the message was deleted.
getMessageCall.block();
@@ -324,96 +324,96 @@ public void lazyGet() {
@Test
public void lazySet() {
ActorProxy proxy = newActorProxy();
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
// Creates the mono plan but does not call it yet.
- Mono setMessageCall = proxy.invokeActorMethod("setMessage", "first message");
+ Mono setMessageCall = proxy.invokeMethod("setMessage", "first message");
// No call executed yet, so message should not be set.
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
setMessageCall.block();
// Now the message has been set.
- Assert.assertTrue(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertTrue(proxy.invokeMethod("hasMessage", Boolean.class).block());
}
@Test
public void lazyContains() {
ActorProxy proxy = newActorProxy();
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
// Creates the mono plan but does not call it yet.
- Mono hasMessageCall = proxy.invokeActorMethod("hasMessage", Boolean.class);
+ Mono hasMessageCall = proxy.invokeMethod("hasMessage", Boolean.class);
// Sets the message.
- proxy.invokeActorMethod("setMessage", "hello world").block();
+ proxy.invokeMethod("setMessage", "hello world").block();
// Now we check if message is set.
hasMessageCall.block();
// Now the message should be set.
- Assert.assertTrue(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertTrue(proxy.invokeMethod("hasMessage", Boolean.class).block());
}
@Test
public void lazyDelete() {
ActorProxy proxy = newActorProxy();
- Assert.assertFalse(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertFalse(proxy.invokeMethod("hasMessage", Boolean.class).block());
- proxy.invokeActorMethod("setMessage", "first message").block();
+ proxy.invokeMethod("setMessage", "first message").block();
// Message is set.
- Assert.assertTrue(proxy.invokeActorMethod("hasMessage", Boolean.class).block());
+ Assert.assertTrue(proxy.invokeMethod("hasMessage", Boolean.class).block());
// Created the mono plan but does not execute it yet.
- Mono