GH-14 - Remove Lombok from production sources.

Polished a lot of Javadoc.
This commit is contained in:
Oliver Drotbohm
2023-01-12 00:54:04 +01:00
parent 20554c3af3
commit 9ce6bf23ae
87 changed files with 3546 additions and 1061 deletions

View File

@@ -15,12 +15,10 @@
*/
package org.springframework.modulith.runtime;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import java.util.function.Supplier;
import org.springframework.modulith.model.ApplicationModules;
import org.springframework.util.Assert;
/**
* Bootstrap type to make sure we only bootstrap the initialization of a {@link ApplicationModules} instance once per
@@ -28,11 +26,26 @@ import org.springframework.modulith.model.ApplicationModules;
*
* @author Oliver Drotbohm
*/
@RequiredArgsConstructor
public class ApplicationModulesRuntime implements Supplier<ApplicationModules> {
private final @NonNull Supplier<ApplicationModules> modules;
private final @NonNull ApplicationRuntime runtime;
private final Supplier<ApplicationModules> modules;
private final ApplicationRuntime runtime;
/**
* Creates a new {@link ApplicationModulesRuntime} for the given {@link ApplicationModules} and
* {@link ApplicationRuntime}.
*
* @param modules must not be {@literal null}.
* @param runtime must not be {@literal null}.
*/
public ApplicationModulesRuntime(Supplier<ApplicationModules> modules, ApplicationRuntime runtime) {
Assert.notNull(modules, "ApplicationModules must not be null!");
Assert.notNull(runtime, "ApplicationRuntime must not be null!");
this.modules = modules;
this.runtime = runtime;
}
/*
* (non-Javadoc)

View File

@@ -15,8 +15,6 @@
*/
package org.springframework.modulith.runtime.autoconfigure;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -25,6 +23,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.modulith.runtime.ApplicationRuntime;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
/**
@@ -33,7 +32,6 @@ import org.springframework.util.ClassUtils;
*
* @author Oliver Drotbohm
*/
@RequiredArgsConstructor
class SpringBootApplicationRuntime implements ApplicationRuntime {
private static final Map<String, Boolean> APPLICATION_CLASSES = new ConcurrentHashMap<>();
@@ -41,6 +39,18 @@ class SpringBootApplicationRuntime implements ApplicationRuntime {
private final ApplicationContext context;
private Class<?> mainApplicationClass;
/**
* Creates a new {@link SpringBootApplicationRuntime} for the given {@link ApplicationContext}.
*
* @param context must not be {@literal null}.
*/
SpringBootApplicationRuntime(ApplicationContext context) {
Assert.notNull(context, "ApplicationContext must not be null!");
this.context = context;
}
/*
* (non-Javadoc)
* @see org.springframework.modulith.observability.ApplicationRuntime#getId()

View File

@@ -15,14 +15,13 @@
*/
package org.springframework.modulith.runtime.autoconfigure;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.function.Supplier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.aop.support.AopUtils;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -38,6 +37,7 @@ import org.springframework.modulith.model.ApplicationModules;
import org.springframework.modulith.model.FormatableType;
import org.springframework.modulith.runtime.ApplicationModulesRuntime;
import org.springframework.modulith.runtime.ApplicationRuntime;
import org.springframework.util.Assert;
/**
* Auto-configuration to register a {@link SpringBootApplicationRuntime} and {@link ApplicationModulesRuntime} as Spring
@@ -45,10 +45,11 @@ import org.springframework.modulith.runtime.ApplicationRuntime;
*
* @author Oliver Drotbohm
*/
@Slf4j
@AutoConfiguration
class SpringModulithRuntimeAutoConfiguration {
private static final Logger LOGGER = LoggerFactory.getLogger(SpringModulithRuntimeAutoConfiguration.class);
@Bean
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
@ConditionalOnMissingBean(ApplicationRuntime.class)
@@ -78,18 +79,35 @@ class SpringModulithRuntimeAutoConfiguration {
initializers.stream() //
.sorted(modules.getComparator()) //
.map(it -> LOG.isDebugEnabled() ? new LoggingApplicationModuleInitializerAdapter(it, modules) : it)
.map(it -> LOGGER.isDebugEnabled() ? new LoggingApplicationModuleInitializerAdapter(it, modules) : it)
.forEach(ApplicationModuleInitializer::initialize);
};
}
@Slf4j
@RequiredArgsConstructor
private static class LoggingApplicationModuleInitializerAdapter implements ApplicationModuleInitializer {
private static final Logger LOGGER = LoggerFactory.getLogger(LoggingApplicationModuleInitializerAdapter.class);
private final ApplicationModuleInitializer delegate;
private final ApplicationModules modules;
/**
* Creates a new {@link LoggingApplicationModuleInitializerAdapter} for the given
* {@link ApplicationModuleInitializer} and {@link ApplicationModule}.
*
* @param delegate must not be {@literal null}.
* @param modules must not be {@literal null}.
*/
public LoggingApplicationModuleInitializerAdapter(ApplicationModuleInitializer delegate,
ApplicationModules modules) {
Assert.notNull(delegate, "ApplicationModuleInitializer must not be null!");
Assert.notNull(modules, "ApplicationModules must not be null!");
this.delegate = delegate;
this.modules = modules;
}
/*
* (non-Javadoc)
* @see org.springframework.modulith.ApplicationModuleInitializer#initialize()
@@ -104,31 +122,32 @@ class SpringModulithRuntimeAutoConfiguration {
.map(formattable::getAbbreviatedFullName)
.orElseGet(formattable::getAbbreviatedFullName);
LOG.debug("Initializing {}.", formattedListenerType);
LOGGER.debug("Initializing {}.", formattedListenerType);
delegate.initialize();
LOG.debug("Initializing {} done.", formattedListenerType);
LOGGER.debug("Initializing {} done.", formattedListenerType);
}
}
@Slf4j
private static class ApplicationModulesBootstrap {
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationModulesBootstrap.class);
static ApplicationModules initializeApplicationModules(Class<?> applicationMainClass) {
LOG.debug("Obtaining Spring Modulith application modules…");
LOGGER.debug("Obtaining Spring Modulith application modules…");
var result = ApplicationModules.of(applicationMainClass);
var numberOfModules = result.stream().count();
if (numberOfModules == 0) {
LOG.warn("No application modules detected!");
LOGGER.warn("No application modules detected!");
} else {
LOG.debug("Detected {} application modules: {}", //
LOGGER.debug("Detected {} application modules: {}", //
result.stream().count(), //
result.stream().map(ApplicationModule::getName).toList());
}
@@ -144,7 +163,6 @@ class SpringModulithRuntimeAutoConfiguration {
return modules.get();
} catch (Exception o_O) {
throw new RuntimeException(o_O);
// TODO: handle exception
}
};
}