Skip to content

Commit

Permalink
feat(standalone): simplify DefaultStandaloneFactory usage
Browse files Browse the repository at this point in the history
  • Loading branch information
timonback committed Feb 17, 2025
1 parent 73ee48d commit 94254e8
Show file tree
Hide file tree
Showing 11 changed files with 34 additions and 89 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,21 @@
import java.util.List;

@Slf4j
public class StandaloneDIFactory implements StandaloneFactory {
public class DefaultStandaloneFactory implements StandaloneFactory {
private final AnnotationConfigApplicationContext diContext = new AnnotationConfigApplicationContext();

public StandaloneDIFactory(String applicationBasePackage) {
this(
applicationBasePackage,
StandaloneConfigurationDiscoverer.discover(StandaloneEnvironmentLoader.loadEnvironment(List.of())),
StandaloneEnvironmentLoader.loadEnvironment(List.of()));
public DefaultStandaloneFactory(String applicationBasePackage) {
this(applicationBasePackage, StandaloneEnvironmentLoader.load());
}

public StandaloneDIFactory(
public DefaultStandaloneFactory(String applicationBasePackage, ConfigurableEnvironment environment) {
this(applicationBasePackage, environment, StandaloneConfigurationDiscoverer.scan(environment));
}

public DefaultStandaloneFactory(
String applicationBasePackage,
List<Class<?>> standaloneConfigurations,
ConfigurableEnvironment environment) {
ConfigurableEnvironment environment,
List<Class<?>> standaloneConfigurations) {
standaloneConfigurations.forEach(diContext::register);
ConfigurationPropertiesBindingPostProcessor.register(diContext); // populate ConfigurationProperties beans
diContext.setEnvironment(environment);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
import java.util.List;

public class StandaloneConfigurationDiscoverer {
public static List<Class<?>> discover(ConfigurableEnvironment environment) {
return discover(SpringwolfConfigConstants.SPRINGWOLF_PACKAGE, environment);
public static List<Class<?>> scan(ConfigurableEnvironment environment) {
return scan(SpringwolfConfigConstants.SPRINGWOLF_PACKAGE, environment);
}

public static List<Class<?>> discover(String scanPackage, ConfigurableEnvironment environment) {
public static List<Class<?>> scan(String scanPackage, ConfigurableEnvironment environment) {
final TypeFilter filter = new AnnotationTypeFilter(StandaloneConfiguration.class);
return ClassScannerUtil.getClasses(scanPackage, filter, environment);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
import java.util.List;

public class StandaloneEnvironmentLoader {
public static ConfigurableEnvironment loadEnvironment(List<String> profiles) {
public static ConfigurableEnvironment load() {
return load(List.of());
}

public static ConfigurableEnvironment load(List<String> profiles) {
StandardEnvironment environment = new StandardEnvironment();
if (!profiles.isEmpty()) {
environment.setActiveProfiles(profiles.toArray(new String[0]));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
import io.github.springwolf.core.integrationtests.application.polymorphic.PolymorphicPayloadApplication;
import io.github.springwolf.core.integrationtests.application.publisher.PublisherApplication;
import io.github.springwolf.core.integrationtests.application.schema.SchemaEnumAsRefApplication;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -26,10 +25,8 @@
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.test.context.TestPropertySource;

import java.util.List;
import java.util.Map;

import static io.github.springwolf.core.configuration.properties.SpringwolfConfigConstants.SPRINGWOLF_PACKAGE;
import static org.assertj.core.api.Assertions.assertThat;

public class AsyncApiDocumentIntegrationTest {
Expand Down Expand Up @@ -409,8 +406,6 @@ void shouldFindAllForGroupAll() {
}

private AsyncApiService createStandaloneAsyncApiService(ConfigurableEnvironment environment, String basePackage) {
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(SPRINGWOLF_PACKAGE, environment);

return new StandaloneDIFactory(basePackage, configurations, environment).getAsyncApiService();
return new DefaultStandaloneFactory(basePackage, environment).getAsyncApiService();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import io.github.springwolf.examples.amqp.configuration.RabbitConfiguration;
import lombok.SneakyThrows;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;
import org.testcontainers.shaded.com.fasterxml.jackson.databind.JsonNode;

import java.io.IOException;
Expand All @@ -30,11 +27,7 @@ public class StandaloneTest {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.amqp";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,10 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.kafka.test.EmbeddedKafkaKraftBroker;
import org.springframework.kafka.test.context.EmbeddedKafka;

Expand All @@ -19,7 +16,6 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -40,11 +36,7 @@ public static void beforeAll() {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.cloudstream";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -27,11 +23,7 @@ public class StandaloneTest {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.jms";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -27,11 +23,7 @@ public class StandaloneTest {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.kafka";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -27,11 +23,7 @@ public class StandaloneTest {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.sns";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -27,11 +23,7 @@ public class StandaloneTest {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.sqs";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,15 @@
import io.github.springwolf.asyncapi.v3.jackson.AsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.jackson.DefaultAsyncApiSerializerService;
import io.github.springwolf.asyncapi.v3.model.AsyncAPI;
import io.github.springwolf.core.standalone.StandaloneConfigurationDiscoverer;
import io.github.springwolf.core.standalone.StandaloneDIFactory;
import io.github.springwolf.core.standalone.StandaloneEnvironmentLoader;
import io.github.springwolf.core.standalone.DefaultStandaloneFactory;
import io.github.springwolf.core.standalone.StandaloneFactory;
import org.junit.jupiter.api.Test;
import org.springframework.core.env.ConfigurableEnvironment;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -27,11 +23,7 @@ public class StandaloneTest {
public void scanApplication() throws IOException {
// given
String basePackage = "io.github.springwolf.examples.stomp";

List<String> profiles = List.of();
ConfigurableEnvironment environment = StandaloneEnvironmentLoader.loadEnvironment(profiles);
List<Class<?>> configurations = StandaloneConfigurationDiscoverer.discover(environment);
StandaloneFactory standaloneFactory = new StandaloneDIFactory(basePackage, configurations, environment);
StandaloneFactory standaloneFactory = new DefaultStandaloneFactory(basePackage);

// when
AsyncAPI asyncApi = standaloneFactory.getAsyncApiService().getAsyncAPI();
Expand Down

0 comments on commit 94254e8

Please sign in to comment.