If you add methods to an existing interface, this will break binary
compatibility unless you add them as default methods. Or am i missing
something?

Gary

On Wed, Jan 5, 2022, 14:10 <ma...@apache.org> wrote:

> This is an automated email from the ASF dual-hosted git repository.
>
> markt pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
>
>
> The following commit(s) were added to refs/heads/master by this push:
>      new 28eb33b  Update MXBean for use of Duration with BasicDataSource
> 28eb33b is described below
>
> commit 28eb33b5b3551de2e630a4cb59dc3bc5506f8114
> Author: Mark Thomas <ma...@apache.org>
> AuthorDate: Wed Jan 5 19:07:51 2022 +0000
>
>     Update MXBean for use of Duration with BasicDataSource
> ---
>  .../org/apache/commons/dbcp2/BasicDataSource.java  |  7 ++
>  .../org/apache/commons/dbcp2/DataSourceMXBean.java | 77
> ++++++++++++++++++++++
>  .../commons/dbcp2/TestBasicDataSourceMXBean.java   | 37 +++++++++++
>  3 files changed, 121 insertions(+)
>
> diff --git a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
> b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
> index 07615d2..bb451cd 100644
> --- a/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
> +++ b/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
> @@ -1064,6 +1064,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       * @return the maximum permitted duration of a connection.
>       * @since 2.10.0
>       */
> +    @Override
>      public Duration getMaxConnDuration() {
>          return maxConnDuration;
>      }
> @@ -1123,6 +1124,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       * @return the maxWaitDuration property value.
>       * @since 2.10.0
>       */
> +    @Override
>      public synchronized Duration getMaxWaitDuration() {
>          return this.maxWaitDuration;
>      }
> @@ -1147,6 +1149,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       * @see #setMinEvictableIdle(Duration)
>       * @since 2.10.0
>       */
> +    @Override
>      public synchronized Duration getMinEvictableIdleDuration() {
>          return this.minEvictableIdleDuration;
>      }
> @@ -1324,6 +1327,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       * @return Timeout before an abandoned connection can be removed.
>       * @since 2.10.0
>       */
> +    @Override
>      public Duration getRemoveAbandonedTimeoutDuration() {
>          return abandonedConfig == null ? Duration.ofSeconds(300) :
> abandonedConfig.getRemoveAbandonedTimeoutDuration();
>      }
> @@ -1353,6 +1357,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       *         there are minIdle idle connections in the pool
>       * @since 2.10.0
>       */
> +    @Override
>      public synchronized Duration getSoftMinEvictableIdleDuration() {
>          return softMinEvictableIdleDuration;
>      }
> @@ -1429,6 +1434,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       * @see #setDurationBetweenEvictionRuns(Duration)
>       * @since 2.10.0
>       */
> +    @Override
>      public synchronized Duration getDurationBetweenEvictionRuns() {
>          return this.durationBetweenEvictionRuns;
>      }
> @@ -1482,6 +1488,7 @@ public class BasicDataSource implements DataSource,
> BasicDataSourceMXBean, MBean
>       *
>       * @return the timeout in seconds before connection validation
> queries fail.
>       */
> +    @Override
>      public Duration getValidationQueryTimeoutDuration() {
>          return validationQueryTimeoutDuration;
>      }
> diff --git a/src/main/java/org/apache/commons/dbcp2/DataSourceMXBean.java
> b/src/main/java/org/apache/commons/dbcp2/DataSourceMXBean.java
> index 56fb5c8..9922542 100644
> --- a/src/main/java/org/apache/commons/dbcp2/DataSourceMXBean.java
> +++ b/src/main/java/org/apache/commons/dbcp2/DataSourceMXBean.java
> @@ -17,6 +17,7 @@
>  package org.apache.commons.dbcp2;
>
>  import java.sql.SQLException;
> +import java.time.Duration;
>
>  /**
>   * Defines the methods that will be made available via
> @@ -138,10 +139,21 @@ public interface DataSourceMXBean {
>      boolean getLogExpiredConnections();
>
>      /**
> +     * See {@link BasicDataSource#getMaxConnDuration()}.
> +     *
> +     * @return {@link BasicDataSource#getMaxConnDuration()}.
> +     * @since 2.10.0
> +     */
> +    Duration getMaxConnDuration();
> +
> +    /**
>       * See {@link BasicDataSource#getMaxConnLifetimeMillis()}.
>       *
>       * @return {@link BasicDataSource#getMaxConnLifetimeMillis()}.
> +     *
> +     * @deprecated Use {@link #getMaxConnDuration()}.
>       */
> +    @Deprecated
>      long getMaxConnLifetimeMillis();
>
>      /**
> @@ -166,17 +178,39 @@ public interface DataSourceMXBean {
>      int getMaxTotal();
>
>      /**
> +     * See {@link BasicDataSource#getMaxWaitDuration()}.
> +     *
> +     * @return {@link BasicDataSource#getMaxWaitDuration()}.
> +     * @since 2.10.0
> +     */
> +    Duration getMaxWaitDuration();
> +
> +    /**
>       * See {@link BasicDataSource#getMaxWaitMillis()}.
>       *
>       * @return {@link BasicDataSource#getMaxWaitMillis()}.
> +     *
> +     * @deprecated Use {@link #getMaxWaitDuration()}.
>       */
> +    @Deprecated
>      long getMaxWaitMillis();
>
>      /**
> +     * See {@link BasicDataSource#getMinEvictableIdleDuration()}.
> +     *
> +     * @return {@link BasicDataSource#getMinEvictableIdleDuration()}.
> +     * @since 2.10.0
> +     */
> +    Duration getMinEvictableIdleDuration();
> +
> +    /**
>       * See {@link BasicDataSource#getMinEvictableIdleTimeMillis()}.
>       *
>       * @return {@link BasicDataSource#getMinEvictableIdleTimeMillis()}.
> +     *
> +     * @deprecated Use {@link #getMinEvictableIdleDuration()}.
>       */
> +    @Deprecated
>      long getMinEvictableIdleTimeMillis();
>
>      /**
> @@ -222,17 +256,39 @@ public interface DataSourceMXBean {
>      boolean getRemoveAbandonedOnMaintenance();
>
>      /**
> +     * See {@link BasicDataSource#getRemoveAbandonedTimeoutDuration()}.
> +     *
> +     * @return {@link
> BasicDataSource#getRemoveAbandonedTimeoutDuration()}.
> +     * @since 2.10.0
> +     */
> +    Duration getRemoveAbandonedTimeoutDuration();
> +
> +    /**
>       * See {@link BasicDataSource#getRemoveAbandonedTimeout()}.
>       *
>       * @return {@link BasicDataSource#getRemoveAbandonedTimeout()}.
> +     *
> +     * @deprecated Use {@link #getRemoveAbandonedTimeoutDuration()}.
>       */
> +    @Deprecated
>      int getRemoveAbandonedTimeout();
>
>      /**
> +     * See {@link BasicDataSource#getSoftMinEvictableIdleDuration()}.
> +     *
> +     * @return {@link BasicDataSource#getSoftMinEvictableIdleDuration()}.
> +     * @since 2.10.0
> +     */
> +    Duration getSoftMinEvictableIdleDuration();
> +
> +    /**
>       * See {@link BasicDataSource#getSoftMinEvictableIdleTimeMillis()}.
>       *
>       * @return {@link
> BasicDataSource#getSoftMinEvictableIdleTimeMillis()}.
> +     *
> +     * @deprecated Use {@link #getSoftMinEvictableIdleDuration()}.
>       */
> +    @Deprecated
>      long getSoftMinEvictableIdleTimeMillis();
>
>      /**
> @@ -257,10 +313,20 @@ public interface DataSourceMXBean {
>      boolean getTestWhileIdle();
>
>      /**
> +     * See {@link BasicDataSource#getDurationBetweenEvictionRuns()}.
> +     *
> +     * @return {@link BasicDataSource#getDurationBetweenEvictionRuns()}.
> +     * @since 2.10.0
> +     */
> +    Duration getDurationBetweenEvictionRuns();
> +
> +    /**
>       * See {@link BasicDataSource#getTimeBetweenEvictionRunsMillis()}.
>       *
>       * @return {@link BasicDataSource#getTimeBetweenEvictionRunsMillis()}.
> +     * @deprecated Use {@link #getDurationBetweenEvictionRuns()}.
>       */
> +    @Deprecated
>      long getTimeBetweenEvictionRunsMillis();
>
>      /**
> @@ -285,10 +351,21 @@ public interface DataSourceMXBean {
>      String getValidationQuery();
>
>      /**
> +     * See {@link BasicDataSource#getValidationQueryTimeoutDuration()}.
> +     *
> +     * @return {@link
> BasicDataSource#getValidationQueryTimeoutDuration()}.
> +     * @since 2.10.0
> +     */
> +    Duration getValidationQueryTimeoutDuration();
> +
> +    /**
>       * See {@link BasicDataSource#getValidationQueryTimeout()}.
>       *
>       * @return {@link BasicDataSource#getValidationQueryTimeout()}.
> +     *
> +     * @deprecated Use {@link #getValidationQueryTimeoutDuration()}.
>       */
> +    @Deprecated
>      int getValidationQueryTimeout();
>
>      /**
> diff --git
> a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSourceMXBean.java
> b/src/test/java/org/apache/commons/dbcp2/TestBasicDataSourceMXBean.java
> index bde0cbf..65d4276 100644
> --- a/src/test/java/org/apache/commons/dbcp2/TestBasicDataSourceMXBean.java
> +++ b/src/test/java/org/apache/commons/dbcp2/TestBasicDataSourceMXBean.java
> @@ -17,6 +17,8 @@
>
>  package org.apache.commons.dbcp2;
>
> +import java.time.Duration;
> +
>  import static org.junit.jupiter.api.Assertions.assertNull;
>
>  import org.junit.jupiter.api.Test;
> @@ -99,6 +101,11 @@ public class TestBasicDataSourceMXBean {
>          }
>
>          @Override
> +        public Duration getMaxConnDuration() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public long getMaxConnLifetimeMillis() {
>              return 0;
>          }
> @@ -119,11 +126,21 @@ public class TestBasicDataSourceMXBean {
>          }
>
>          @Override
> +        public Duration getMaxWaitDuration() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public long getMaxWaitMillis() {
>              return 0;
>          }
>
>          @Override
> +        public Duration getMinEvictableIdleDuration() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public long getMinEvictableIdleTimeMillis() {
>              return 0;
>          }
> @@ -164,11 +181,21 @@ public class TestBasicDataSourceMXBean {
>          }
>
>          @Override
> +        public Duration getRemoveAbandonedTimeoutDuration() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public int getRemoveAbandonedTimeout() {
>              return 0;
>          }
>
>          @Override
> +        public Duration getSoftMinEvictableIdleDuration() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public long getSoftMinEvictableIdleTimeMillis() {
>              return 0;
>          }
> @@ -189,6 +216,11 @@ public class TestBasicDataSourceMXBean {
>          }
>
>          @Override
> +        public Duration getDurationBetweenEvictionRuns() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public long getTimeBetweenEvictionRunsMillis() {
>              return 0;
>          }
> @@ -209,6 +241,11 @@ public class TestBasicDataSourceMXBean {
>          }
>
>          @Override
> +        public Duration getValidationQueryTimeoutDuration() {
> +            return Duration.ZERO;
> +        }
> +
> +        @Override
>          public int getValidationQueryTimeout() {
>              return 0;
>          }
>

Reply via email to