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