Skip to content

Commit 26d3b84

Browse files
committed
Merge branch '3.2.x' into 3.3.x
Closes gh-42490
2 parents ec615f6 + 95665a4 commit 26d3b84

File tree

2 files changed

+75
-19
lines changed

2 files changed

+75
-19
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitStreamConfiguration.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ StreamRabbitListenerContainerFactory streamRabbitListenerContainerFactory(Enviro
6868

6969
@Bean(name = "rabbitStreamEnvironment")
7070
@ConditionalOnMissingBean(name = "rabbitStreamEnvironment")
71-
Environment rabbitStreamEnvironment(RabbitProperties properties,
71+
Environment rabbitStreamEnvironment(RabbitProperties properties, RabbitConnectionDetails connectionDetails,
7272
ObjectProvider<EnvironmentBuilderCustomizer> customizers) {
73-
EnvironmentBuilder builder = configure(Environment.builder(), properties);
73+
EnvironmentBuilder builder = configure(Environment.builder(), properties, connectionDetails);
7474
customizers.orderedStream().forEach((customizer) -> customizer.customize(builder));
7575
return builder.build();
7676
}
@@ -99,18 +99,29 @@ RabbitStreamTemplate rabbitStreamTemplate(Environment rabbitStreamEnvironment, R
9999
return template;
100100
}
101101

102-
static EnvironmentBuilder configure(EnvironmentBuilder builder, RabbitProperties properties) {
102+
static EnvironmentBuilder configure(EnvironmentBuilder builder, RabbitProperties properties,
103+
RabbitConnectionDetails connectionDetails) {
104+
return configure(builder, properties.getStream(), connectionDetails);
105+
}
106+
107+
private static EnvironmentBuilder configure(EnvironmentBuilder builder, RabbitProperties.Stream stream,
108+
RabbitConnectionDetails connectionDetails) {
103109
builder.lazyInitialization(true);
104-
RabbitProperties.Stream stream = properties.getStream();
105110
PropertyMapper map = PropertyMapper.get();
106111
map.from(stream.getHost()).to(builder::host);
107112
map.from(stream.getPort()).to(builder::port);
108113
map.from(stream.getVirtualHost())
109-
.as(withFallback(properties::getVirtualHost))
114+
.as(withFallback(connectionDetails::getVirtualHost))
110115
.whenNonNull()
111116
.to(builder::virtualHost);
112-
map.from(stream.getUsername()).as(withFallback(properties::getUsername)).whenNonNull().to(builder::username);
113-
map.from(stream.getPassword()).as(withFallback(properties::getPassword)).whenNonNull().to(builder::password);
117+
map.from(stream.getUsername())
118+
.as(withFallback(connectionDetails::getUsername))
119+
.whenNonNull()
120+
.to(builder::username);
121+
map.from(stream.getPassword())
122+
.as(withFallback(connectionDetails::getPassword))
123+
.whenNonNull()
124+
.to(builder::password);
114125
return builder;
115126
}
116127

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitStreamConfigurationTests.java

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.autoconfigure.amqp;
1818

1919
import java.time.Duration;
20+
import java.util.List;
2021

2122
import com.rabbitmq.stream.BackOffDelayPolicy;
2223
import com.rabbitmq.stream.Codec;
@@ -124,12 +125,14 @@ void whenCustomMessageListenerContainerFactoryIsDefinedThenAutoConfiguredContain
124125
}
125126

126127
@Test
127-
void environmentUsesPropertyDefaultsByDefault() {
128+
void environmentUsesConnectionDetailsByDefault() {
128129
EnvironmentBuilder builder = mock(EnvironmentBuilder.class);
129130
RabbitProperties properties = new RabbitProperties();
130-
RabbitStreamConfiguration.configure(builder, properties);
131+
RabbitStreamConfiguration.configure(builder, properties,
132+
new TestRabbitConnectionDetails("guest", "guest", "vhost"));
131133
then(builder).should().port(5552);
132134
then(builder).should().host("localhost");
135+
then(builder).should().virtualHost("vhost");
133136
then(builder).should().lazyInitialization(true);
134137
then(builder).should().username("guest");
135138
then(builder).should().password("guest");
@@ -141,7 +144,8 @@ void whenStreamPortIsSetThenEnvironmentUsesCustomPort() {
141144
EnvironmentBuilder builder = mock(EnvironmentBuilder.class);
142145
RabbitProperties properties = new RabbitProperties();
143146
properties.getStream().setPort(5553);
144-
RabbitStreamConfiguration.configure(builder, properties);
147+
RabbitStreamConfiguration.configure(builder, properties,
148+
new TestRabbitConnectionDetails("guest", "guest", "vhost"));
145149
then(builder).should().port(5553);
146150
}
147151

@@ -150,7 +154,8 @@ void whenStreamHostIsSetThenEnvironmentUsesCustomHost() {
150154
EnvironmentBuilder builder = mock(EnvironmentBuilder.class);
151155
RabbitProperties properties = new RabbitProperties();
152156
properties.getStream().setHost("stream.rabbit.example.com");
153-
RabbitStreamConfiguration.configure(builder, properties);
157+
RabbitStreamConfiguration.configure(builder, properties,
158+
new TestRabbitConnectionDetails("guest", "guest", "vhost"));
154159
then(builder).should().host("stream.rabbit.example.com");
155160
}
156161

@@ -159,28 +164,31 @@ void whenStreamVirtualHostIsSetThenEnvironmentUsesCustomVirtualHost() {
159164
EnvironmentBuilder builder = mock(EnvironmentBuilder.class);
160165
RabbitProperties properties = new RabbitProperties();
161166
properties.getStream().setVirtualHost("stream-virtual-host");
162-
RabbitStreamConfiguration.configure(builder, properties);
167+
RabbitStreamConfiguration.configure(builder, properties,
168+
new TestRabbitConnectionDetails("guest", "guest", "vhost"));
163169
then(builder).should().virtualHost("stream-virtual-host");
164170
}
165171

166172
@Test
167173
void whenStreamVirtualHostIsNotSetButDefaultVirtualHostIsSetThenEnvironmentUsesDefaultVirtualHost() {
168174
EnvironmentBuilder builder = mock(EnvironmentBuilder.class);
169175
RabbitProperties properties = new RabbitProperties();
170-
properties.setVirtualHost("default-virtual-host");
171-
RabbitStreamConfiguration.configure(builder, properties);
176+
properties.setVirtualHost("properties-virtual-host");
177+
RabbitStreamConfiguration.configure(builder, properties,
178+
new TestRabbitConnectionDetails("guest", "guest", "default-virtual-host"));
172179
then(builder).should().virtualHost("default-virtual-host");
173180
}
174181

175182
@Test
176-
void whenStreamCredentialsAreNotSetThenEnvironmentUsesRabbitCredentials() {
183+
void whenStreamCredentialsAreNotSetThenEnvironmentUsesConnectionDetailsCredentials() {
177184
EnvironmentBuilder builder = mock(EnvironmentBuilder.class);
178185
RabbitProperties properties = new RabbitProperties();
179186
properties.setUsername("alice");
180187
properties.setPassword("secret");
181-
RabbitStreamConfiguration.configure(builder, properties);
182-
then(builder).should().username("alice");
183-
then(builder).should().password("secret");
188+
RabbitStreamConfiguration.configure(builder, properties,
189+
new TestRabbitConnectionDetails("bob", "password", "vhost"));
190+
then(builder).should().username("bob");
191+
then(builder).should().password("password");
184192
}
185193

186194
@Test
@@ -191,7 +199,8 @@ void whenStreamCredentialsAreSetThenEnvironmentUsesStreamCredentials() {
191199
properties.setPassword("secret");
192200
properties.getStream().setUsername("bob");
193201
properties.getStream().setPassword("confidential");
194-
RabbitStreamConfiguration.configure(builder, properties);
202+
RabbitStreamConfiguration.configure(builder, properties,
203+
new TestRabbitConnectionDetails("charlotte", "hidden", "vhost"));
195204
then(builder).should().username("bob");
196205
then(builder).should().password("confidential");
197206
}
@@ -345,4 +354,40 @@ EnvironmentBuilderCustomizer customizerB() {
345354

346355
}
347356

357+
private static final class TestRabbitConnectionDetails implements RabbitConnectionDetails {
358+
359+
private final String username;
360+
361+
private final String password;
362+
363+
private final String virtualHost;
364+
365+
private TestRabbitConnectionDetails(String username, String password, String virtualHost) {
366+
this.username = username;
367+
this.password = password;
368+
this.virtualHost = virtualHost;
369+
}
370+
371+
@Override
372+
public String getUsername() {
373+
return this.username;
374+
}
375+
376+
@Override
377+
public String getPassword() {
378+
return this.password;
379+
}
380+
381+
@Override
382+
public String getVirtualHost() {
383+
return this.virtualHost;
384+
}
385+
386+
@Override
387+
public List<Address> getAddresses() {
388+
throw new UnsupportedOperationException();
389+
}
390+
391+
}
392+
348393
}

0 commit comments

Comments
 (0)