This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-configuration.git
commit ec0a9af49b6a15671f252946c824abc98bb39391 Author: Gary Gregory <[email protected]> AuthorDate: Wed Apr 1 22:39:07 2026 -0400 Add ConfigurationException.ConfigurationException(String, Object...) --- src/changes/changes.xml | 3 ++- .../builder/combined/BaseConfigurationBuilderProvider.java | 2 +- .../builder/combined/CombinedConfigurationBuilder.java | 4 ++-- .../commons/configuration2/ex/ConfigurationException.java | 11 +++++++++++ .../apache/commons/configuration2/io/DefaultFileSystem.java | 2 +- .../org/apache/commons/configuration2/io/FileHandler.java | 4 ++-- .../apache/commons/configuration2/io/FileLocatorUtils.java | 2 +- .../org/apache/commons/configuration2/io/VFSFileSystem.java | 8 +++----- .../commons/configuration2/resolver/CatalogResolver.java | 2 +- 9 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index b8f06c7dd..9e4eee234 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -23,10 +23,11 @@ <author email="[email protected]">Apache Commons Community</author> </properties> <body> - <release version="2.13.1" date="YYYY-MM-DD" description="Minor release with new features and updated dependencies; requires Java 8 or above."> + <release version="2.14.0" date="YYYY-MM-DD" description="Minor release with new features and updated dependencies; requires Java 8 or above."> <!-- FIX --> <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Apache RAT plugin console warnings.</action> <!-- ADD --> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Add ConfigurationException.ConfigurationException(String, Object...).</action> <!-- UPDATE --> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 92 to 97.</action> <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-text from 1.14.0 to 1.15.0.</action> diff --git a/src/main/java/org/apache/commons/configuration2/builder/combined/BaseConfigurationBuilderProvider.java b/src/main/java/org/apache/commons/configuration2/builder/combined/BaseConfigurationBuilderProvider.java index e33046ae7..a143688c6 100644 --- a/src/main/java/org/apache/commons/configuration2/builder/combined/BaseConfigurationBuilderProvider.java +++ b/src/main/java/org/apache/commons/configuration2/builder/combined/BaseConfigurationBuilderProvider.java @@ -186,7 +186,7 @@ public class BaseConfigurationBuilderProvider implements ConfigurationBuilderPro protected String determineBuilderClass(final ConfigurationDeclaration decl) throws ConfigurationException { if (decl.isReload()) { if (getReloadingBuilderClass() == null) { - throw new ConfigurationException("No support for reloading for builder class " + getBuilderClass()); + throw new ConfigurationException("No support for reloading for builder class %s", getBuilderClass()); } return getReloadingBuilderClass(); } diff --git a/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java b/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java index 603b9249b..bd1b9b90a 100644 --- a/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java +++ b/src/main/java/org/apache/commons/configuration2/builder/combined/CombinedConfigurationBuilder.java @@ -335,7 +335,7 @@ public class CombinedConfigurationBuilder extends BasicConfigurationBuilder<Comb private ConfigurationBuilder<? extends Configuration> createConfigurationBuilder(final ConfigurationDeclaration decl) throws ConfigurationException { final ConfigurationBuilderProvider provider = providerForTag(decl.getConfiguration().getRootElementName()); if (provider == null) { - throw new ConfigurationException("Unsupported configuration source: " + decl.getConfiguration().getRootElementName()); + throw new ConfigurationException("Unsupported configuration source: %s", decl.getConfiguration().getRootElementName()); } final ConfigurationBuilder<? extends Configuration> builder = provider.getConfigurationBuilder(decl); @@ -910,7 +910,7 @@ public class CombinedConfigurationBuilder extends BasicConfigurationBuilder<Comb } final ConfigurationBuilder<? extends Configuration> builder = sourceData.getNamedBuilder(name); if (builder == null) { - throw new ConfigurationException("Builder cannot be resolved: " + name); + throw new ConfigurationException("Builder cannot be resolved: %s", name); } return builder; } diff --git a/src/main/java/org/apache/commons/configuration2/ex/ConfigurationException.java b/src/main/java/org/apache/commons/configuration2/ex/ConfigurationException.java index d1658c859..b6fae7284 100644 --- a/src/main/java/org/apache/commons/configuration2/ex/ConfigurationException.java +++ b/src/main/java/org/apache/commons/configuration2/ex/ConfigurationException.java @@ -42,6 +42,17 @@ public class ConfigurationException extends Exception { super(message); } + /** + * Constructs a new {@code ConfigurationException} with specified detail message. + * + * @param format the error message for for {@link String#format(String, Object...)}. + * @param params the error parameters for for {@link String#format(String, Object...)}. + * @since 2.14.0 + */ + public ConfigurationException(final String format, Object... params) { + super(String.format(format, params)); + } + /** * Constructs a new {@code ConfigurationException} with specified detail message and nested {@code Throwable}. * diff --git a/src/main/java/org/apache/commons/configuration2/io/DefaultFileSystem.java b/src/main/java/org/apache/commons/configuration2/io/DefaultFileSystem.java index 358c2df25..bbfe4125b 100644 --- a/src/main/java/org/apache/commons/configuration2/io/DefaultFileSystem.java +++ b/src/main/java/org/apache/commons/configuration2/io/DefaultFileSystem.java @@ -110,7 +110,7 @@ public class DefaultFileSystem extends FileSystem { if (file != null && !file.exists()) { final File parent = file.getParentFile(); if (parent != null && !parent.exists() && !parent.mkdirs()) { - throw new ConfigurationException("Cannot create path: " + parent); + throw new ConfigurationException("Cannot create path: %s", parent); } } } diff --git a/src/main/java/org/apache/commons/configuration2/io/FileHandler.java b/src/main/java/org/apache/commons/configuration2/io/FileHandler.java index ba0acc293..970a35abc 100644 --- a/src/main/java/org/apache/commons/configuration2/io/FileHandler.java +++ b/src/main/java/org/apache/commons/configuration2/io/FileHandler.java @@ -585,7 +585,7 @@ public class FileHandler { try { url = FileLocatorUtils.toURL(file); } catch (final MalformedURLException e1) { - throw new ConfigurationException("Cannot create URL from file " + file); + throw new ConfigurationException("Cannot create URL from file %s", file); } load(url); @@ -964,7 +964,7 @@ public class FileHandler { } if (url == null) { - throw new ConfigurationException("Cannot locate configuration source " + fileName); + throw new ConfigurationException("Cannot locate configuration source %s", fileName); } save(url, locator); } diff --git a/src/main/java/org/apache/commons/configuration2/io/FileLocatorUtils.java b/src/main/java/org/apache/commons/configuration2/io/FileLocatorUtils.java index 6021dcf92..f2dcbae94 100644 --- a/src/main/java/org/apache/commons/configuration2/io/FileLocatorUtils.java +++ b/src/main/java/org/apache/commons/configuration2/io/FileLocatorUtils.java @@ -508,7 +508,7 @@ public final class FileLocatorUtils { public static URL locateOrThrow(final FileLocator locator) throws ConfigurationException { final URL url = locate(locator); if (url == null) { - throw new ConfigurationException("Could not locate: " + locator); + throw new ConfigurationException("Could not locate: %s", locator); } return url; } diff --git a/src/main/java/org/apache/commons/configuration2/io/VFSFileSystem.java b/src/main/java/org/apache/commons/configuration2/io/VFSFileSystem.java index d0a235a50..061e6b524 100644 --- a/src/main/java/org/apache/commons/configuration2/io/VFSFileSystem.java +++ b/src/main/java/org/apache/commons/configuration2/io/VFSFileSystem.java @@ -107,13 +107,11 @@ public class VFSFileSystem extends DefaultFileSystem { } final FileContent content = file.getContent(); if (content == null) { - final String msg = "Cannot access content of " + file.getName().getFriendlyURI(); - throw new ConfigurationException(msg); + throw new ConfigurationException("Cannot access content of %s", file.getName().getFriendlyURI()); } return content.getInputStream(); } catch (final FileSystemException fse) { - final String msg = "Unable to access " + url.toString(); - throw new ConfigurationException(msg, fse); + throw new ConfigurationException("Unable to access " + url.toString(), fse); } } @@ -172,7 +170,7 @@ public class VFSFileSystem extends DefaultFileSystem { final FileContent content = file.getContent(); if (content == null) { - throw new ConfigurationException("Cannot access content of " + url); + throw new ConfigurationException("Cannot access content of %s", url); } return content.getOutputStream(); } catch (final FileSystemException fse) { diff --git a/src/main/java/org/apache/commons/configuration2/resolver/CatalogResolver.java b/src/main/java/org/apache/commons/configuration2/resolver/CatalogResolver.java index 580cf6e57..241f4f4c5 100644 --- a/src/main/java/org/apache/commons/configuration2/resolver/CatalogResolver.java +++ b/src/main/java/org/apache/commons/configuration2/resolver/CatalogResolver.java @@ -420,7 +420,7 @@ public class CatalogResolver implements EntityResolver { try { final URL url = locate(fs, null, resolved); if (url == null) { - throw new ConfigurationException("Could not locate " + resolved); + throw new ConfigurationException("Could not locate %s", resolved); } final InputStream inputStream = fs.getInputStream(url); final InputSource inputSource = new InputSource(resolved);
