It is OK with me because _binary_ compatibility is what matters most and
that is maintained.

If you are compiling your code against a new version of a library, then
changing source files is fair game IMO.

Gary

On Sun, Jun 19, 2022, 10:50 Matt Juntunen <matt.a.juntu...@gmail.com> wrote:

> Hello,
>
> The throw clauses in question are on protected methods. If a user had
> overridden these and then thrown an exception, they may have to modify
> their source in order to compile against 2.8. Is this ok from the
> point of view of our backwards compatibility guarantees?
>
> Regards,
> Matt J
>
> On Sun, Jun 19, 2022 at 2:26 AM Gary Gregory <garydgreg...@gmail.com>
> wrote:
> >
> > 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);
> > >      }
> > >
> > >
> > >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to