From 9ecf2243ec7ab4615284e2357c02b46474e0657a Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Thu, 19 Feb 2026 09:47:53 +0100 Subject: [PATCH 1/4] chore: Deprecate invoke methods Signed-off-by: Javier Aliaga --- .../java/io/dapr/client/AbstractDaprClient.java | 17 +++++++++++++++++ .../java/io/dapr/client/DaprClientImpl.java | 3 +++ 2 files changed, 20 insertions(+) diff --git a/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java b/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java index c9c4bf8ca4..9d7aea4dac 100644 --- a/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java +++ b/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java @@ -116,6 +116,7 @@ public Mono publishEvent(String pubsubName, String topicName, Object data, * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, @@ -136,6 +137,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, @@ -150,6 +152,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, HttpExtension httpExtension, Map metadata, TypeRef type) { return this.invokeMethod(appId, methodName, null, httpExtension, metadata, type); @@ -159,6 +162,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, HttpExtension httpExtension, Map metadata, Class clazz) { return this.invokeMethod(appId, methodName, null, httpExtension, metadata, TypeRef.get(clazz)); @@ -168,6 +172,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension, TypeRef type) { return this.invokeMethod(appId, methodName, request, httpExtension, null, type); @@ -177,6 +182,7 @@ public Mono invokeMethod(String appId, String methodName, Object request, * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension, Class clazz) { return this.invokeMethod(appId, methodName, request, httpExtension, null, TypeRef.get(clazz)); @@ -186,6 +192,7 @@ public Mono invokeMethod(String appId, String methodName, Object request, * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension) { return this.invokeMethod(appId, methodName, request, httpExtension, null, TypeRef.BYTE_ARRAY).then(); } @@ -194,6 +201,7 @@ public Mono invokeMethod(String appId, String methodName, Object request, * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, Object request, HttpExtension httpExtension, Map metadata) { return this.invokeMethod(appId, methodName, request, httpExtension, metadata, TypeRef.BYTE_ARRAY).then(); @@ -203,6 +211,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, HttpExtension httpExtension, Map metadata) { return this.invokeMethod(appId, methodName, null, httpExtension, metadata, TypeRef.BYTE_ARRAY).then(); @@ -212,6 +221,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeMethod( String appId, String methodName, byte[] request, HttpExtension httpExtension, Map metadata) { return this.invokeMethod(appId, methodName, request, httpExtension, metadata, TypeRef.BYTE_ARRAY); @@ -221,6 +231,7 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding(String bindingName, String operation, Object data) { return this.invokeBinding(bindingName, operation, data, null, TypeRef.BYTE_ARRAY).then(); } @@ -229,6 +240,7 @@ public Mono invokeBinding(String bindingName, String operation, Object dat * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding(String bindingName, String operation, byte[] data, Map metadata) { return this.invokeBinding(bindingName, operation, data, metadata, TypeRef.BYTE_ARRAY); } @@ -237,6 +249,7 @@ public Mono invokeBinding(String bindingName, String operation, byte[] d * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding(String bindingName, String operation, Object data, TypeRef type) { return this.invokeBinding(bindingName, operation, data, null, type); } @@ -245,6 +258,7 @@ public Mono invokeBinding(String bindingName, String operation, Object da * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding(String bindingName, String operation, Object data, Class clazz) { return this.invokeBinding(bindingName, operation, data, null, TypeRef.get(clazz)); } @@ -253,6 +267,7 @@ public Mono invokeBinding(String bindingName, String operation, Object da * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding( String bindingName, String operation, Object data, Map metadata, TypeRef type) { InvokeBindingRequest request = new InvokeBindingRequest(bindingName, operation) @@ -266,6 +281,7 @@ public Mono invokeBinding( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding( String bindingName, String operation, Object data, Map metadata, Class clazz) { return this.invokeBinding(bindingName, operation, data, metadata, TypeRef.get(clazz)); @@ -275,6 +291,7 @@ public Mono invokeBinding( * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding(InvokeBindingRequest request) { return this.invokeBinding(request, TypeRef.VOID); } diff --git a/sdk/src/main/java/io/dapr/client/DaprClientImpl.java b/sdk/src/main/java/io/dapr/client/DaprClientImpl.java index 60c7568377..9be39b6161 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClientImpl.java +++ b/sdk/src/main/java/io/dapr/client/DaprClientImpl.java @@ -128,6 +128,7 @@ import reactor.util.retry.Retry; import javax.annotation.Nonnull; + import java.io.IOException; import java.time.Duration; import java.time.Instant; @@ -606,6 +607,7 @@ private Subscription buildSubscription( } @Override + @Deprecated public Mono invokeMethod(InvokeMethodRequest invokeMethodRequest, TypeRef type) { try { final String appId = invokeMethodRequest.getAppId(); @@ -675,6 +677,7 @@ private Mono getMonoForHttpResponse(TypeRef type, DaprHttp.Response r) * {@inheritDoc} */ @Override + @Deprecated public Mono invokeBinding(InvokeBindingRequest request, TypeRef type) { try { final String name = request.getName(); From f259d8aa2a0ffbffb277cb0756c2f1ad5a49fd50 Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Thu, 19 Feb 2026 09:47:53 +0100 Subject: [PATCH 2/4] chore: Deprecate invoke methods Signed-off-by: Javier Aliaga --- .../main/java/io/dapr/client/DaprClient.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/sdk/src/main/java/io/dapr/client/DaprClient.java b/sdk/src/main/java/io/dapr/client/DaprClient.java index ddf89f587f..6198ad835c 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClient.java +++ b/sdk/src/main/java/io/dapr/client/DaprClient.java @@ -268,7 +268,10 @@ Mono invokeMethod(String appId, String methodName, HttpExtension httpExte * HTTP, {@link HttpExtension#NONE} otherwise. * @param metadata Metadata (in GRPC) or headers (in HTTP) to be sent in request. * @return A Mono Plan of type Void. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension, Map metadata); @@ -281,7 +284,10 @@ Mono invokeMethod(String appId, String methodName, Object request, HttpExt * @param httpExtension Additional fields that are needed if the receiving app is listening on * HTTP, {@link HttpExtension#NONE} otherwise. * @return A Mono Plan of type Void. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension); /** @@ -293,7 +299,10 @@ Mono invokeMethod(String appId, String methodName, Object request, HttpExt * HTTP, {@link HttpExtension#NONE} otherwise. * @param metadata Metadata (in GRPC) or headers (in HTTP) to be sent in request. * @return A Mono Plan of type Void. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, HttpExtension httpExtension, Map metadata); /** @@ -306,7 +315,10 @@ Mono invokeMethod(String appId, String methodName, Object request, HttpExt * HTTP, {@link HttpExtension#NONE} otherwise. * @param metadata Metadata (in GRPC) or headers (in HTTP) to be sent in request. * @return A Mono Plan of type byte[]. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, byte[] request, HttpExtension httpExtension, Map metadata); @@ -317,7 +329,10 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param type The Type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(InvokeMethodRequest invokeMethodRequest, TypeRef type); /** @@ -327,7 +342,10 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param operation The operation to be performed by the binding request processor. * @param data The data to be processed, use byte[] to skip serialization. * @return an empty Mono. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(String bindingName, String operation, Object data); /** @@ -338,7 +356,10 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param data The data to be processed, skipping serialization. * @param metadata The metadata map. * @return a Mono plan of type byte[]. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(String bindingName, String operation, byte[] data, Map metadata); /** @@ -350,7 +371,10 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param type The type being returned. * @param The type of the return * @return a Mono plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, TypeRef type); /** @@ -362,7 +386,10 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param clazz The type being returned. * @param The type of the return * @return a Mono plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, Class clazz); /** @@ -375,7 +402,10 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param type The type being returned. * @param The type of the return * @return a Mono plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, Map metadata, TypeRef type); @@ -389,7 +419,10 @@ Mono invokeBinding(String bindingName, String operation, Object data, Map * @param clazz The type being returned. * @param The type of the return * @return a Mono plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, Map metadata, Class clazz); @@ -398,7 +431,10 @@ Mono invokeBinding(String bindingName, String operation, Object data, Map * * @param request The binding invocation request. * @return a Mono with void. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(InvokeBindingRequest request); /** @@ -408,7 +444,10 @@ Mono invokeBinding(String bindingName, String operation, Object data, Map * @param type The type being returned. * @param The type of the return * @return a Mono plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ + @Deprecated Mono invokeBinding(InvokeBindingRequest request, TypeRef type); /** From 1feb5cffe737229a28ff2eb702733b8bca7b2e07 Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Thu, 19 Feb 2026 09:47:53 +0100 Subject: [PATCH 3/4] chore: Deprecate invoke methods Signed-off-by: Javier Aliaga --- .../io/dapr/client/AbstractDaprClient.java | 7 ------ .../main/java/io/dapr/client/DaprClient.java | 24 ------------------- .../java/io/dapr/client/DaprClientImpl.java | 1 - 3 files changed, 32 deletions(-) diff --git a/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java b/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java index 9d7aea4dac..52e1fb069d 100644 --- a/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java +++ b/sdk/src/main/java/io/dapr/client/AbstractDaprClient.java @@ -231,7 +231,6 @@ public Mono invokeMethod( * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding(String bindingName, String operation, Object data) { return this.invokeBinding(bindingName, operation, data, null, TypeRef.BYTE_ARRAY).then(); } @@ -240,7 +239,6 @@ public Mono invokeBinding(String bindingName, String operation, Object dat * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding(String bindingName, String operation, byte[] data, Map metadata) { return this.invokeBinding(bindingName, operation, data, metadata, TypeRef.BYTE_ARRAY); } @@ -249,7 +247,6 @@ public Mono invokeBinding(String bindingName, String operation, byte[] d * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding(String bindingName, String operation, Object data, TypeRef type) { return this.invokeBinding(bindingName, operation, data, null, type); } @@ -258,7 +255,6 @@ public Mono invokeBinding(String bindingName, String operation, Object da * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding(String bindingName, String operation, Object data, Class clazz) { return this.invokeBinding(bindingName, operation, data, null, TypeRef.get(clazz)); } @@ -267,7 +263,6 @@ public Mono invokeBinding(String bindingName, String operation, Object da * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding( String bindingName, String operation, Object data, Map metadata, TypeRef type) { InvokeBindingRequest request = new InvokeBindingRequest(bindingName, operation) @@ -281,7 +276,6 @@ public Mono invokeBinding( * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding( String bindingName, String operation, Object data, Map metadata, Class clazz) { return this.invokeBinding(bindingName, operation, data, metadata, TypeRef.get(clazz)); @@ -291,7 +285,6 @@ public Mono invokeBinding( * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding(InvokeBindingRequest request) { return this.invokeBinding(request, TypeRef.VOID); } diff --git a/sdk/src/main/java/io/dapr/client/DaprClient.java b/sdk/src/main/java/io/dapr/client/DaprClient.java index 6198ad835c..f6a315714f 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClient.java +++ b/sdk/src/main/java/io/dapr/client/DaprClient.java @@ -342,10 +342,7 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param operation The operation to be performed by the binding request processor. * @param data The data to be processed, use byte[] to skip serialization. * @return an empty Mono. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(String bindingName, String operation, Object data); /** @@ -356,10 +353,7 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param data The data to be processed, skipping serialization. * @param metadata The metadata map. * @return a Mono plan of type byte[]. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(String bindingName, String operation, byte[] data, Map metadata); /** @@ -371,10 +365,7 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param type The type being returned. * @param The type of the return * @return a Mono plan of type T. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, TypeRef type); /** @@ -386,10 +377,7 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param clazz The type being returned. * @param The type of the return * @return a Mono plan of type T. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, Class clazz); /** @@ -402,10 +390,7 @@ Mono invokeMethod(String appId, String methodName, byte[] request, HttpE * @param type The type being returned. * @param The type of the return * @return a Mono plan of type T. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, Map metadata, TypeRef type); @@ -419,10 +404,7 @@ Mono invokeBinding(String bindingName, String operation, Object data, Map * @param clazz The type being returned. * @param The type of the return * @return a Mono plan of type T. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(String bindingName, String operation, Object data, Map metadata, Class clazz); @@ -431,10 +413,7 @@ Mono invokeBinding(String bindingName, String operation, Object data, Map * * @param request The binding invocation request. * @return a Mono with void. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(InvokeBindingRequest request); /** @@ -444,10 +423,7 @@ Mono invokeBinding(String bindingName, String operation, Object data, Map * @param type The type being returned. * @param The type of the return * @return a Mono plan of type T. - * - * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for binding invocation instead. */ - @Deprecated Mono invokeBinding(InvokeBindingRequest request, TypeRef type); /** diff --git a/sdk/src/main/java/io/dapr/client/DaprClientImpl.java b/sdk/src/main/java/io/dapr/client/DaprClientImpl.java index 9be39b6161..e5c95ec0d7 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClientImpl.java +++ b/sdk/src/main/java/io/dapr/client/DaprClientImpl.java @@ -677,7 +677,6 @@ private Mono getMonoForHttpResponse(TypeRef type, DaprHttp.Response r) * {@inheritDoc} */ @Override - @Deprecated public Mono invokeBinding(InvokeBindingRequest request, TypeRef type) { try { final String name = request.getName(); From 7e298faee17d994f00551bce238022f23e5416bd Mon Sep 17 00:00:00 2001 From: Javier Aliaga Date: Tue, 10 Mar 2026 12:30:21 +0100 Subject: [PATCH 4/4] chore: Change examples Signed-off-by: Javier Aliaga --- .../dapr/examples/tracing/InvokeClient.java | 78 ++++++++++++------- .../TracingDemoMiddleServiceController.java | 60 +++++++++----- .../it/methodinvoke/http/MethodInvokeIT.java | 1 + .../io/dapr/it/tracing/grpc/TracingIT.java | 1 + .../io/dapr/it/tracing/http/TracingIT.java | 1 + .../main/java/io/dapr/client/DaprClient.java | 18 +++++ .../io/dapr/client/DaprClientHttpTest.java | 1 + .../java/io/dapr/runtime/DaprRuntimeTest.java | 1 + 8 files changed, 115 insertions(+), 46 deletions(-) diff --git a/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java b/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java index 62a9768746..5bbd7b4bc9 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java +++ b/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java @@ -13,19 +13,21 @@ package io.dapr.examples.tracing; -import io.dapr.client.DaprClient; -import io.dapr.client.DaprClientBuilder; -import io.dapr.client.domain.HttpExtension; -import io.dapr.client.domain.InvokeMethodRequest; +import io.dapr.config.Properties; import io.dapr.examples.OpenTelemetryConfig; -import io.dapr.utils.TypeRef; +import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; +import io.opentelemetry.context.propagation.TextMapSetter; import io.opentelemetry.sdk.OpenTelemetrySdk; -import static io.dapr.examples.OpenTelemetryConfig.getReactorContext; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; /** * 1. Build and install jars: @@ -52,30 +54,50 @@ public static void main(String[] args) throws Exception { Tracer tracer = openTelemetrySdk.getTracer(InvokeClient.class.getCanonicalName()); Span span = tracer.spanBuilder("Example's Main").setSpanKind(SpanKind.CLIENT).startSpan(); - try (DaprClient client = (new DaprClientBuilder()).build()) { - for (String message : args) { - try (Scope scope = span.makeCurrent()) { - InvokeMethodRequest request = new InvokeMethodRequest(SERVICE_APP_ID, "proxy_echo") - .setBody(message) - .setHttpExtension(HttpExtension.POST); - client.invokeMethod(request, TypeRef.get(byte[].class)) - .map(r -> { - System.out.println(new String(r)); - return r; - }) - .flatMap(r -> { - InvokeMethodRequest sleepRequest = new InvokeMethodRequest(SERVICE_APP_ID, "proxy_sleep") - .setHttpExtension(HttpExtension.POST); - return client.invokeMethod(sleepRequest, TypeRef.get(Void.class)); - }).contextWrite(getReactorContext()).block(); - } + int port = Properties.HTTP_PORT.get(); + String baseUrl = "http://localhost:" + port + "/v1.0/invoke/" + SERVICE_APP_ID + "/method/"; + + HttpClient httpClient = HttpClient.newHttpClient(); + + for (String message : args) { + try (Scope scope = span.makeCurrent()) { + // Call proxy_echo + HttpRequest.Builder echoBuilder = HttpRequest.newBuilder() + .uri(URI.create(baseUrl + "proxy_echo")) + .POST(HttpRequest.BodyPublishers.ofString(message)); + injectTraceContext(echoBuilder); + addDaprApiToken(echoBuilder); + HttpResponse echoResponse = + httpClient.send(echoBuilder.build(), HttpResponse.BodyHandlers.ofByteArray()); + System.out.println(new String(echoResponse.body())); + + // Call proxy_sleep + HttpRequest.Builder sleepBuilder = HttpRequest.newBuilder() + .uri(URI.create(baseUrl + "proxy_sleep")) + .POST(HttpRequest.BodyPublishers.noBody()); + injectTraceContext(sleepBuilder); + addDaprApiToken(sleepBuilder); + httpClient.send(sleepBuilder.build(), HttpResponse.BodyHandlers.discarding()); } + } + + span.end(); + openTelemetrySdk.getSdkTracerProvider().shutdown(); + Validation.validate(); + System.out.println("Done"); + System.exit(0); + } + + private static void injectTraceContext(HttpRequest.Builder builder) { + TextMapSetter setter = HttpRequest.Builder::header; + GlobalOpenTelemetry.getPropagators().getTextMapPropagator() + .inject(Context.current(), builder, setter); + } - span.end(); - openTelemetrySdk.getSdkTracerProvider().shutdown(); - Validation.validate(); - System.out.println("Done"); - System.exit(0); + private static void addDaprApiToken(HttpRequest.Builder builder) { + String token = Properties.API_TOKEN.get(); + if (token != null) { + builder.header("dapr-api-token", token); } } } diff --git a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java index 323d4c0232..134deda33c 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java +++ b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java @@ -13,20 +13,21 @@ package io.dapr.examples.tracing; -import io.dapr.client.DaprClient; -import io.dapr.client.domain.HttpExtension; -import io.dapr.client.domain.InvokeMethodRequest; +import io.dapr.config.Properties; import io.dapr.examples.OpenTelemetryInterceptor; -import io.dapr.utils.TypeRef; +import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.context.Context; -import org.springframework.beans.factory.annotation.Autowired; +import io.opentelemetry.context.propagation.TextMapSetter; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; -import static io.dapr.examples.OpenTelemetryConfig.getReactorContext; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; /** * SpringBoot Controller to handle service invocation. @@ -38,11 +39,7 @@ public class TracingDemoMiddleServiceController { private static final String INVOKE_APP_ID = "tracingdemo"; - /** - * Dapr client. - */ - @Autowired - private DaprClient client; + private static final HttpClient httpClient = HttpClient.newHttpClient(); /** * Handles the 'echo' method invocation, by proxying a call into another service. @@ -55,10 +52,14 @@ public class TracingDemoMiddleServiceController { public Mono echo( @RequestAttribute(name = "opentelemetry-context") Context context, @RequestBody(required = false) String body) { - InvokeMethodRequest request = new InvokeMethodRequest(INVOKE_APP_ID, "echo") - .setBody(body) - .setHttpExtension(HttpExtension.POST); - return client.invokeMethod(request, TypeRef.get(byte[].class)).contextWrite(getReactorContext(context)); + return Mono.fromFuture(() -> { + HttpRequest.Builder builder = HttpRequest.newBuilder() + .uri(URI.create(buildInvokeUrl("echo"))) + .POST(HttpRequest.BodyPublishers.ofString(body != null ? body : "")); + injectTraceContext(builder, context); + addDaprApiToken(builder); + return httpClient.sendAsync(builder.build(), HttpResponse.BodyHandlers.ofByteArray()); + }).map(HttpResponse::body); } /** @@ -69,9 +70,32 @@ public Mono echo( */ @PostMapping(path = "/proxy_sleep") public Mono sleep(@RequestAttribute(name = "opentelemetry-context") Context context) { - InvokeMethodRequest request = new InvokeMethodRequest(INVOKE_APP_ID, "sleep") - .setHttpExtension(HttpExtension.POST); - return client.invokeMethod(request, TypeRef.get(byte[].class)).contextWrite(getReactorContext(context)).then(); + return Mono.fromFuture(() -> { + HttpRequest.Builder builder = HttpRequest.newBuilder() + .uri(URI.create(buildInvokeUrl("sleep"))) + .POST(HttpRequest.BodyPublishers.noBody()); + injectTraceContext(builder, context); + addDaprApiToken(builder); + return httpClient.sendAsync(builder.build(), HttpResponse.BodyHandlers.discarding()); + }).then(); + } + + private static String buildInvokeUrl(String method) { + int port = Properties.HTTP_PORT.get(); + return "http://localhost:" + port + "/v1.0/invoke/" + INVOKE_APP_ID + "/method/" + method; + } + + private static void injectTraceContext(HttpRequest.Builder builder, Context context) { + TextMapSetter setter = HttpRequest.Builder::header; + GlobalOpenTelemetry.getPropagators().getTextMapPropagator() + .inject(context, builder, setter); + } + + private static void addDaprApiToken(HttpRequest.Builder builder) { + String token = Properties.API_TOKEN.get(); + if (token != null) { + builder.header("dapr-api-token", token); + } } } diff --git a/sdk-tests/src/test/java/io/dapr/it/methodinvoke/http/MethodInvokeIT.java b/sdk-tests/src/test/java/io/dapr/it/methodinvoke/http/MethodInvokeIT.java index 9d9ac02f8b..3c1ee01b51 100644 --- a/sdk-tests/src/test/java/io/dapr/it/methodinvoke/http/MethodInvokeIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/methodinvoke/http/MethodInvokeIT.java @@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +@SuppressWarnings("deprecation") public class MethodInvokeIT extends BaseIT { //Number of messages to be sent: 10 diff --git a/sdk-tests/src/test/java/io/dapr/it/tracing/grpc/TracingIT.java b/sdk-tests/src/test/java/io/dapr/it/tracing/grpc/TracingIT.java index 2563473981..43f982eed4 100644 --- a/sdk-tests/src/test/java/io/dapr/it/tracing/grpc/TracingIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/tracing/grpc/TracingIT.java @@ -21,6 +21,7 @@ import static io.dapr.it.tracing.OpenTelemetry.createOpenTelemetry; import static io.dapr.it.tracing.OpenTelemetry.getReactorContext; +@SuppressWarnings("deprecation") public class TracingIT extends BaseIT { /** diff --git a/sdk-tests/src/test/java/io/dapr/it/tracing/http/TracingIT.java b/sdk-tests/src/test/java/io/dapr/it/tracing/http/TracingIT.java index 3285d2ca84..b133ce7213 100644 --- a/sdk-tests/src/test/java/io/dapr/it/tracing/http/TracingIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/tracing/http/TracingIT.java @@ -19,6 +19,7 @@ import static io.dapr.it.tracing.OpenTelemetry.createOpenTelemetry; import static io.dapr.it.tracing.OpenTelemetry.getReactorContext; +@SuppressWarnings("deprecation") public class TracingIT extends BaseIT { /** diff --git a/sdk/src/main/java/io/dapr/client/DaprClient.java b/sdk/src/main/java/io/dapr/client/DaprClient.java index f6a315714f..00acb18971 100644 --- a/sdk/src/main/java/io/dapr/client/DaprClient.java +++ b/sdk/src/main/java/io/dapr/client/DaprClient.java @@ -178,7 +178,10 @@ Mono> publishEvents(String pubsubName, String topicNa * @param type The Type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, Object data, HttpExtension httpExtension, Map metadata, TypeRef type); @@ -194,7 +197,10 @@ Mono invokeMethod(String appId, String methodName, Object data, HttpExten * @param clazz The type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension, Map metadata, Class clazz); @@ -209,7 +215,10 @@ Mono invokeMethod(String appId, String methodName, Object request, HttpEx * @param type The Type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension, TypeRef type); @@ -224,7 +233,10 @@ Mono invokeMethod(String appId, String methodName, Object request, HttpEx * @param clazz The type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, Object request, HttpExtension httpExtension, Class clazz); @@ -239,7 +251,10 @@ Mono invokeMethod(String appId, String methodName, Object request, HttpEx * @param type The Type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, HttpExtension httpExtension, Map metadata, TypeRef type); @@ -254,7 +269,10 @@ Mono invokeMethod(String appId, String methodName, HttpExtension httpExte * @param clazz The type needed as return for the call. * @param The Type of the return, use byte[] to skip serialization. * @return A Mono Plan of type T. + * + * @deprecated It is recommended to use language-native HTTP clients or gRPC clients for service invocation instead. */ + @Deprecated Mono invokeMethod(String appId, String methodName, HttpExtension httpExtension, Map metadata, Class clazz); diff --git a/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java b/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java index ca3c1c5341..af6791d7e1 100644 --- a/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java +++ b/sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java @@ -54,6 +54,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +@SuppressWarnings("deprecation") public class DaprClientHttpTest { private final String EXPECTED_RESULT = diff --git a/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java b/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java index 2343ca0591..7e2faafd09 100644 --- a/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java +++ b/sdk/src/test/java/io/dapr/runtime/DaprRuntimeTest.java @@ -44,6 +44,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +@SuppressWarnings("deprecation") public class DaprRuntimeTest { protected static final JsonFactory JSON_FACTORY = new JsonFactory();