This change is incorrect, binary compatibility was NOT broken as the JLS specifies that:
"Changes to the throws clause of methods or constructors do not break compatibility with pre-existing binaries; these clauses are checked only at compile time." See https://docs.oracle.com/javase/specs/jls/se8/html/jls-13.html#jls-13.4.21 The Maven default goal runs JApiCmp which checks this. This free us to clean up our code. If a user is actually reconciling sources, then, yes, they may have to adjust call sites, which ok. Binary compatibility is maintained. Gary On Sat, Jun 18, 2022, 23:59 <mattjuntu...@apache.org> wrote: > This is an automated email from the ASF dual-hosted git repository. > > mattjuntunen pushed a commit to branch master > in repository > https://gitbox.apache.org/repos/asf/commons-configuration.git > > > The following commit(s) were added to refs/heads/master by this push: > new 2e39ef6b fixing binary incompatibilities with v2.7 > 2e39ef6b is described below > > commit 2e39ef6b3909425db1ccf6c1bb58d76f953b5f9a > Author: Matt Juntunen <mattjuntu...@apache.org> > AuthorDate: Sat Jun 18 23:59:17 2022 -0400 > > fixing binary incompatibilities with v2.7 > --- > .../apache/commons/configuration2/YAMLConfiguration.java | 15 > ++++++++------- > .../configuration2/builder/ConfigurationBuilderEvent.java | 2 +- > .../org/apache/commons/configuration2/event/Event.java | 2 +- > .../commons/configuration2/interpol/ConstantLookup.java | 4 ++-- > 4 files changed, 12 insertions(+), 11 deletions(-) > > diff --git > a/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java > b/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java > index 705c2a21..4732e3f3 100644 > --- > a/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java > +++ > b/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java > @@ -17,6 +17,12 @@ > > package org.apache.commons.configuration2; > > +import java.io.IOException; > +import java.io.InputStream; > +import java.io.Reader; > +import java.io.Writer; > +import java.util.Map; > + > import org.apache.commons.configuration2.ex.ConfigurationException; > import org.apache.commons.configuration2.ex.ConfigurationRuntimeException; > import org.apache.commons.configuration2.io.InputStreamSupport; > @@ -27,12 +33,6 @@ import org.yaml.snakeyaml.Yaml; > import org.yaml.snakeyaml.constructor.Constructor; > import org.yaml.snakeyaml.representer.Representer; > > -import java.io.IOException; > -import java.io.InputStream; > -import java.io.Reader; > -import java.io.Writer; > -import java.util.Map; > - > /** > * <p> > * A specialized hierarchical configuration class that is able to parse > YAML documents. > @@ -84,7 +84,8 @@ public class YAMLConfiguration extends > AbstractYAMLBasedConfiguration implements > dump(out, options); > } > > - public void dump(final Writer out, final DumperOptions options) { > + public void dump(final Writer out, final DumperOptions options) > + throws ConfigurationException, IOException { > final Yaml yaml = new Yaml(options); > > yaml.dump(constructMap(getNodeModel().getNodeHandler().getRootNode()), > out); > } > diff --git > a/src/main/java/org/apache/commons/configuration2/builder/ConfigurationBuilderEvent.java > b/src/main/java/org/apache/commons/configuration2/builder/ConfigurationBuilderEvent.java > index 9f944b44..f4aa7f77 100644 > --- > a/src/main/java/org/apache/commons/configuration2/builder/ConfigurationBuilderEvent.java > +++ > b/src/main/java/org/apache/commons/configuration2/builder/ConfigurationBuilderEvent.java > @@ -33,7 +33,7 @@ import org.apache.commons.configuration2.event.EventType; > */ > public class ConfigurationBuilderEvent extends Event { > > - private static final long serialVersionUID = 1L; > + private static final long serialVersionUID = -7488811456039315104L; > > /** The common super type for all events related to configuration > builders. */ > public static final EventType<ConfigurationBuilderEvent> ANY = new > EventType<>(Event.ANY, "BUILDER"); > diff --git > a/src/main/java/org/apache/commons/configuration2/event/Event.java > b/src/main/java/org/apache/commons/configuration2/event/Event.java > index 11f1bce7..8845c4fe 100644 > --- a/src/main/java/org/apache/commons/configuration2/event/Event.java > +++ b/src/main/java/org/apache/commons/configuration2/event/Event.java > @@ -39,7 +39,7 @@ public class Event extends EventObject { > */ > public static final EventType<Event> ANY = new EventType<>(null, > "ANY"); > > - private static final long serialVersionUID = 1L; > + private static final long serialVersionUID = -8168310049858198944L; > > /** > * Constant for the format used in toString() for a property > representation. > diff --git > a/src/main/java/org/apache/commons/configuration2/interpol/ConstantLookup.java > b/src/main/java/org/apache/commons/configuration2/interpol/ConstantLookup.java > index 89ecbe13..7351d289 100644 > --- > a/src/main/java/org/apache/commons/configuration2/interpol/ConstantLookup.java > +++ > b/src/main/java/org/apache/commons/configuration2/interpol/ConstantLookup.java > @@ -92,9 +92,9 @@ public class ConstantLookup implements Lookup { > * @param className the name of the class > * @param fieldName the name of the member field of that class to read > * @return the field's value > - * @throws ReflectiveOperationException if an error occurs > + * @throws Exception if an error occurs > */ > - protected Object resolveField(final String className, final String > fieldName) throws ReflectiveOperationException { > + protected Object resolveField(final String className, final String > fieldName) throws Exception { > return fetchClass(className).getField(fieldName).get(null); > } > > >