Skip to content

Commit b2452d1

Browse files
jialigitkhmic5
authored andcommitted
servicebus jms autoconfiguration enabled fix (Azure#29313)
* servicebus jms autoconfiguration enabled option fix * servicebus jms autoconfiguration enabled add changelog
1 parent b386bce commit b2452d1

File tree

5 files changed

+57
-0
lines changed

5 files changed

+57
-0
lines changed

eng/code-quality-reports/src/main/resources/revapi/revapi.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,11 @@
282282
"new": "class com.azure.spring.cloud.autoconfigure.context.AzureTokenCredentialAutoConfiguration",
283283
"justification": "Fixes a bug."
284284
},
285+
{
286+
"code": "java.annotation.added",
287+
"new": "class com.azure.spring.cloud.autoconfigure.jms.ServiceBusJmsAutoConfiguration",
288+
"justification": "Fixes a bug."
289+
},
285290
{
286291
"code": "java.missing.newSuperType",
287292
"old": "class com.azure.messaging.eventhubs.EventData",

sdk/spring/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module.
2424
#### Dependency Updates
2525
- Upgrade spring-security to 5.6.4 to address [CVE-2022-22978](https://spring.io/blog/2022/05/15/cve-2022-22978-authorization-bypass-in-regexrequestmatcher) [#29304](https://github.com/Azure/azure-sdk-for-java/pull/29304).
2626

27+
#### Features Added
28+
- Add `enabled` option in `AzureServiceBusJmsProperties` [#29232](https://github.com/Azure/azure-sdk-for-java/issues/29232).
29+
30+
#### Bugs Fixed
31+
- Fix the Service Bus JMS autoconfiguration logic error [#29313](https://github.com/Azure/azure-sdk-for-java/pull/29313).
32+
2733
### Spring Messaging Azure Service Bus
2834
This section includes changes in the `spring-messaging-azure-servicebus` module.
2935

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1818
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
1919
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
20+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2021
import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration;
2122
import org.springframework.boot.autoconfigure.jms.JmsProperties;
2223
import org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration;
@@ -42,6 +43,7 @@
4243
@AutoConfigureAfter({
4344
JndiConnectionFactoryAutoConfiguration.class,
4445
AzureServiceBusResourceManagerAutoConfiguration.class })
46+
@ConditionalOnProperty(value = "spring.jms.servicebus.enabled", matchIfMissing = true)
4547
@ConditionalOnClass({ ConnectionFactory.class, JmsConnectionFactory.class, JmsTemplate.class })
4648
@EnableConfigurationProperties({ AzureServiceBusJmsProperties.class, JmsProperties.class })
4749
@Import({ ServiceBusJmsConnectionFactoryConfiguration.class, ServiceBusJmsContainerConfiguration.class })

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/jms/properties/AzureServiceBusJmsProperties.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public class AzureServiceBusJmsProperties implements InitializingBean {
2424
*/
2525
public static final String PREFIX = "spring.jms.servicebus";
2626

27+
/**
28+
* Whether to enable Servive Bus JMS autoconfiguration.
29+
*/
30+
private boolean enabled = true;
31+
2732
private static final String DEFAULT_REMOTE_URL = "amqp://localhost:5672";
2833

2934
private static final String AMQP_URI_FORMAT = "amqps://%s?amqp.idleTimeout=%d";
@@ -66,6 +71,22 @@ public class AzureServiceBusJmsProperties implements InitializingBean {
6671
*/
6772
private String password;
6873

74+
/**
75+
* Whether to enable Service Bus JMS autoconfiguration.
76+
* @return Whether to enable Service Bus autoconfiguration
77+
*/
78+
public boolean isEnabled() {
79+
return enabled;
80+
}
81+
82+
/**
83+
* Set whether to enable Service Bus JMS autoconfiguation.
84+
* @param enabled whether to enable Service Bus autoconfiguration.
85+
*/
86+
public void setEnabled(boolean enabled) {
87+
this.enabled = enabled;
88+
}
89+
6990
/**
7091
* Get the URL of the AMQP broker.
7192
* @return the URL of the AMQP broker.

sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/jms/ServiceBusJmsAutoConfigurationTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,29 @@ void autoconfigurationEnabledAndContextSuccessWithPremiumTier(String pricingTier
152152
});
153153
}
154154

155+
@ParameterizedTest
156+
@ValueSource(strings = { "basic", "standard", "premium" })
157+
void autoconfigurationDisabled(String pricingTier) {
158+
this.contextRunner
159+
.withPropertyValues(
160+
"spring.jms.servicebus.enabled=false",
161+
"spring.jms.servicebus.pricing-tier=" + pricingTier,
162+
"spring.jms.servicebus.connection-string=" + CONNECTION_STRING)
163+
.run(context -> {
164+
assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class);
165+
});
166+
}
167+
168+
@Test
169+
void autoconfigurationDisabledCase2() {
170+
this.contextRunner
171+
.withPropertyValues(
172+
"spring.jms.servicebus.enabled=false")
173+
.run(context -> {
174+
assertThat(context).doesNotHaveBean(AzureServiceBusJmsProperties.class);
175+
});
176+
}
177+
155178
@ParameterizedTest
156179
@ValueSource(strings = { "basic", "standard", "premium" })
157180
void doesnotHaveBeanOfAzureServiceBusJmsPropertiesBeanPostProcessor(String pricingTier) {

0 commit comments

Comments
 (0)