Skip to content

Commit e5e51df

Browse files
authored
Merge branch 'master' into users/svegiraju/conversation-api-2
2 parents 0d9e446 + de2dc63 commit e5e51df

File tree

7 files changed

+252
-77
lines changed

7 files changed

+252
-77
lines changed

dapr-spring/dapr-spring-boot-autoconfigure/src/main/java/io/dapr/spring/boot/autoconfigure/client/DaprClientAutoConfiguration.java

+59-19
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,31 @@ DaprConnectionDetails daprConnectionDetails(DaprClientProperties properties) {
4343
@Bean
4444
@ConditionalOnMissingBean
4545
DaprClientBuilder daprClientBuilder(DaprConnectionDetails daprConnectionDetails) {
46-
DaprClientBuilder builder = new DaprClientBuilder();
47-
if (daprConnectionDetails.httpEndpoint() != null) {
48-
builder.withPropertyOverride(Properties.HTTP_ENDPOINT, daprConnectionDetails.httpEndpoint());
46+
DaprClientBuilder builder = createDaprClientBuilder();
47+
String httpEndpoint = daprConnectionDetails.getHttpEndpoint();
48+
49+
if (httpEndpoint != null) {
50+
builder.withPropertyOverride(Properties.HTTP_ENDPOINT, httpEndpoint);
4951
}
50-
if (daprConnectionDetails.grpcEndpoint() != null) {
51-
builder.withPropertyOverride(Properties.GRPC_ENDPOINT, daprConnectionDetails.grpcEndpoint());
52+
53+
String grpcEndpoint = daprConnectionDetails.getGrpcEndpoint();
54+
55+
if (grpcEndpoint != null) {
56+
builder.withPropertyOverride(Properties.GRPC_ENDPOINT, grpcEndpoint);
5257
}
53-
if (daprConnectionDetails.httpPort() != null) {
54-
builder.withPropertyOverride(Properties.HTTP_PORT, String.valueOf(daprConnectionDetails.httpPort()));
58+
59+
Integer httpPort = daprConnectionDetails.getHttpPort();
60+
61+
if (httpPort != null) {
62+
builder.withPropertyOverride(Properties.HTTP_PORT, String.valueOf(httpPort));
5563
}
56-
if (daprConnectionDetails.grpcPort() != null) {
57-
builder.withPropertyOverride(Properties.GRPC_PORT, String.valueOf(daprConnectionDetails.grpcPort()));
64+
65+
Integer grpcPort = daprConnectionDetails.getGrpcPort();
66+
67+
if (grpcPort != null) {
68+
builder.withPropertyOverride(Properties.GRPC_PORT, String.valueOf(grpcPort));
5869
}
70+
5971
return builder;
6072
}
6173

@@ -90,22 +102,50 @@ ActorRuntime daprActorRuntime(DaprConnectionDetails daprConnectionDetails) {
90102
@ConditionalOnMissingBean
91103
WorkflowRuntimeBuilder daprWorkflowRuntimeBuilder(DaprConnectionDetails daprConnectionDetails) {
92104
Properties properties = createPropertiesFromConnectionDetails(daprConnectionDetails);
105+
93106
return new WorkflowRuntimeBuilder(properties);
94107
}
95108

96-
private Properties createPropertiesFromConnectionDetails(DaprConnectionDetails daprConnectionDetails) {
97-
final Map<String, String> propertyOverrides = new HashMap<>();
98-
propertyOverrides.put(Properties.HTTP_ENDPOINT.getName(), daprConnectionDetails.httpEndpoint());
99-
if (daprConnectionDetails.httpPort() != null) {
100-
propertyOverrides.put(Properties.HTTP_PORT.getName(), String.valueOf(daprConnectionDetails.httpPort()));
109+
/**
110+
* We use this method in tests to override the default DaprClientBuilder.
111+
*/
112+
protected DaprClientBuilder createDaprClientBuilder() {
113+
return new DaprClientBuilder();
114+
}
115+
116+
/**
117+
* Creates a Properties object from the DaprConnectionDetails.
118+
*
119+
* @param daprConnectionDetails the DaprConnectionDetails
120+
* @return the Properties object
121+
*/
122+
protected Properties createPropertiesFromConnectionDetails(DaprConnectionDetails daprConnectionDetails) {
123+
Map<String, String> propertyOverrides = new HashMap<>();
124+
String httpEndpoint = daprConnectionDetails.getHttpEndpoint();
125+
126+
if (httpEndpoint != null) {
127+
propertyOverrides.put(Properties.HTTP_ENDPOINT.getName(), httpEndpoint);
101128
}
102-
propertyOverrides.put(Properties.GRPC_ENDPOINT.getName(), daprConnectionDetails.grpcEndpoint());
103-
if (daprConnectionDetails.grpcPort() != null) {
104-
propertyOverrides.put(Properties.GRPC_PORT.getName(), String.valueOf(daprConnectionDetails.grpcPort()));
129+
130+
Integer httpPort = daprConnectionDetails.getHttpPort();
131+
132+
if (httpPort != null) {
133+
propertyOverrides.put(Properties.HTTP_PORT.getName(), String.valueOf(httpPort));
105134
}
106-
return new Properties(propertyOverrides);
107-
}
108135

136+
String grpcEndpoint = daprConnectionDetails.getGrpcEndpoint();
137+
138+
if (grpcEndpoint != null) {
139+
propertyOverrides.put(Properties.GRPC_ENDPOINT.getName(), grpcEndpoint);
140+
}
109141

142+
Integer grpcPort = daprConnectionDetails.getGrpcPort();
143+
144+
if (grpcPort != null) {
145+
propertyOverrides.put(Properties.GRPC_PORT.getName(), String.valueOf(grpcPort));
146+
}
147+
148+
return new Properties(propertyOverrides);
149+
}
110150

111151
}

dapr-spring/dapr-spring-boot-autoconfigure/src/main/java/io/dapr/spring/boot/autoconfigure/client/DaprConnectionDetails.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails;
1717

1818
public interface DaprConnectionDetails extends ConnectionDetails {
19-
String httpEndpoint();
19+
String getHttpEndpoint();
2020

21-
String grpcEndpoint();
21+
String getGrpcEndpoint();
2222

23-
Integer httpPort();
23+
Integer getHttpPort();
2424

25-
Integer grpcPort();
25+
Integer getGrpcPort();
2626
}

dapr-spring/dapr-spring-boot-autoconfigure/src/main/java/io/dapr/spring/boot/autoconfigure/client/PropertiesDaprConnectionDetails.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ public PropertiesDaprConnectionDetails(DaprClientProperties daprClientProperties
2222
}
2323

2424
@Override
25-
public String httpEndpoint() {
25+
public String getHttpEndpoint() {
2626
return this.daprClientProperties.getHttpEndpoint();
2727
}
2828

2929
@Override
30-
public String grpcEndpoint() {
30+
public String getGrpcEndpoint() {
3131
return this.daprClientProperties.getGrpcEndpoint();
3232
}
3333

3434
@Override
35-
public Integer httpPort() {
35+
public Integer getHttpPort() {
3636
return this.daprClientProperties.getHttpPort();
3737
}
3838

3939
@Override
40-
public Integer grpcPort() {
40+
public Integer getGrpcPort() {
4141
return this.daprClientProperties.getGrpcPort();
4242
}
4343
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
/*
2+
* Copyright 2024 The Dapr Authors
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
* Unless required by applicable law or agreed to in writing, software
8+
* distributed under the License is distributed on an "AS IS" BASIS,
9+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
* See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
14+
package io.dapr.spring.boot.autoconfigure.client;
15+
16+
import io.dapr.client.DaprClient;
17+
import io.dapr.client.DaprClientBuilder;
18+
import io.dapr.config.Properties;
19+
import org.junit.jupiter.api.BeforeEach;
20+
import org.junit.jupiter.api.DisplayName;
21+
import org.junit.jupiter.api.Test;
22+
import org.junit.jupiter.api.extension.ExtendWith;
23+
import org.mockito.Mock;
24+
import org.mockito.junit.jupiter.MockitoExtension;
25+
import org.springframework.boot.autoconfigure.AutoConfigurations;
26+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
27+
28+
import java.util.Map;
29+
30+
import static org.assertj.core.api.Assertions.assertThat;
31+
import static org.mockito.Mockito.verify;
32+
import static org.mockito.Mockito.when;
33+
34+
/**
35+
* Unit tests for {@link DaprClientAutoConfiguration}.
36+
*/
37+
@ExtendWith(MockitoExtension.class)
38+
class DaprClientAutoConfigurationTest {
39+
40+
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
41+
.withConfiguration(AutoConfigurations.of(DaprClientAutoConfiguration.class));
42+
43+
@Mock
44+
private DaprConnectionDetails connectionDetails;
45+
46+
@Mock
47+
private DaprClientBuilder builder;
48+
49+
private DaprClientAutoConfiguration configuration;
50+
51+
@Test
52+
void daprClientBuilder() {
53+
contextRunner.run(context -> assertThat(context).hasSingleBean(DaprClientBuilder.class));
54+
}
55+
56+
@Test
57+
void daprClient() {
58+
contextRunner.run(context -> assertThat(context).hasSingleBean(DaprClient.class));
59+
}
60+
61+
@BeforeEach
62+
void setUp() {
63+
configuration = new TestDaprClientAutoConfiguration(builder);
64+
}
65+
66+
@Test
67+
@DisplayName("Should override HTTP endpoint if it exists")
68+
void shouldOverrideHttpEndpointIfExists() {
69+
String httpEndpoint = "http://localhost:3500";
70+
71+
when(connectionDetails.getHttpEndpoint()).thenReturn(httpEndpoint);
72+
73+
configuration.daprClientBuilder(connectionDetails);
74+
75+
verify(builder).withPropertyOverride(Properties.HTTP_ENDPOINT, httpEndpoint);
76+
}
77+
78+
@Test
79+
@DisplayName("Should override GRPC endpoint if it exists")
80+
void shouldOverrideGrpcEndpointIfExists() {
81+
String grpcEndpoint = "grpc://localhost:5001";
82+
83+
when(connectionDetails.getGrpcEndpoint()).thenReturn(grpcEndpoint);
84+
85+
configuration.daprClientBuilder(connectionDetails);
86+
87+
verify(builder).withPropertyOverride(Properties.GRPC_ENDPOINT, grpcEndpoint);
88+
}
89+
90+
@Test
91+
@DisplayName("Should override HTTP port if it exists")
92+
void shouldOverrideHttpPortIfExists() {
93+
Integer httpPort = 3600;
94+
95+
when(connectionDetails.getHttpPort()).thenReturn(httpPort);
96+
97+
configuration.daprClientBuilder(connectionDetails);
98+
99+
verify(builder).withPropertyOverride(Properties.HTTP_PORT, String.valueOf(httpPort));
100+
}
101+
102+
@Test
103+
@DisplayName("Should override GRPC port if it exists")
104+
void shouldOverrideGrpcPortIfExists() {
105+
Integer grpcPort = 6001;
106+
107+
when(connectionDetails.getGrpcPort()).thenReturn(grpcPort);
108+
109+
configuration.daprClientBuilder(connectionDetails);
110+
111+
verify(builder).withPropertyOverride(Properties.GRPC_PORT, String.valueOf(grpcPort));
112+
}
113+
114+
@Test
115+
@DisplayName("Should override HTTP endpoint in properties if it exists")
116+
void shouldOverrideHttpEndpointInPropertiesIfExists() {
117+
String httpEndpoint = "http://localhost:3500";
118+
119+
when(connectionDetails.getHttpEndpoint()).thenReturn(httpEndpoint);
120+
121+
Properties reuslt = configuration.createPropertiesFromConnectionDetails(connectionDetails);
122+
123+
assertThat(reuslt.getValue(Properties.HTTP_ENDPOINT)).isEqualTo(httpEndpoint);
124+
}
125+
126+
@Test
127+
@DisplayName("Should override GRPC endpoint in properties if it exists")
128+
void shouldOverrideGrpcEndpointPropertiesIfExists() {
129+
String grpcEndpoint = "grpc://localhost:3500";
130+
131+
when(connectionDetails.getGrpcEndpoint()).thenReturn(grpcEndpoint);
132+
133+
Properties result = configuration.createPropertiesFromConnectionDetails(connectionDetails);
134+
135+
assertThat(result.getValue(Properties.GRPC_ENDPOINT)).isEqualTo(grpcEndpoint);
136+
}
137+
138+
@Test
139+
@DisplayName("Should override HTTP port in properties if it exists")
140+
void shouldOverrideHttpPortPropertiesIfExists() {
141+
Integer httpPort = 3600;
142+
143+
when(connectionDetails.getHttpPort()).thenReturn(httpPort);
144+
145+
Properties result = configuration.createPropertiesFromConnectionDetails(connectionDetails);
146+
147+
assertThat(result.getValue(Properties.HTTP_PORT)).isEqualTo(httpPort);
148+
}
149+
150+
@Test
151+
@DisplayName("Should override GRPC port in properties if it exists")
152+
void shouldOverrideGrpcPortPropertiesIfExists() {
153+
Integer grpcPort = 6001;
154+
155+
when(connectionDetails.getGrpcPort()).thenReturn(grpcPort);
156+
157+
Properties result = configuration.createPropertiesFromConnectionDetails(connectionDetails);
158+
159+
assertThat(result.getValue(Properties.GRPC_PORT)).isEqualTo(grpcPort);
160+
}
161+
162+
private static class TestDaprClientAutoConfiguration extends DaprClientAutoConfiguration {
163+
164+
private final DaprClientBuilder daprClientBuilder;
165+
166+
public TestDaprClientAutoConfiguration(DaprClientBuilder daprClientBuilder) {
167+
this.daprClientBuilder = daprClientBuilder;
168+
}
169+
170+
@Override
171+
protected DaprClientBuilder createDaprClientBuilder() {
172+
return daprClientBuilder;
173+
}
174+
}
175+
176+
}

dapr-spring/dapr-spring-boot-autoconfigure/src/test/java/io/dapr/spring/boot/autoconfigure/client/DaprClientAutoConfigurationTests.java

-42
This file was deleted.

dapr-spring/dapr-spring-boot-tests/src/main/java/io/dapr/spring/boot/testcontainers/service/connection/DaprContainerConnectionDetailsFactory.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,22 @@ private DaprContainerConnectionDetails(ContainerConnectionSource<DaprContainer>
2323
}
2424

2525
@Override
26-
public String httpEndpoint() {
26+
public String getHttpEndpoint() {
2727
return getContainer().getHttpEndpoint();
2828
}
2929

3030
@Override
31-
public String grpcEndpoint() {
31+
public String getGrpcEndpoint() {
3232
return getContainer().getGrpcEndpoint();
3333
}
3434

3535
@Override
36-
public Integer httpPort() {
36+
public Integer getHttpPort() {
3737
return getContainer().getHttpPort();
3838
}
3939

4040
@Override
41-
public Integer grpcPort() {
41+
public Integer getGrpcPort() {
4242
return getContainer().getGrpcPort();
4343
}
4444
}

0 commit comments

Comments
 (0)