Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,27 @@ public class Configuration {
private final String name;
private final TracingConfigurationSettings tracing;
private final AppHttpPipeline appHttpPipeline;
private final HttpPipeline httpPipeline;

// @TODO: add secrets https://github.com/dapr/java-sdk/issues/1280
// @TODO: add metrics https://github.com/dapr/java-sdk/issues/1281
// @TODO: add logging https://github.com/dapr/java-sdk/issues/1282
// @TODO: add middleware httpPipeline https://github.com/dapr/java-sdk/issues/1283
// @TODO: add nameResolution https://github.com/dapr/java-sdk/issues/1284
// @TODO: add disallow components https://github.com/dapr/java-sdk/issues/1285
// @TODO: add mtls https://github.com/dapr/java-sdk/issues/1286

/**
* Creates a new configuration.
*
* @param name Configuration name.
* @param tracing TracingConfigParameters tracing configuration
* parameters.
* @param appHttpPipeline AppHttpPipeline middleware configuration.
*/
public Configuration(String name, TracingConfigurationSettings tracing,
AppHttpPipeline appHttpPipeline) {
this(name, tracing, appHttpPipeline, null);
}

/**
* Creates a new configuration.
Expand All @@ -36,11 +49,15 @@ public class Configuration {
* @param tracing TracingConfigParameters tracing configuration
* parameters.
* @param appHttpPipeline AppHttpPipeline middleware configuration.
* @param httpPipeline HttpPipeline middleware configuration.
*/
public Configuration(String name, TracingConfigurationSettings tracing, AppHttpPipeline appHttpPipeline) {
public Configuration(String name, TracingConfigurationSettings tracing,
AppHttpPipeline appHttpPipeline,
HttpPipeline httpPipeline) {
this.name = name;
this.tracing = tracing;
this.appHttpPipeline = appHttpPipeline;
this.httpPipeline = httpPipeline;
}

public String getName() {
Expand All @@ -54,4 +71,8 @@ public TracingConfigurationSettings getTracing() {
public AppHttpPipeline getAppHttpPipeline() {
return appHttpPipeline;
}

public HttpPipeline getHttpPipeline() {
return httpPipeline;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright 2025 The Dapr Authors
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
limitations under the License.
*/

package io.dapr.testcontainers;

import java.util.Collections;
import java.util.List;

public class HttpPipeline implements ConfigurationSettings {
private List<ListEntry> handlers;

/**
* Creates an HttpPipeline.
*
* @param handlers List of handlers for the HttpPipeline
*/
public HttpPipeline(List<ListEntry> handlers) {
if (handlers != null) {
this.handlers = Collections.unmodifiableList(handlers);
}
}

public List<ListEntry> getHandlers() {
return handlers;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import io.dapr.testcontainers.AppHttpPipeline;
import io.dapr.testcontainers.Configuration;
import io.dapr.testcontainers.HttpPipeline;
import io.dapr.testcontainers.ListEntry;
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
import io.dapr.testcontainers.TracingConfigurationSettings;
Expand Down Expand Up @@ -77,6 +78,16 @@ public String convert(Configuration configuration) {

}

HttpPipeline httpPipeline = configuration.getHttpPipeline();
if (httpPipeline != null) {

Map<String, Object> httpPipelineMap = new LinkedHashMap<>();
List<ListEntry> handlers = httpPipeline.getHandlers();
httpPipelineMap.put("handlers", handlers);
configurationSpec.put("httpPipeline", httpPipelineMap);

}

AppHttpPipeline appHttpPipeline = configuration.getAppHttpPipeline();
if (appHttpPipeline != null) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import io.dapr.testcontainers.AppHttpPipeline;
import io.dapr.testcontainers.Configuration;
import io.dapr.testcontainers.DaprContainer;
import io.dapr.testcontainers.HttpPipeline;
import io.dapr.testcontainers.ListEntry;
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
import io.dapr.testcontainers.TracingConfigurationSettings;
Expand Down Expand Up @@ -48,15 +49,21 @@ public void testConfigurationToYaml() {
);


List<ListEntry> handlers = new ArrayList<>();
handlers.add(new ListEntry("alias", "middleware.http.routeralias"));
List<ListEntry> appHttpHandlers = new ArrayList<>();
appHttpHandlers.add(new ListEntry("alias", "middleware.http.routeralias"));

AppHttpPipeline appHttpPipeline = new AppHttpPipeline(handlers);
AppHttpPipeline appHttpPipeline = new AppHttpPipeline(appHttpHandlers);

List<ListEntry> httpHandlers = new ArrayList<>();

//Notice that this needs to be different objects, if not Snake YAML will add a reference to the object
HttpPipeline httpPipeline = new HttpPipeline(httpHandlers);
httpHandlers.add(new ListEntry("alias", "middleware.http.routeralias"));

DaprContainer dapr = new DaprContainer(DAPR_RUNTIME_IMAGE_TAG)
.withAppName("dapr-app")
.withAppPort(8081)
.withConfiguration(new Configuration("my-config", tracing, appHttpPipeline))
.withConfiguration(new Configuration("my-config", tracing, appHttpPipeline, httpPipeline))
.withAppChannelAddress("host.testcontainers.internal");

Configuration configuration = dapr.getConfiguration();
Expand All @@ -76,6 +83,10 @@ public void testConfigurationToYaml() {
+ " endpointAddress: localhost:4317\n"
+ " isSecure: false\n"
+ " protocol: grpc\n"
+ " httpPipeline:\n"
+ " handlers:\n"
+ " - name: alias\n"
+ " type: middleware.http.routeralias\n"
+ " appHttpPipeline:\n"
+ " handlers:\n"
+ " - name: alias\n"
Expand Down
Loading