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);
>      }
>
>
>

Reply via email to