Skip to content

Commit 1450671

Browse files
authored
Fixes #5112: add ObjectMapper.findAndAddModules(...) variant (#5114)
1 parent 9d7887b commit 1450671

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

release-notes/CREDITS

+2
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,5 @@ Andy Boothe (@sigpwned)
4444
Sébastien Deleuze (@sdeleuze)
4545
* Requested #5110: Add missing `ObjectMapper#createNonBlockingByteBufferParser()` method
4646
[3.0.0]
47+
* Requested #5112: Add a `MapperBuilder#findAndAddModules(ClassLoader)` variant
48+
[3.0.0]

release-notes/VERSION

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Versions: 3.x (for earlier see VERSION-2.x)
1313
to use `Supplier`
1414
#5110: Add missing `ObjectMapper#createNonBlockingByteBufferParser()` method
1515
(requested by Sébastien D)
16+
#5112: Add a `MapperBuilder#findAndAddModules(ClassLoader)` variant
17+
(requested by Sébastien D)
1618

1719
3.0.0-rc3 (13-Apr-2025)
1820

src/main/java/tools/jackson/databind/cfg/MapperBuilder.java

+18-4
Original file line numberDiff line numberDiff line change
@@ -1134,17 +1134,31 @@ public ServiceLoader<T> run() {
11341134
* addModules(builder.findModules());
11351135
*</code>
11361136
*<p>
1137-
* As with {@link #findModules()}, no caching is done for modules, so care
1138-
* needs to be taken to either create and share a single mapper instance;
1139-
* or to cache introspected set of modules.
1137+
* As with {@link #findModules()}, no caching is done for modules, so for
1138+
* performance reasons it may make sense to cache introspected set of modules
1139+
* if needed multiple times.
11401140
*/
11411141
public B findAndAddModules() {
11421142
return addModules(findModules());
11431143
}
11441144

1145+
/**
1146+
* Convenience method that is functionally equivalent to:
1147+
*<code>
1148+
* addModules(builder.findModules(classLoader));
1149+
*</code>
1150+
*<p>
1151+
* As with {@link #findModules(ClassLoader)}, no caching is done for modules, so for
1152+
* performance reasons it may make sense to cache introspected set of modules
1153+
* if needed multiple times.
1154+
*/
1155+
public B findAndAddModules(ClassLoader cl) {
1156+
return addModules(findModules(cl));
1157+
}
1158+
11451159
/**
11461160
* "Accessor" method that will expose set of registered modules, in addition
1147-
* order, to given handler.
1161+
* order, using {@code handler} given.
11481162
*/
11491163
public B withModules(Consumer<JacksonModule> handler) {
11501164
if (_modules != null) {

0 commit comments

Comments
 (0)