Skip to content

Commit c528fa0

Browse files
committed
GH-624 - Expose factory method to create a (SpringBoot)ApplicationRuntime.
We now expose ApplicationRuntime.of(ApplicationContext) to create a SpringBootApplicationRuntime as that's needed a lot in integration tests for runtime and observability components.
1 parent fd8a0fc commit c528fa0

File tree

6 files changed

+24
-37
lines changed

6 files changed

+24
-37
lines changed

spring-modulith-runtime/src/main/java/org/springframework/modulith/runtime/ApplicationRuntime.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
package org.springframework.modulith.runtime;
1717

18+
import org.springframework.context.ApplicationContext;
19+
import org.springframework.util.Assert;
20+
1821
/**
1922
* Abstraction of the application runtime environment. Primarily to keep references to Spring Boot out of the core
2023
* observability implementation.
@@ -23,6 +26,19 @@
2326
*/
2427
public interface ApplicationRuntime {
2528

29+
/**
30+
* Creates a new {@link ApplicationRuntime} for the given {@link ApplicationContext}.
31+
*
32+
* @param context must not be {@literal null}.
33+
* @return will never be {@literal null}.
34+
*/
35+
public static ApplicationRuntime of(ApplicationContext context) {
36+
37+
Assert.notNull(context, "ApplicationContext must not be null!");
38+
39+
return new SpringBootApplicationRuntime(context);
40+
}
41+
2642
/**
2743
* Returns the identifier of the application.
2844
*
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.modulith.runtime.autoconfigure;
16+
package org.springframework.modulith.runtime;
1717

1818
import java.util.Arrays;
1919
import java.util.List;
@@ -23,7 +23,6 @@
2323
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
2424
import org.springframework.boot.autoconfigure.SpringBootApplication;
2525
import org.springframework.context.ApplicationContext;
26-
import org.springframework.modulith.runtime.ApplicationRuntime;
2726
import org.springframework.util.Assert;
2827
import org.springframework.util.ClassUtils;
2928

spring-modulith-runtime/src/main/java/org/springframework/modulith/runtime/autoconfigure/SpringModulithRuntimeAutoConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import org.springframework.util.function.ThrowingSupplier;
4242

4343
/**
44-
* Auto-configuration to register a {@link SpringBootApplicationRuntime}, a {@link ApplicationModulesRuntime} and an
44+
* Auto-configuration to register an {@link ApplicationRuntime}, a {@link ApplicationModulesRuntime} and an
4545
* {@link ApplicationListener} to invoke all {@link ApplicationModuleInitializer}s as Spring Bean.
4646
*
4747
* @author Oliver Drotbohm
@@ -55,8 +55,8 @@ class SpringModulithRuntimeAutoConfiguration {
5555
@Bean
5656
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
5757
@ConditionalOnMissingBean(ApplicationRuntime.class)
58-
static SpringBootApplicationRuntime modulithsApplicationRuntime(ApplicationContext context) {
59-
return new SpringBootApplicationRuntime(context);
58+
static ApplicationRuntime modulithsApplicationRuntime(ApplicationContext context) {
59+
return ApplicationRuntime.of(context);
6060
}
6161

6262
@Bean

spring-modulith-runtime/src/test/java/org/springframework/modulith/runtime/ApplicationModulesRuntimeIntegrationTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.junit.jupiter.api.Test;
2828
import org.springframework.boot.SpringApplication;
2929
import org.springframework.modulith.core.ApplicationModules;
30-
import org.springframework.modulith.runtime.autoconfigure.TestSpringBootApplicationRuntime;
3130
import org.springframework.modulith.test.TestApplicationModules;
3231

3332
/**
@@ -43,7 +42,7 @@ public class ApplicationModulesRuntimeIntegrationTests {
4342
void detectsTypeInAdditionalPackageAsApplicationType() {
4443

4544
var context = SpringApplication.run(SampleApplication.class);
46-
var applicationRuntime = new TestSpringBootApplicationRuntime(context);
45+
var applicationRuntime = ApplicationRuntime.of(context);
4746

4847
var runtime = new ApplicationModulesRuntime(() -> modules, applicationRuntime);
4948

@@ -55,7 +54,7 @@ void detectsTypeInAdditionalPackageAsApplicationType() {
5554
void onlyLooksUpApplicationModulesOnce() {
5655

5756
var context = SpringApplication.run(SampleApplication.class);
58-
var applicationRuntime = new TestSpringBootApplicationRuntime(context);
57+
var applicationRuntime = ApplicationRuntime.of(context);
5958
var supplier = new CountingSupplier<>(() -> modules);
6059

6160
var runtime = new ApplicationModulesRuntime(supplier, applicationRuntime);
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.modulith.runtime.autoconfigure;
16+
package org.springframework.modulith.runtime;
1717

1818
import static org.assertj.core.api.Assertions.*;
1919

@@ -24,6 +24,7 @@
2424
import org.springframework.aop.framework.ProxyFactory;
2525
import org.springframework.context.ApplicationContext;
2626
import org.springframework.modulith.runtime.ApplicationRuntime;
27+
import org.springframework.modulith.runtime.SpringBootApplicationRuntime;
2728

2829
/**
2930
* Unit tests for {@link SpringBootApplicationRuntime}.

spring-modulith-runtime/src/test/java/org/springframework/modulith/runtime/autoconfigure/TestSpringBootApplicationRuntime.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)