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
023 * <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html">JMX</a>.
024 *
025 * @since 2.9.0
026 */
027public interface DataSourceMXBean {
028
029    /**
030     * See {@link BasicDataSource#getAbandonedUsageTracking()}.
031     *
032     * @return {@link BasicDataSource#getAbandonedUsageTracking()}
033     */
034    boolean getAbandonedUsageTracking();
035
036    /**
037     * See {@link BasicDataSource#getCacheState()}.
038     *
039     * @return {@link BasicDataSource#getCacheState()}.
040     */
041    boolean getCacheState();
042
043    /**
044     * See {@link BasicDataSource#getConnectionInitSqlsAsArray()}.
045     *
046     * @return {@link BasicDataSource#getConnectionInitSqlsAsArray()}.
047     */
048    String[] getConnectionInitSqlsAsArray();
049
050    /**
051     * See {@link BasicDataSource#getDefaultAutoCommit()}.
052     *
053     * @return {@link BasicDataSource#getDefaultAutoCommit()}.
054     */
055    Boolean getDefaultAutoCommit();
056
057    /**
058     * See {@link BasicDataSource#getDefaultCatalog()}.
059     *
060     * @return {@link BasicDataSource#getDefaultCatalog()}.
061     */
062    String getDefaultCatalog();
063
064    /**
065     * See {@link BasicDataSource#getDefaultReadOnly()}.
066     *
067     * @return {@link BasicDataSource#getDefaultReadOnly()}.
068     */
069    Boolean getDefaultReadOnly();
070
071    /**
072     * See {@link BasicDataSource#getDefaultSchema()}.
073     *
074     * @return {@link BasicDataSource#getDefaultSchema()}.
075     * @since 2.5.0
076     */
077    default String getDefaultSchema() {
078        return null;
079    }
080
081    /**
082     * See {@link BasicDataSource#getDefaultTransactionIsolation()}.
083     *
084     * @return {@link BasicDataSource#getDefaultTransactionIsolation()}.
085     */
086    int getDefaultTransactionIsolation();
087
088    /**
089     * See {@link BasicDataSource#getDisconnectionIgnoreSqlCodesAsArray()}.
090     *
091     * @return {@link BasicDataSource#getDisconnectionIgnoreSqlCodesAsArray()}.
092     * @since 2.13.0
093     */
094    default String[] getDisconnectionIgnoreSqlCodesAsArray() {
095        return Utils.EMPTY_STRING_ARRAY;
096    }
097
098    /**
099     * See {@link BasicDataSource#getDisconnectionSqlCodesAsArray()}.
100     *
101     * @return {@link BasicDataSource#getDisconnectionSqlCodesAsArray()}.
102     * @since 2.1
103     */
104    String[] getDisconnectionSqlCodesAsArray();
105
106    /**
107     * See {@link BasicDataSource#getDriverClassName()}.
108     *
109     * @return {@link BasicDataSource#getDriverClassName()}.
110     */
111    String getDriverClassName();
112
113    /**
114     * See {@link BasicDataSource#getFastFailValidation()}.
115     *
116     * @return {@link BasicDataSource#getFastFailValidation()}.
117     * @since 2.1
118     */
119    boolean getFastFailValidation();
120
121    /**
122     * See {@link BasicDataSource#getInitialSize()}.
123     *
124     * @return {@link BasicDataSource#getInitialSize()}.
125     */
126    int getInitialSize();
127
128    /**
129     * See {@link BasicDataSource#getLifo()}.
130     *
131     * @return {@link BasicDataSource#getLifo()}.
132     */
133    boolean getLifo();
134
135    /**
136     * See {@link BasicDataSource#getLogAbandoned()}.
137     *
138     * @return {@link BasicDataSource#getLogAbandoned()}.
139     */
140    boolean getLogAbandoned();
141
142    /**
143     * See {@link BasicDataSource#getLogExpiredConnections()}.
144     *
145     * @return {@link BasicDataSource#getLogExpiredConnections()}.
146     * @since 2.1
147     */
148    boolean getLogExpiredConnections();
149
150    /**
151     * See {@link BasicDataSource#getMaxConnLifetimeMillis()}.
152     *
153     * @return {@link BasicDataSource#getMaxConnLifetimeMillis()}.
154     */
155    long getMaxConnLifetimeMillis();
156
157    /**
158     * See {@link BasicDataSource#getMaxIdle()}.
159     *
160     * @return {@link BasicDataSource#getMaxIdle()}.
161     */
162    int getMaxIdle();
163
164    /**
165     * See {@link BasicDataSource#getMaxOpenPreparedStatements()}.
166     *
167     * @return {@link BasicDataSource#getMaxOpenPreparedStatements()}.
168     */
169    int getMaxOpenPreparedStatements();
170
171    /**
172     * See {@link BasicDataSource#getMaxTotal()}.
173     *
174     * @return {@link BasicDataSource#getMaxTotal()}.
175     */
176    int getMaxTotal();
177
178    /**
179     * See {@link BasicDataSource#getMaxWaitMillis()}.
180     *
181     * @return {@link BasicDataSource#getMaxWaitMillis()}.
182     */
183    long getMaxWaitMillis();
184
185    /**
186     * See {@link BasicDataSource#getMinEvictableIdleTimeMillis()}.
187     *
188     * @return {@link BasicDataSource#getMinEvictableIdleTimeMillis()}.
189     */
190    long getMinEvictableIdleTimeMillis();
191
192    /**
193     * See {@link BasicDataSource#getMinIdle()}.
194     *
195     * @return {@link BasicDataSource#getMinIdle()}.
196     */
197    int getMinIdle();
198
199    /**
200     * See {@link BasicDataSource#getNumActive()}.
201     *
202     * @return {@link BasicDataSource#getNumActive()}.
203     */
204    int getNumActive();
205
206    /**
207     * See {@link BasicDataSource#getNumIdle()}.
208     *
209     * @return {@link BasicDataSource#getNumIdle()}.
210     */
211    int getNumIdle();
212
213    /**
214     * See {@link BasicDataSource#getNumTestsPerEvictionRun()}.
215     *
216     * @return {@link BasicDataSource#getNumTestsPerEvictionRun()}.
217     */
218    int getNumTestsPerEvictionRun();
219
220    /**
221     * See {@link BasicDataSource#getRemoveAbandonedOnBorrow()}.
222     *
223     * @return {@link BasicDataSource#getRemoveAbandonedOnBorrow()}.
224     */
225    boolean getRemoveAbandonedOnBorrow();
226
227    /**
228     * See {@link BasicDataSource#getRemoveAbandonedOnMaintenance()}.
229     *
230     * @return {@link BasicDataSource#getRemoveAbandonedOnMaintenance()}.
231     */
232    boolean getRemoveAbandonedOnMaintenance();
233
234    /**
235     * See {@link BasicDataSource#getRemoveAbandonedTimeout()}.
236     *
237     * @return {@link BasicDataSource#getRemoveAbandonedTimeout()}.
238     */
239    int getRemoveAbandonedTimeout();
240
241    /**
242     * See {@link BasicDataSource#getSoftMinEvictableIdleTimeMillis()}.
243     *
244     * @return {@link BasicDataSource#getSoftMinEvictableIdleTimeMillis()}.
245     */
246    long getSoftMinEvictableIdleTimeMillis();
247
248    /**
249     * See {@link BasicDataSource#getTestOnBorrow()}.
250     *
251     * @return {@link BasicDataSource#getTestOnBorrow()}.
252     */
253    boolean getTestOnBorrow();
254
255    /**
256     * See {@link BasicDataSource#getTestOnCreate()}.
257     *
258     * @return {@link BasicDataSource#getTestOnCreate()}.
259     */
260    boolean getTestOnCreate();
261
262    /**
263     * See {@link BasicDataSource#getTestWhileIdle()}.
264     *
265     * @return {@link BasicDataSource#getTestWhileIdle()}.
266     */
267    boolean getTestWhileIdle();
268
269    /**
270     * See {@link BasicDataSource#getTimeBetweenEvictionRunsMillis()}.
271     *
272     * @return {@link BasicDataSource#getTimeBetweenEvictionRunsMillis()}.
273     */
274    long getTimeBetweenEvictionRunsMillis();
275
276    /**
277     * See {@link BasicDataSource#getUrl()}.
278     *
279     * @return {@link BasicDataSource#getUrl()}.
280     */
281    String getUrl();
282
283    /**
284     * See {@link BasicDataSource#getUsername()}.
285     *
286     * @return {@link BasicDataSource#getUsername()}.
287     * @deprecated Use {@link #getUserName()}.
288     */
289    @Deprecated
290    String getUsername();
291
292    /**
293     * See {@link BasicDataSource#getUsername()}.
294     *
295     * @return {@link BasicDataSource#getUsername()}.
296     * @since 2.11.0
297     */
298    default String getUserName() {
299        return getUsername();
300    }
301
302    /**
303     * See {@link BasicDataSource#getValidationQuery()}.
304     *
305     * @return {@link BasicDataSource#getValidationQuery()}.
306     */
307    String getValidationQuery();
308
309    /**
310     * See {@link BasicDataSource#getValidationQueryTimeout()}.
311     *
312     * @return {@link BasicDataSource#getValidationQueryTimeout()}.
313     */
314    int getValidationQueryTimeout();
315
316    /**
317     * See {@link BasicDataSource#isAccessToUnderlyingConnectionAllowed()}.
318     *
319     * @return {@link BasicDataSource#isAccessToUnderlyingConnectionAllowed()}.
320     */
321    boolean isAccessToUnderlyingConnectionAllowed();
322
323    /**
324     * See {@link BasicDataSource#isClearStatementPoolOnReturn()}.
325     *
326     * @return {@link BasicDataSource#isClearStatementPoolOnReturn()}.
327     * @since 2.8.0
328     */
329    default boolean isClearStatementPoolOnReturn() {
330        return false;
331    }
332
333    /**
334     * See {@link BasicDataSource#isClosed()}.
335     *
336     * @return {@link BasicDataSource#isClosed()}.
337     */
338    boolean isClosed();
339
340    /**
341     * See {@link BasicDataSource#isPoolPreparedStatements()}.
342     *
343     * @return {@link BasicDataSource#isPoolPreparedStatements()}.
344     */
345    boolean isPoolPreparedStatements();
346
347    /**
348     * See {@link BasicDataSource#restart()}
349     *
350     * @throws SQLException if an error occurs initializing the data source.
351     *
352     * @since 2.8.0
353     */
354    default void restart() throws SQLException {
355        // do nothing by default?
356    }
357
358    /**
359     * See {@link BasicDataSource#start()}
360     *
361     * @throws SQLException if an error occurs initializing the data source.
362     *
363     * @since 2.8.0
364     */
365    default void start() throws SQLException {
366        // do nothing
367    }
368}