All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
ARGUS-48064
- Add
-E
option to BootStrap cmdline, which will make BootStrap treat any environment variable as a system property. - This allows injecting environment variables directly
ARGUS-47032
- Upgraded dependencies
- Deprecated junit-docker package
ARGUS-34837
- Changed
ComponentContainer
methodsinitialize()
anddestroy()
to run startup and shutdown in parallel threads where possible to reduce startup/shutdown times.
ARGUS-33367
- Upgraded nexus-staging-maven-plugin in order to fix deployment to Maven Central.
ARGUS-32474
- Made project build with JDK17 (failed on javadoc generation).
- Upgraded RestEasy to the latest version compatible with docker-client.
- Upgraded other dependencies to the newest minor/bugfix versions.
ARGUS-31958
- Added readFullStream(InputStream is):byte[] method to StreamUtils
ARGUS-31803
- Added default uncaught exception handling to ComponentContainer to ensure logging of all exceptions.
ARGUS-31800
- Added
AppendUtils.appendCollection()
which handles collections with a given max size.
ARGUS-28077
- DockerExtension and DockerResource will now pull docker images by default
- This behavior can be turned off by setting setSkipPullDockerImage(true)
ARGUS-31350
- Fixed ClassCastException in GuiceBeanProvider for beans with recursive generic types, such as
Map<String, List<String>>
.
ARGUS-30895
- Fixed an issue in GuiceBeanProvider where beans with generic types were omitted due to duplicated keys.
- Changed GuiceBeanProvider to throw an IllegalStateException if duplicated keys are detected.
ARGUS-29930
- Added
SetUtils.ifEmpty(set, defaultValue)
which returnsset(defaultValue)
if the set is empty/null
ARGUS-29459
- Added
LocalLoggingContext
to simplify setting a specific logging context for a specified block of code. - Added
DeprecatedLoggingContext
to simplify adding a "deprecated" logging context variable for a specified block of code.
ARGUS-28992
- Exposing all context variables in
LoggingContext.getAll()
ARGUS-26745
- Upgraded log4j to fix CVE-2021-44832 and CVE-2021-45105.
- Upgraded other dependencies to the newest versions.
ARGUS-26379
- Upgraded log4j to fix CVE-2021-45046 aka Log4Shell.
ARGUS-26379
- Upgraded log4j to fix CVE-2021-44228 aka Log4Shell.
- Upgraded other dependencies to the newest versions.
ARGUS-26251
- Log message as raw (unformatted) message if there are no string parameters.
ARGUS-24979
- Added option
skipReachabilityCheck
toDockerResource
andDockerExtension
which will avoid the reachability check against the running Docker container. Useful in the cases where applications implement their own logic.
ARGUS-24906
- Upgraded dependencies to the newest versions.
ARGUS-22965
- Upgraded Guice to version 5.0.1. The container module supports both version 4.2 and 5.0 of Guice and the dependency is declared with the provided scope. Because of that, users can decide which version of Guice to utilize.
- Upgraded other dependencies to the newest bugfix versions.
ARGUS-22838
- Upgraded dependencies to the newest versions.
ARGUS-22023
- Added function for subtracting one set from the other: SetUtils.difference
ARGUS-20874
- Upgraded all dependencies to the newest versions.
- Force upgraded httpclient and smallrye-config to fix vulnerabilities from transitive dependencies.
- Use RESTEasy as JAX-RS client instead of Jersey for docker-client.
ARGUS-18834
- ListUtils.list() and SetUtils.set() will omit any empty elements in the input array/collection.
ARGUS-17574
- Added jupiter-docker module as a port of junit-docker to JUnit 5, i.e. implementing DockerResource (and subclasses) as JUnit 5 extensions.
- DockerExtension (and subclasses) no longer expose methods to manually truncate data. Instead, all extensions now perform truncation automatically after each test using @AfterEach semantics.
Upgrade notes:
- Instead of using @ClassRule register the new extensions using @RegisterExtension.
- Remove manual truncation of data with truncate() or deleteIndices() (these methods have been removed).
- ElasticSearchDockerExtension no longer deletes all indices by default. Specify "_all" when registering the extension instead.
ARGUS-17574
- Switched to a maintained fork of Spotify's docker-client (org.mandas:docker-client).
ARGUS-17415
- Increased default offset range in AvailablePortFinder and added method to allow specifying a custom offset range.
ARGUS-17074
- Upgrade JUnit from 4.12 to 4.13.
- Upgrade Log4j from 2.12.1 to 2.13.0.
- Upgrade Mockito from 3.0.0 to 3.2.4.
- Upgrade Spring from 5.1.9.RELEASE to 5.2.3.RELEASE.
ARGUS-14772
- Avoid duplicate objects in dependency tree, when same singleton object is registered via multiple identifiers
- Upgrade Log4j from 2.11.2 to 2.12.1.
- Upgrade Mockito from 2.27.0 to 3.0.0.
- Upgrade Spring from 5.1.7.RELEASE to 5.1.9.RELEASE.
ARGUS-14665
- New interface DependencyProvider allows provider singletons to declare their provided objects, to allow dependency resolvers to backtrack the providers from their provided objects.
- Added method scan() to ComponentDependencyResolver, allowing resolver to detect DependencyProvider implementations before resolving dependencies.
- Updated ComponentContainer to invoke ComponentDependencyResolver.scan() before resolving dependencies.
- All Singleton providers with a LifeCycleAspect should implement DependencyProvider and return the provided object when getProvidedDependency() is invoked. If provider has not created any object yet, returning null is acceptable.
- This will improve dependency detection for dependencies declared on provided objects, where the LifecycleAspect is on the provider itself.
class MyDependency{...}
@Singleton
class MyDependingObject implements LifecycleAspect {
/** This dependency points to an object without a LifecycleAspect.
* However, since the provider declares it as a provided object, the provider will also be returned as a dependency.
**/
@Dependency
MyDependency dependency;
}
/**
* Provider declares itself as a DependencyProvider, and will return the provided object on getProvidedDependency()
*/
@Singleton
class MyDependencyProvider implements Provider<MyDependency>, DependencyProvider, LifecycleAspect {
MyDependency obj;
MyDependency get() {
obj = new MyDependency();
return obj;
}
Object getProvidedDependency() {
return obj;
}
}