diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfiguration.java index 9d8223753c..58411c4dba 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfiguration.java @@ -22,14 +22,14 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint; import org.springframework.boot.actuate.autoconfigure.endpoint.expose.EndpointExposure; import org.springframework.boot.actuate.endpoint.SanitizingFunction; -import org.springframework.boot.actuate.quartz.QuartzEndpoint; -import org.springframework.boot.actuate.quartz.QuartzEndpointWebExtension; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpointWebExtension; import org.springframework.boot.quartz.autoconfigure.QuartzAutoConfiguration; import org.springframework.context.annotation.Bean; @@ -41,7 +41,7 @@ import org.springframework.context.annotation.Bean; * @since 2.5.0 */ @AutoConfiguration(after = QuartzAutoConfiguration.class) -@ConditionalOnClass(Scheduler.class) +@ConditionalOnClass({ Scheduler.class, QuartzEndpoint.class }) @ConditionalOnAvailableEndpoint(QuartzEndpoint.class) @EnableConfigurationProperties(QuartzEndpointProperties.class) public class QuartzEndpointAutoConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointProperties.java index 8f8fcdfddf..b7beb450c9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,8 +20,8 @@ import java.util.HashSet; import java.util.Set; import org.springframework.boot.actuate.endpoint.Show; -import org.springframework.boot.actuate.quartz.QuartzEndpoint; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint; /** * Configuration properties for {@link QuartzEndpoint}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfigurationTests.java index 163f18bfbe..1f43195d72 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/quartz/QuartzEndpointAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,9 +23,9 @@ import org.junit.jupiter.api.Test; import org.quartz.Scheduler; import org.springframework.boot.actuate.endpoint.Show; -import org.springframework.boot.actuate.quartz.QuartzEndpoint; -import org.springframework.boot.actuate.quartz.QuartzEndpointWebExtension; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpointWebExtension; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/quartz/QuartzEndpointDocumentationTests.java b/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/quartz/QuartzEndpointDocumentationTests.java index 701911b4a3..b581af9f59 100644 --- a/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/quartz/QuartzEndpointDocumentationTests.java +++ b/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/quartz/QuartzEndpointDocumentationTests.java @@ -54,9 +54,9 @@ import org.quartz.spi.OperableTrigger; import org.springframework.boot.actuate.docs.MockMvcEndpointDocumentationTests; import org.springframework.boot.actuate.endpoint.Show; -import org.springframework.boot.actuate.quartz.QuartzEndpoint; -import org.springframework.boot.actuate.quartz.QuartzEndpointWebExtension; import org.springframework.boot.json.JsonWriter; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpointWebExtension; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index d1820819b5..4f89466330 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -45,7 +45,6 @@ dependencies { optional("org.glassfish.jersey.containers:jersey-container-servlet-core") optional("org.hibernate.validator:hibernate-validator") optional("org.influxdb:influxdb-java") - optional("org.quartz-scheduler:quartz") optional("org.springframework:spring-context-support") optional("org.springframework:spring-jdbc") optional("org.springframework:spring-messaging") diff --git a/spring-boot-project/spring-boot-quartz/build.gradle b/spring-boot-project/spring-boot-quartz/build.gradle index 26c180cafd..51ff969c85 100644 --- a/spring-boot-project/spring-boot-quartz/build.gradle +++ b/spring-boot-project/spring-boot-quartz/build.gradle @@ -15,6 +15,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-sql")) + optional(project(":spring-boot-project:spring-boot-actuator")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) optional(project(":spring-boot-project:spring-boot-jdbc")) optional(project(":spring-boot-project:spring-boot-jpa")) @@ -23,6 +24,9 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-liquibase")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + testImplementation(testFixtures(project(":spring-boot-project:spring-boot-actuator"))) + testImplementation("net.minidev:json-smart") + testImplementation("org.springframework:spring-web") testRuntimeOnly("ch.qos.logback:logback-classic") testRuntimeOnly("com.h2database:h2") diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/QuartzEndpoint.java b/spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpoint.java similarity index 99% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/QuartzEndpoint.java rename to spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpoint.java index 67b906dcb0..225e73fb55 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/QuartzEndpoint.java +++ b/spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpoint.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.quartz; +package org.springframework.boot.quartz.actuate.endpoint; import java.time.Duration; import java.time.Instant; @@ -62,7 +62,7 @@ import org.springframework.util.Assert; * * @author Vedran Pavic * @author Stephane Nicoll - * @since 2.5.0 + * @since 4.0.0 */ @Endpoint(id = "quartz") public class QuartzEndpoint { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebExtension.java b/spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebExtension.java similarity index 89% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebExtension.java rename to spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebExtension.java index 118837adf7..38589c0e59 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebExtension.java +++ b/spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebExtension.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.quartz; +package org.springframework.boot.quartz.actuate.endpoint; import java.util.Set; @@ -30,18 +30,18 @@ import org.springframework.boot.actuate.endpoint.annotation.Selector; import org.springframework.boot.actuate.endpoint.annotation.WriteOperation; import org.springframework.boot.actuate.endpoint.web.WebEndpointResponse; import org.springframework.boot.actuate.endpoint.web.annotation.EndpointWebExtension; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzGroupsDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobDetailsDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobGroupSummaryDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzTriggerGroupSummaryDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpointWebExtension.QuartzEndpointWebExtensionRuntimeHints; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzGroupsDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobDetailsDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobGroupSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzTriggerGroupSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpointWebExtension.QuartzEndpointWebExtensionRuntimeHints; import org.springframework.context.annotation.ImportRuntimeHints; /** * {@link EndpointWebExtension @EndpointWebExtension} for the {@link QuartzEndpoint}. * * @author Stephane Nicoll - * @since 2.5.0 + * @since 4.0.0 */ @EndpointWebExtension(endpoint = QuartzEndpoint.class) @ImportRuntimeHints(QuartzEndpointWebExtensionRuntimeHints.class) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/package-info.java b/spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/package-info.java similarity index 78% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/package-info.java rename to spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/package-info.java index c6d3863952..2d7b6672f8 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/quartz/package-info.java +++ b/spring-boot-project/spring-boot-quartz/src/main/java/org/springframework/boot/quartz/actuate/endpoint/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,6 @@ */ /** - * Actuator support for Quartz Scheduler. + * Actuator endpoint for Quartz Scheduler. */ -package org.springframework.boot.actuate.quartz; +package org.springframework.boot.quartz.actuate.endpoint; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointTests.java b/spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointTests.java similarity index 98% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointTests.java rename to spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointTests.java index f99f45cd48..4113dea572 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointTests.java +++ b/spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.quartz; +package org.springframework.boot.quartz.actuate.endpoint; import java.time.Duration; import java.time.Instant; @@ -62,12 +62,12 @@ import org.quartz.TriggerKey; import org.quartz.impl.matchers.GroupMatcher; import org.quartz.spi.OperableTrigger; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobDetailsDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobGroupSummaryDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobSummaryDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobTriggerDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzTriggerGroupSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobDetailsDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobGroupSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobTriggerDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzTriggerGroupSummaryDescriptor; import org.springframework.scheduling.quartz.DelegatingJob; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebExtensionTests.java similarity index 87% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebExtensionTests.java rename to spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebExtensionTests.java index 3c3e0d6cb8..6073b4fcac 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebExtensionTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.quartz; +package org.springframework.boot.quartz.actuate.endpoint; import java.security.Principal; import java.util.Collections; @@ -28,11 +28,11 @@ import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.predicate.RuntimeHintsPredicates; import org.springframework.boot.actuate.endpoint.SecurityContext; import org.springframework.boot.actuate.endpoint.Show; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzGroupsDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobDetailsDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzJobGroupSummaryDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpoint.QuartzTriggerGroupSummaryDescriptor; -import org.springframework.boot.actuate.quartz.QuartzEndpointWebExtension.QuartzEndpointWebExtensionRuntimeHints; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzGroupsDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobDetailsDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzJobGroupSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpoint.QuartzTriggerGroupSummaryDescriptor; +import org.springframework.boot.quartz.actuate.endpoint.QuartzEndpointWebExtension.QuartzEndpointWebExtensionRuntimeHints; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebIntegrationTests.java b/spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebIntegrationTests.java similarity index 99% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebIntegrationTests.java rename to spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebIntegrationTests.java index e206046ec5..8ea6dc3261 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/quartz/QuartzEndpointWebIntegrationTests.java +++ b/spring-boot-project/spring-boot-quartz/src/test/java/org/springframework/boot/quartz/actuate/endpoint/QuartzEndpointWebIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.quartz; +package org.springframework.boot.quartz.actuate.endpoint; import java.util.ArrayList; import java.util.Collections;