Previously, TypeExcludeFiltersContextCustomizerFactory
only discovered the first @TypeExcludeFilters annotation.
This commit updates it to discover all @TypeExcludeFilters
annotations instead of stopping at the first.
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
See gh-51489
Replace `URLDecoder.decode` with `StringUtils.uriDecode` to ensure
RFC 3986-compliant decoding. Unlike `URLDecoder`, URI decoding does
not treat `+` as a space and only decodes percent-encoded sequences.
See gh-50650
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, securityDelegateMockMvcHtmlUnitDriverCustomizer
did not have an @Bean annotation and therefore
was not registered as a bean in SecurityMockMvcAutoConfiguration.
See gh-50602
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
In Flyway 12.0, the `cleanOnValidationError` property was removed.
This commit catches `NoSuchMethodError` to maintain compatibility with
Flyway 12.0
See gh-49059
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Before this commit, "cmd /c" was never added to the final command,
which meant the Docker credential helper was not executed correctly.
See gh-48965
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit auto-configures the following beans with their corresponding
conventions, when available:
- ProcessorMetrics with JvmCpuMeterConventions
- JvmMemoryMetrics with JvmMemoryMeterConventions
- JvmThreadMetrics with JvmThreadMeterConventions
- ClassLoaderMetrics with JvmClassLoadingMeterConventions
See gh-47935
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit introduces a failure analyzer implementation that provides
actionable guidance when Testcontainers fails to detect a running
Docker-compatible environment.
See gh-47797
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Introduce NullMarkedExtension for ArchitectureCheck, which provides
functionality to configure packages to ignore in nullability checks and
to enable or disable the extension.
See gh-47596
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit aligns the file charset between Log4j2 and Logback.
Prior to this commit, there was an inconsistency between the two: Log4j2
used UTF-8, while Logback used Charset.defaultCharset(), which is
platform-dependent.
See gh-46846
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, it wasn't possible to write a test to verify that
a specific ArchRule applied only to a specific SourceSet.
This PR rewrites `ArchitectureCheckTests` to support different sources
and also adds functionality to configure the plugin.
With these changes, all tests now verify not only the
`checkArchitectureMain` task but also `checkArchitectureTest`.
See gh-46822
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, SpringLiquibaseCustomizer had a private modifier,
which breaks Spring AOT.
See gh-46752
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit removes Boot's StreamBuilderFactoryBeanCustomizer and
updates KafkaStreamsAnnotationDrivenConfiguration to use
Kafka's StreamsBuilderFactoryBeanConfigurer instead of the
nested class KafkaStreamsFactoryBeanConfigurer.
This aligns more closely with how configuration is typically applied.
See gh-46675
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit configures ReactorClientHttpConnectorBuilder with the
ReactorResourceFactory bean from the context.
See gh-46673
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Previously, only a single TaskDecorator bean, if unique, was applied
to the auto-configured TaskExecutor or Scheduler. With this change,
if multiple TaskDecorator beans are defined, they will be combined
into a `CompositeTaskDecorator` and applied accordingly.
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
See gh-45302
Introduce @EnabledOnLocale annotation to enable or disable tests
based on the system's default locale.
See gh-46211
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commits registers LazyInitializationExcludeFilter to exclude
NettyAutoConfiguration from global lazy init.
See gh-46164
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit adds the same conditions that control some observation
aspects to control the creation of an `ObservedAspect` bean. It now is
guarded by `management.observations.annotations.enabled` and
`micrometer.observations.annotations.enabled`.
See gh-45601
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Before this commit, the credential helper used the serverUrl from
the Map.Entry<String,Auth> as a fallback. However, the helper only uses
the email from the auths.
See gh-45345
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Add the `spring.test.print-condition-evaluation-report` property
to enable or disable the conditional evaluation report
when ApplicationContext fails to start.
See gh-45268
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Update the Maven and Gradle plugins to make use of the new Docker
configuration authentication support.
See gh-45269
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
Add `DockerRegistryAuthentication` implementation that uses standard
Docker config to authenticate requests.
Prior to this commit, we only supported username/password and token
based authentication. This commit allows authentication based on
the contents of the Docker configuration file, including support
for executing credential helpers.
See gh-45269
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
Update `DockerConfigurationMetadata` with support for `credsStore`,
`credHelpers` and `auth` sections. These values will be required to
support credential helper based authentication.
See gh-45269
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Update `ApplicationResourceLoader` so that the `preferFileResolution`
flag now also supports `FilteredReactiveWebContextResource`.
See gh-44535
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Add validation for the maximum JSON nesting depth in the JsonValueWriter.
This helps prevent a StackOverflowError that can potentially occur due
to excessive recursion when dealing with deeply nested JSON structures.
See gh-44627
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Document that `applicationTaskExecutor` as a bootstrap executor for the
context if no `bootstrapExecutor` bean is defined.
See gh-45232
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, certain rules, like BeanPostProcessor,
did not work with external classes. This commit ensures that
ArchRules are executed within a context ClassLoader that includes
all classes from the compile classpath.
See gh-45202
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit adds support for the standard 'optional:' prefix in Log4j2
override file locations, ensuring missing files are ignored without
throwing exceptions.
See gh-44488
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit addresses an issue where placeholders like {foo}
remain as {foo} if the message is the same as its code.
See gh-45212
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, serializing `java.nio.file.Path` caused
a StackOverflowError because `Path.iterator()` always returns itself
as the first element of the iterator, which results in a
StackOverflowError.
This commit serializes `java.nio.file.Path` as JSON String.
See gh-44507
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, RestClientSsl always used the
default settings from ClientHttpRequestFactorySettings, overriding any
user-defined settings (e.g., HttpClientProperties).
With this commit, RestClientSsl now respects and uses
ClientHttpRequestFactorySettings when they are provided.
See gh-44979
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Update CassandraRepositoriesAutoConfigurationTests to use the correct
'spring.data.cassandra.repositories.type' property.
See gh-44942
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Add tests for decoding percent-encoded strings with non-ASCII characters
and multi-byte sequences.
See gh-44944
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit adds customizers for both OtlpHttpSpanExporterBuilder
and OtlpGrpcSpanExporterBuilder.
See gh-44900
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, the SSL file hot reloading feature would
create file watchers for all configured locations and would resolve
symbolic links if they're found as registrations.
This arrangement would work for typical Let's Encrypt setups, but
would not get notified of consecutive changes for k8s setups.
Kubernetes uses a mix of symlinks and atomic file moves to update
secrets.
This commit not only tracks changes to symlinks targets, but also
to the original symlink.
Closes gh-44807
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
[brian.clozel@broadcom.com: apply code conventions]
Signed-off-by: Brian Clozel <brian.clozel@broadcom.com>
Update OpenTelemetryResourceAttributes to use StringUtils.uriDecode(...)
as it provides the same functionality as the custom decode(...) method.
See gh-44677
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit adds the following properties to allow customization
of the BatchSpanProcessor:
- management.tracing.opentelemetry.export.include-unsampled
- management.tracing.opentelemetry.export.timeout
- management.tracing.opentelemetry.export.max-batch-size
- management.tracing.opentelemetry.export.max-queue-size
- management.tracing.opentelemetry.export.schedule-delay
Default values were taken from BatchSpanProcessorBuilder.
See gh-44655
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit introduces the OpenTelementryAttributes class that fetches
OTEL_RESOURCE_ATTRIBUTES and OTEL_SERVICE_NAME environment variables
and merges it with user-defined resource attributes.
Besides that, this commit includes spec-compliant proper handling of
OTEL_RESOURCE_ATTRIBUTES in OtlpMetricsPropertiesConfigAdapter and
OpenTelemetryAutoConfiguration.
See gh-44394
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, LogbackLoggingSystemProperties
doesn't respect Console.charset(). It used Charset.getDefaultCharset()
for logback and UTF-8 for log42j as defaults.
This commit changes the behaviour of LogbackLoggingSystemProperties to use
Console.charset() when available. If no console is present, the default
charset is used instead.
These changes bring consistency across logging implementations.
See gh-43118
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit allows configuring the MongoDB connection
protocol using the 'spring.data.mongodb.protocol' property.
See gh-44366
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit introduces a new constructor in `DockerApi`
that accepts `DockerLogger` as a parameter.
The `DockerLogger` is a pretty simple callback interface used to
provide DockerApi output logging.
See gh-44412
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Update Log42JLoggingSystem to register Boot's StatusListener
instead of resetting the fallbackListener during initialization.
This fixes an issue when resetting the fallback listener leads to
closing standard streams.
See gh-44380
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit uses @argfile syntax for classpath argument on Windows OS
to avoid creating a command-line that is too long.
See gh-44305
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit adds the stop or destroy failure as a suppressed
exception if either ServletWebServerApplicationContext or
ReactiveWebServerApplicationContext refresh fails.
See gh-44310
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit improves LdapAutoConfiguration to also auto-configure an
ObjectDirectoryMapper and configure LdapTemplate to use it.
See gh-44290
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Prior to this commit, if ReactiveWebServerApplicationContext failed to
refresh, only WebServer.stop() was called.
This commit additionally invokes WebServer.destroy(), aligning
the behavior with ServletWebServerApplicationContext when a refresh
failure occurs.
See gh-44134
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Add new methods to `QuartzEndpoint` and `QuartzEndpointWebExtension`
to allow a Quartz job to be triggered on demand.
See gh-43086
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit adds a configuration property to configure the default
content types with Spring MVC.
See gh-44040
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Before this commit, the generated name for the inner class had the
wrong format <package>.<parent>.<child> (canonical name).
GraalVM expects $ to separate the parent from the inner class.
This commit updates SpringBootJoranConfigurator to generate
an appropriate format for a class name. Specifically, an inner class
should be separated by a dollar sign, not a dot.
See gh-44021
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Fix `SystemStatusListener` so that superfluous output is not
printed when starting an application. This change ensures that
the `SystemStatusListener` is not added twice, and that
retrospective logging only occurs when `debug` is true.
See gh-43931
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Update `LogbackLoggingSystem` so that the `OnErrorConsoleStatusListener`
is also registered when loading a custom Logback configuration file.
See gh-43931
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Add RuntimeHints for GraylogExtendedLogFormatProperties,
StructuredLoggingJsonProperties and ElasticCommonSchemaProperties
properties.
Add BeanFactoryInitializationAotProcessor to register RuntimeHints
for a custom StructuredLoggingJsonMembersCustomizer.
See gh-43862
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
Before this commit, any exceptions thrown in Logback encoders
were just swallowed. This commit adds the FilteringStatusListener
that delegates to OnErrorConsoleStatusListener to print any errors
that happened in logback encoders.
See gh-43575
Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>