    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 * Unless required by applicable law or agreed to in writing, software
    012 * distributed under the License is distributed on an "AS IS" BASIS,
    013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 * See the License for the specific language governing permissions and
    015 * limitations under the License.
    016 */
    017package org.apache.commons.dbcp2;
    018
    019import java.sql.SQLException;
    020
    021/**
    022 * Defines the methods that will be made available via JMX.
    023 *
    024 * @since 2.0
    025 */
    026public interface BasicDataSourceMXBean {
    027
    028    /**
    029     * See {@link BasicDataSource#getAbandonedUsageTracking()}
    030     *
    031     * @return {@link BasicDataSource#getAbandonedUsageTracking()}
    032     */
    033    boolean getAbandonedUsageTracking();
    034
    035    /**
    036     * See {@link BasicDataSource#getDefaultAutoCommit()}
    037     *
    038     * @return {@link BasicDataSource#getDefaultAutoCommit()}
    039     */
    040    Boolean getDefaultAutoCommit();
    041
    042    /**
    043     * See {@link BasicDataSource#getDefaultReadOnly()}
    044     *
    045     * @return {@link BasicDataSource#getDefaultReadOnly()}
    046     */
    047    Boolean getDefaultReadOnly();
    048
    049    /**
    050     * See {@link BasicDataSource#getDefaultTransactionIsolation()}
    051     *
    052     * @return {@link BasicDataSource#getDefaultTransactionIsolation()}
    053     */
    054    int getDefaultTransactionIsolation();
    055
    056    /**
    057     * See {@link BasicDataSource#getDefaultCatalog()}
    058     *
    059     * @return {@link BasicDataSource#getDefaultCatalog()}
    060     */
    061    String getDefaultCatalog();
    062
    063    /**
    064     * See {@link BasicDataSource#getDefaultSchema()}
    065     *
    066     * @return {@link BasicDataSource#getDefaultSchema()}
    067     * @since 2.5.0
    068     */
    069    default String getDefaultSchema() {
    070        return null;
    071    }
    072
    073    /**
    074     * See {@link BasicDataSource#getCacheState()}
    075     *
    076     * @return {@link BasicDataSource#getCacheState()}
    077     */
    078    boolean getCacheState();
    079
    080    /**
    081     * See {@link BasicDataSource#getDriverClassName()}
    082     *
    083     * @return {@link BasicDataSource#getDriverClassName()}
    084     */
    085    String getDriverClassName();
    086
    087    /**
    088     * See {@link BasicDataSource#getLifo()}
    089     *
    090     * @return {@link BasicDataSource#getLifo()}
    091     */
    092    boolean getLifo();
    093
    094    /**
    095     * See {@link BasicDataSource#getMaxTotal()}
    096     *
    097     * @return {@link BasicDataSource#getMaxTotal()}
    098     */
    099    int getMaxTotal();
    100
    101    /**
    102     * See {@link BasicDataSource#getMaxIdle()}
    103     *
    104     * @return {@link BasicDataSource#getMaxIdle()}
    105     */
    106    int getMaxIdle();
    107
    108    /**
    109     * See {@link BasicDataSource#getMinIdle()}
    110     *
    111     * @return {@link BasicDataSource#getMinIdle()}
    112     */
    113    int getMinIdle();
    114
    115    /**
    116     * See {@link BasicDataSource#getInitialSize()}
    117     *
    118     * @return {@link BasicDataSource#getInitialSize()}
    119     */
    120    int getInitialSize();
    121
    122    /**
    123     * See {@link BasicDataSource#getMaxWaitMillis()}
    124     *
    125     * @return {@link BasicDataSource#getMaxWaitMillis()}
    126     */
    127    long getMaxWaitMillis();
    128
    129    /**
    130     * See {@link BasicDataSource#isPoolPreparedStatements()}
    131     *
    132     * @return {@link BasicDataSource#isPoolPreparedStatements()}
    133     */
    134    boolean isPoolPreparedStatements();
    135
    136    /**
    137     * See {@link BasicDataSource#isClearStatementPoolOnReturn()}
    138     *
    139     * @return {@link BasicDataSource#isClearStatementPoolOnReturn()}
    140     * @since 2.8.0
    141     */
    142    default boolean isClearStatementPoolOnReturn() {
    143        return false;
    144    }
    145
    146    /**
    147     * See {@link BasicDataSource#getMaxOpenPreparedStatements()}
    148     *
    149     * @return {@link BasicDataSource#getMaxOpenPreparedStatements()}
    150     */
    151    int getMaxOpenPreparedStatements();
    152
    153    /**
    154     * See {@link BasicDataSource#getTestOnCreate()}
    155     *
    156     * @return {@link BasicDataSource#getTestOnCreate()}
    157     */
    158    boolean getTestOnCreate();
    159
    160    /**
    161     * See {@link BasicDataSource#getTestOnBorrow()}
    162     *
    163     * @return {@link BasicDataSource#getTestOnBorrow()}
    164     */
    165    boolean getTestOnBorrow();
    166
    167    /**
    168     * See {@link BasicDataSource#getTimeBetweenEvictionRunsMillis()}
    169     *
    170     * @return {@link BasicDataSource#getTimeBetweenEvictionRunsMillis()}
    171     */
    172    long getTimeBetweenEvictionRunsMillis();
    173
    174    /**
    175     * See {@link BasicDataSource#getNumTestsPerEvictionRun()}
    176     *
    177     * @return {@link BasicDataSource#getNumTestsPerEvictionRun()}
    178     */
    179    int getNumTestsPerEvictionRun();
    180
    181    /**
    182     * See {@link BasicDataSource#getMinEvictableIdleTimeMillis()}
    183     *
    184     * @return {@link BasicDataSource#getMinEvictableIdleTimeMillis()}
    185     */
    186    long getMinEvictableIdleTimeMillis();
    187
    188    /**
    189     * See {@link BasicDataSource#getSoftMinEvictableIdleTimeMillis()}
    190     *
    191     * @return {@link BasicDataSource#getSoftMinEvictableIdleTimeMillis()}
    192     */
    193    long getSoftMinEvictableIdleTimeMillis();
    194
    195    /**
    196     * See {@link BasicDataSource#getTestWhileIdle()}
    197     *
    198     * @return {@link BasicDataSource#getTestWhileIdle()}
    199     */
    200    boolean getTestWhileIdle();
    201
    202    /**
    203     * See {@link BasicDataSource#getNumActive()}
    204     *
    205     * @return {@link BasicDataSource#getNumActive()}
    206     */
    207    int getNumActive();
    208
    209    /**
    210     * See {@link BasicDataSource#getNumIdle()}
    211     *
    212     * @return {@link BasicDataSource#getNumIdle()}
    213     */
    214    int getNumIdle();
    215
    216    /**
    217     * See {@link BasicDataSource#getPassword()}
    218     *
    219     * @return {@link BasicDataSource#getPassword()}
    220     */
    221    String getPassword();
    222
    223    /**
    224     * See {@link BasicDataSource#getUrl()}
    225     *
    226     * @return {@link BasicDataSource#getUrl()}
    227     */
    228    String getUrl();
    229
    230    /**
    231     * See {@link BasicDataSource#getUsername()}
    232     *
    233     * @return {@link BasicDataSource#getUsername()}
    234     */
    235    String getUsername();
    236
    237    /**
    238     * See {@link BasicDataSource#getValidationQuery()}
    239     *
    240     * @return {@link BasicDataSource#getValidationQuery()}
    241     */
    242    String getValidationQuery();
    243
    244    /**
    245     * See {@link BasicDataSource#getValidationQueryTimeout()}
    246     *
    247     * @return {@link BasicDataSource#getValidationQueryTimeout()}
    248     */
    249    int getValidationQueryTimeout();
    250
    251    /**
    252     * See {@link BasicDataSource#getConnectionInitSqlsAsArray()}
    253     *
    254     * @return {@link BasicDataSource#getConnectionInitSqlsAsArray()}
    255     */
    256    String[] getConnectionInitSqlsAsArray();
    257
    258    /**
    259     * See {@link BasicDataSource#isAccessToUnderlyingConnectionAllowed()}
    260     *
    261     * @return {@link BasicDataSource#isAccessToUnderlyingConnectionAllowed()}
    262     */
    263    boolean isAccessToUnderlyingConnectionAllowed();
    264
    265    /**
    266     * See {@link BasicDataSource#getMaxConnLifetimeMillis()}
    267     *
    268     * @return {@link BasicDataSource#getMaxConnLifetimeMillis()}
    269     */
    270    long getMaxConnLifetimeMillis();
    271
    272    /**
    273     * See {@link BasicDataSource#getLogExpiredConnections()}
    274     *
    275     * @return {@link BasicDataSource#getLogExpiredConnections()}
    276     * @since 2.1
    277     */
    278    boolean getLogExpiredConnections();
    279
    280    /**
    281     * See {@link BasicDataSource#getRemoveAbandonedOnBorrow()}
    282     *
    283     * @return {@link BasicDataSource#getRemoveAbandonedOnBorrow()}
    284     */
    285    boolean getRemoveAbandonedOnBorrow();
    286
    287    /**
    288     * See {@link BasicDataSource#getRemoveAbandonedOnMaintenance()}
    289     *
    290     * @return {@link BasicDataSource#getRemoveAbandonedOnMaintenance()}
    291     */
    292    boolean getRemoveAbandonedOnMaintenance();
    293
    294    /**
    295     * See {@link BasicDataSource#getRemoveAbandonedTimeout()}
    296     *
    297     * @return {@link BasicDataSource#getRemoveAbandonedTimeout()}
    298     */
    299    int getRemoveAbandonedTimeout();
    300
    301    /**
    302     * See {@link BasicDataSource#getLogAbandoned()}
    303     *
    304     * @return {@link BasicDataSource#getLogAbandoned()}
    305     */
    306    boolean getLogAbandoned();
    307
    308    /**
    309     * See {@link BasicDataSource#isClosed()}
    310     *
    311     * @return {@link BasicDataSource#isClosed()}
    312     */
    313    boolean isClosed();
    314
    315    /**
    316     * See {@link BasicDataSource#getFastFailValidation()}
    317     *
    318     * @return {@link BasicDataSource#getFastFailValidation()}
    319     * @since 2.1
    320     */
    321    boolean getFastFailValidation();
    322
    323    /**
    324     * See {@link BasicDataSource#getDisconnectionSqlCodesAsArray()}
    325     *
    326     * @return {@link BasicDataSource#getDisconnectionSqlCodesAsArray()}
    327     * @since 2.1
    328     */
    329    String[] getDisconnectionSqlCodesAsArray();
    330
    331    /**
    332     * See {@link BasicDataSource#start()}
    333     *
    334     * @throws SQLException if an error occurs initializing the datasource
    335     *
    336     * @since 2.8.0
    337     */
    338    default void start() throws SQLException {
    339        // do nothing
    340    }
    341
    342    /**
    343     * See {@link BasicDataSource#restart()}
    344     *
    345     * @throws SQLException if an error occurs initializing the datasource
    346     *
    347     * @since 2.8.0
    348     */
    349    default void restart() throws SQLException {
    350        // do nothing by default?
    351    }
    352}