diff --git a/pom.xml b/pom.xml
index ee5be6777..b6ed8b67b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,6 +84,7 @@
sdk-autogen
sdk
+ sdk-actors
sdk-springboot
examples
diff --git a/sdk-actors/checkstyle-java.xml b/sdk-actors/checkstyle-java.xml
new file mode 100644
index 000000000..668dc1fe8
--- /dev/null
+++ b/sdk-actors/checkstyle-java.xml
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sdk-actors/pom.xml b/sdk-actors/pom.xml
new file mode 100644
index 000000000..162fcd610
--- /dev/null
+++ b/sdk-actors/pom.xml
@@ -0,0 +1,144 @@
+
+ 4.0.0
+
+
+ io.dapr
+ dapr-sdk-parent
+ 0.2.0
+
+
+ dapr-sdk-actors
+ jar
+ 0.2.0
+ dapr-sdk
+ SDK for Actors on Dapr
+
+
+
+ false
+
+ central
+ libs-release
+ https://repo.spring.io/libs-release
+
+
+
+
+
+ io.dapr
+ dapr-sdk
+ 0.2.0
+
+
+ junit
+ junit
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.2.0
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.1.1
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 2.22.2
+
+ ${skipITs}
+
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.4
+
+
+ default-prepare-agent
+
+ prepare-agent
+
+
+
+ report
+ test
+
+ report
+
+
+
+ check
+
+ check
+
+
+
+
+ CLASS
+
+
+ LINE
+ COVEREDRATIO
+ 0.00
+
+
+ BRANCH
+ COVEREDRATIO
+ 0.00
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sdk/src/main/java/io/dapr/actors/ActorId.java b/sdk-actors/src/main/java/io/dapr/actors/ActorId.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/ActorId.java
rename to sdk-actors/src/main/java/io/dapr/actors/ActorId.java
diff --git a/sdk/src/main/java/io/dapr/actors/ActorTrace.java b/sdk-actors/src/main/java/io/dapr/actors/ActorTrace.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/ActorTrace.java
rename to sdk-actors/src/main/java/io/dapr/actors/ActorTrace.java
diff --git a/sdk/src/main/java/io/dapr/actors/client/ActorMethodEnvelope.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorMethodEnvelope.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/client/ActorMethodEnvelope.java
rename to sdk-actors/src/main/java/io/dapr/actors/client/ActorMethodEnvelope.java
diff --git a/sdk/src/main/java/io/dapr/actors/client/ActorProxy.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxy.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/client/ActorProxy.java
rename to sdk-actors/src/main/java/io/dapr/actors/client/ActorProxy.java
diff --git a/sdk/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java
rename to sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyBuilder.java
diff --git a/sdk/src/main/java/io/dapr/actors/client/ActorProxyImpl.java b/sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyImpl.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/client/ActorProxyImpl.java
rename to sdk-actors/src/main/java/io/dapr/actors/client/ActorProxyImpl.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/AbstractActor.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/AbstractActor.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/AbstractActor.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/AbstractActor.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/Actor.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/Actor.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/Actor.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/Actor.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorCallType.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorCallType.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorCallType.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorCallType.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorFactory.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorFactory.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorFactory.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorFactory.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorManager.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorManager.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorManager.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorManager.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorMethodContext.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodContext.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorMethodContext.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodContext.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorMethodInfoMap.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorReminderParams.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorReminderParams.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorReminderParams.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorReminderParams.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorRuntime.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorRuntime.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorRuntimeContext.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntimeContext.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorRuntimeContext.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntimeContext.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorStateChange.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateChange.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorStateChange.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateChange.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorStateChangeKind.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateChangeKind.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorStateChangeKind.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateChangeKind.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorStateManager.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateManager.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorStateManager.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateManager.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorStateSerializer.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateSerializer.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorStateSerializer.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorStateSerializer.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorTimer.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTimer.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorTimer.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTimer.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorTimerParams.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTimerParams.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorTimerParams.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTimerParams.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorType.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorType.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorType.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorType.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorTypeInformation.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTypeInformation.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorTypeInformation.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTypeInformation.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/ActorTypeUtilities.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTypeUtilities.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/ActorTypeUtilities.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/ActorTypeUtilities.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/DaprStateAsyncProvider.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/DefaultActorFactory.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DefaultActorFactory.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/DefaultActorFactory.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/DefaultActorFactory.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/DurationUtils.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/DurationUtils.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/DurationUtils.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/DurationUtils.java
diff --git a/sdk/src/main/java/io/dapr/actors/runtime/Remindable.java b/sdk-actors/src/main/java/io/dapr/actors/runtime/Remindable.java
similarity index 100%
rename from sdk/src/main/java/io/dapr/actors/runtime/Remindable.java
rename to sdk-actors/src/main/java/io/dapr/actors/runtime/Remindable.java
diff --git a/sdk/src/test/java/io/dapr/actors/ActorIdTest.java b/sdk-actors/src/test/java/io/dapr/actors/ActorIdTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/ActorIdTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/ActorIdTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyBuilderTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java b/sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/client/ActorProxyImplTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/ActorManagerTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/ActorMethodInfoMapTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorMethodInfoMapTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/ActorMethodInfoMapTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/ActorMethodInfoMapTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/ActorReminderParamsTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorReminderParamsTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/ActorReminderParamsTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/ActorReminderParamsTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/ActorTimerTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorTimerTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/ActorTimerTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/ActorTimerTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/ActorTypeInformationTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/ActorTypeInformationTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/ActorTypeInformationTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/ActorTypeInformationTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/DaprStateAsyncProviderTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/DaprStateAsyncProviderTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/DaprStateAsyncProviderTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/DaprStateAsyncProviderTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/DefaultActorFactoryTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/DefaultActorFactoryTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/DefaultActorFactoryTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/DefaultActorFactoryTest.java
diff --git a/sdk/src/test/java/io/dapr/actors/runtime/DurationUtilsTest.java b/sdk-actors/src/test/java/io/dapr/actors/runtime/DurationUtilsTest.java
similarity index 100%
rename from sdk/src/test/java/io/dapr/actors/runtime/DurationUtilsTest.java
rename to sdk-actors/src/test/java/io/dapr/actors/runtime/DurationUtilsTest.java
diff --git a/sdk-springboot/pom.xml b/sdk-springboot/pom.xml
index ed1ae238c..75f03f282 100644
--- a/sdk-springboot/pom.xml
+++ b/sdk-springboot/pom.xml
@@ -43,6 +43,11 @@
dapr-sdk
0.2.0
+
+ io.dapr
+ dapr-sdk-actors
+ 0.2.0
+
diff --git a/sdk/src/main/java/io/dapr/client/DaprClientHttpAdapter.java b/sdk/src/main/java/io/dapr/client/DaprClientHttpAdapter.java
index 96095c569..621011cf3 100644
--- a/sdk/src/main/java/io/dapr/client/DaprClientHttpAdapter.java
+++ b/sdk/src/main/java/io/dapr/client/DaprClientHttpAdapter.java
@@ -7,7 +7,6 @@ package io.dapr.client;
import io.dapr.client.domain.StateKeyValue;
import io.dapr.client.domain.StateOptions;
import io.dapr.client.domain.Verb;
-import io.dapr.exceptions.DaprException;
import io.dapr.utils.Constants;
import io.dapr.utils.ObjectSerializer;
import reactor.core.publisher.Mono;
@@ -64,7 +63,7 @@ public class DaprClientHttpAdapter implements DaprClient {
public Mono publishEvent(String topic, T event, Map metadata) {
try {
if (topic == null || topic.trim().isEmpty()) {
- throw new DaprException("INVALID_TOPIC", "Topic name cannot be null or empty.");
+ throw new IllegalArgumentException("Topic name cannot be null or empty.");
}
byte[] serializedEvent = objectSerializer.serialize(event);
@@ -83,14 +82,14 @@ public class DaprClientHttpAdapter implements DaprClient {
public Mono invokeService(Verb verb, String appId, String method, R request, Map metadata, Class clazz) {
try {
if (verb == null) {
- throw new DaprException("500", "Verb cannot be null.");
+ throw new IllegalArgumentException("Verb cannot be null.");
}
String httMethod = verb.toString();
if (appId == null || appId.trim().isEmpty()) {
- throw new DaprException("500", "App Id cannot be null or empty.");
+ throw new IllegalArgumentException("App Id cannot be null or empty.");
}
if (method == null || method.trim().isEmpty()) {
- throw new DaprException("500", "Method name cannot be null or empty.");
+ throw new IllegalArgumentException("Method name cannot be null or empty.");
}
String path = String.format("%s/%s/method/%s", Constants.INVOKE_PATH, appId, method);
byte[] serializedRequestBody = objectSerializer.serialize(request);
@@ -146,7 +145,7 @@ public class DaprClientHttpAdapter implements DaprClient {
public Mono invokeBinding(String name, T request) {
try {
if (name == null || name.trim().isEmpty()) {
- throw new DaprException("500", "Name to bind cannot be null or empty.");
+ throw new IllegalArgumentException("Name to bind cannot be null or empty.");
}
Map jsonMap = new HashMap<>();
@@ -172,7 +171,7 @@ public class DaprClientHttpAdapter implements DaprClient {
public Mono getState(StateKeyValue state, StateOptions options, Class clazz) {
try {
if (state.getKey() == null) {
- throw new DaprException("500", "Name cannot be null or empty.");
+ throw new IllegalArgumentException("Name cannot be null or empty.");
}
Map headers = new HashMap<>();
if (state.getEtag() != null && !state.getEtag().trim().isEmpty()) {
@@ -236,8 +235,11 @@ public class DaprClientHttpAdapter implements DaprClient {
@Override
public Mono deleteState(StateKeyValue state, StateOptions options) {
try {
- if (state.getKey() == null) {
- throw new DaprException("500", "Name cannot be null or empty.");
+ if (state == null) {
+ throw new IllegalArgumentException("State cannot be null.");
+ }
+ if (state.getKey() == null || state.getKey().trim().isEmpty()) {
+ throw new IllegalArgumentException("Name cannot be null or empty.");
}
Map headers = new HashMap<>();
if (state.getEtag() != null && !state.getEtag().trim().isEmpty()) {
diff --git a/sdk/src/main/java/io/dapr/client/DaprHttp.java b/sdk/src/main/java/io/dapr/client/DaprHttp.java
index 6156fece2..1c78474b5 100644
--- a/sdk/src/main/java/io/dapr/client/DaprHttp.java
+++ b/sdk/src/main/java/io/dapr/client/DaprHttp.java
@@ -8,18 +8,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import io.dapr.exceptions.DaprError;
import io.dapr.exceptions.DaprException;
import io.dapr.utils.Constants;
-import io.dapr.utils.ObjectSerializer;
-import okhttp3.MediaType;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.RequestBody;
-import okhttp3.Response;
+import okhttp3.*;
import reactor.core.publisher.Mono;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
-import java.util.*;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
+import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -89,7 +87,7 @@ class DaprHttp {
* @return Asynchronous text
*/
public Mono invokeAPI(String method, String urlString, Map headers) {
- return this.invokeAPI(method, urlString, (byte[])null, headers);
+ return this.invokeAPI(method, urlString, (String) null, headers);
}
/**
@@ -101,7 +99,12 @@ class DaprHttp {
* @return Asynchronous text
*/
public Mono invokeAPI(String method, String urlString, String content, Map headers) {
- return this.invokeAPI(method, urlString, content == null ? EMPTY_BYTES : content.getBytes(StandardCharsets.UTF_8), headers);
+ return this.invokeAPI(
+ method,
+ urlString,
+ content == null ? EMPTY_BYTES : content.getBytes(StandardCharsets.UTF_8),
+ headers)
+ .map(s -> new String(s, StandardCharsets.UTF_8));
}
/**
@@ -112,12 +115,12 @@ class DaprHttp {
* @param content payload to be posted.
* @return Asynchronous text
*/
- public Mono invokeAPI(String method, String urlString, byte[] content, Map headers) {
+ public Mono invokeAPI(String method, String urlString, byte[] content, Map headers) {
return Mono.fromFuture(CompletableFuture.supplyAsync(
() -> {
try {
String requestId = UUID.randomUUID().toString();
- RequestBody body = REQUEST_BODY_EMPTY_JSON;
+ RequestBody body;
String contentType = headers != null ? headers.get("content-type") : null;
MediaType mediaType = contentType == null ? MEDIA_TYPE_APPLICATION_JSON : MediaType.get(contentType);
@@ -148,16 +151,16 @@ class DaprHttp {
Request request = requestBuilder.build();
try (Response response = this.httpClient.newCall(request).execute()) {
+ byte[] responseBody = response.body().bytes();
if (!response.isSuccessful()) {
- DaprError error = parseDaprError(response.body().string());
+ DaprError error = this.parseDaprError(responseBody);
if ((error != null) && (error.getErrorCode() != null) && (error.getMessage() != null)) {
- throw new RuntimeException(new DaprException(error));
+ throw new DaprException(error);
}
- throw new RuntimeException("Unknown error.");
+ throw new IOException("Unknown error.");
}
- String result = response.body().string();
- return result == null ? "" : result;
+ return responseBody == null ? EMPTY_BYTES : responseBody;
}
} catch (Exception e) {
throw new RuntimeException(e);
@@ -171,16 +174,12 @@ class DaprHttp {
* @param json Response body from Dapr.
* @return DaprError or null if could not parse.
*/
- private static DaprError parseDaprError(String json) {
+ private static DaprError parseDaprError(byte[] json) throws IOException {
if (json == null) {
return null;
}
- try {
- return OBJECT_MAPPER.readValue(json, DaprError.class);
- } catch (IOException e) {
- throw new DaprException("500", "Unknown error: could not parse error json.");
- }
+ return OBJECT_MAPPER.readValue(json, DaprError.class);
}
}
diff --git a/sdk/src/main/java/io/dapr/runtime/Dapr.java b/sdk/src/main/java/io/dapr/runtime/Dapr.java
index 60de49198..102cb1bb3 100644
--- a/sdk/src/main/java/io/dapr/runtime/Dapr.java
+++ b/sdk/src/main/java/io/dapr/runtime/Dapr.java
@@ -6,7 +6,6 @@
package io.dapr.runtime;
import io.dapr.client.domain.CloudEventEnvelope;
-import io.dapr.exceptions.DaprException;
import io.dapr.utils.ObjectSerializer;
import reactor.core.publisher.Mono;
@@ -99,10 +98,14 @@ public final class Dapr implements DaprRuntime {
*/
@Override
public Mono handleInvocation(String name, byte[] payload, Map metadata) {
+ if (name == null) {
+ return Mono.error(new IllegalArgumentException("Handler's name cannot be null."));
+ }
+
Function> handler = this.handlers.get(name);
if (handler == null) {
- return Mono.error(new DaprException("INVALID_METHOD_OR_TOPIC", "Did not find handler for : " + (name == null ? "" : name)));
+ return Mono.error(new IllegalArgumentException("Did not find handler for : " + (name == null ? "" : name)));
}
try {
diff --git a/sdk/src/test/java/io/dapr/actors/client/DaprHttpAsyncClientIT.java b/sdk/src/test/java/io/dapr/client/DaprHttpAsyncClientIT.java
similarity index 92%
rename from sdk/src/test/java/io/dapr/actors/client/DaprHttpAsyncClientIT.java
rename to sdk/src/test/java/io/dapr/client/DaprHttpAsyncClientIT.java
index 1b93ebfa2..9b2ead69e 100644
--- a/sdk/src/test/java/io/dapr/actors/client/DaprHttpAsyncClientIT.java
+++ b/sdk/src/test/java/io/dapr/client/DaprHttpAsyncClientIT.java
@@ -2,10 +2,8 @@
* Copyright (c) Microsoft Corporation.
* Licensed under the MIT License.
*/
-package io.dapr.actors.client;
+package io.dapr.client;
-import io.dapr.client.DaprClient;
-import io.dapr.client.DaprClientBuilder;
import io.dapr.exceptions.DaprException;
import org.junit.Assert;
import org.junit.Test;
diff --git a/sdk/src/test/java/io/dapr/client/DaprHttpStub.java b/sdk/src/test/java/io/dapr/client/DaprHttpStub.java
index 0ede2041b..391c14ddf 100644
--- a/sdk/src/test/java/io/dapr/client/DaprHttpStub.java
+++ b/sdk/src/test/java/io/dapr/client/DaprHttpStub.java
@@ -42,7 +42,7 @@ public class DaprHttpStub extends DaprHttp {
* {@inheritDoc}
*/
@Override
- public Mono invokeAPI(String method, String urlString, byte[] content, Map headers) {
+ public Mono invokeAPI(String method, String urlString, byte[] content, Map headers) {
return Mono.empty();
}
}
diff --git a/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java b/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java
index 2ae8386cc..5c4e6c5d2 100644
--- a/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java
+++ b/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java
@@ -204,8 +204,7 @@ public class DaprRuntimeTest {
this.daprRuntime.handleInvocation(
METHOD_NAME,
message.data,
- message.metadata)
- .map(r -> new String(r, StandardCharsets.UTF_8)));
+ message.metadata));
Mono response = client.invokeService(Verb.POST, APP_ID, METHOD_NAME, message.data, message.metadata);
Assert.assertEquals(