This is an automated email from the ASF dual-hosted git repository. garydgregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-configuration.git
commit dc33cda1600a24fa31649a23b07a0dec94e12a48 Author: Gary Gregory <[email protected]> AuthorDate: Sat Aug 22 11:40:35 2026 -0400 Fix SpotBugs USO_UNSAFE_METHOD_SYNCHRONIZATION in ReloadingCombinedConfigurationBuilder. --- src/changes/changes.xml | 1 + .../combined/ReloadingCombinedConfigurationBuilder.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index fac3b9088..1eb77ed1e 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -30,6 +30,7 @@ <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs USO_UNSAFE_METHOD_SYNCHRONIZATION in CombinedConfigurationBuilder.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs USO_UNSAFE_METHOD_SYNCHRONIZATION in FileBasedConfigurationBuilder.</action> <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs USO_UNSAFE_METHOD_SYNCHRONIZATION in MultiFileConfigurationBuilder.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix SpotBugs USO_UNSAFE_METHOD_SYNCHRONIZATION in ReloadingCombinedConfigurationBuilder.</action> <!-- ADD --> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 100 to 103.</action> diff --git a/src/main/java/org/apache/commons/configuration2/builder/combined/ReloadingCombinedConfigurationBuilder.java b/src/main/java/org/apache/commons/configuration2/builder/combined/ReloadingCombinedConfigurationBuilder.java index fbe868a4e..fc08defa6 100644 --- a/src/main/java/org/apache/commons/configuration2/builder/combined/ReloadingCombinedConfigurationBuilder.java +++ b/src/main/java/org/apache/commons/configuration2/builder/combined/ReloadingCombinedConfigurationBuilder.java @@ -70,6 +70,11 @@ public class ReloadingCombinedConfigurationBuilder extends CombinedConfiguration /** The reloading controller used by this builder. */ private ReloadingController reloadingController; + /** + * A lock object for synchronizing access. + */ + private final Object lock = new Object(); + /** * Creates a new instance of {@code ReloadingCombinedConfigurationBuilder}. No parameters are set. */ @@ -118,9 +123,7 @@ public class ReloadingCombinedConfigurationBuilder extends CombinedConfiguration final Collection<ReloadingController> subControllers = new LinkedList<>(); final ConfigurationBuilder<? extends HierarchicalConfiguration<?>> defBuilder = getDefinitionBuilder(); obtainReloadingController(subControllers, defBuilder); - getChildBuilders().forEach(b -> obtainReloadingController(subControllers, b)); - final CombinedReloadingController ctrl = new CombinedReloadingController(subControllers); ctrl.resetInitialReloadingState(); return ctrl; @@ -154,8 +157,10 @@ public class ReloadingCombinedConfigurationBuilder extends CombinedConfiguration * meaningful result before. */ @Override - public synchronized ReloadingController getReloadingController() { - return reloadingController; + public ReloadingController getReloadingController() { + synchronized (lock) { + return reloadingController; + } } /**
