@Override public DataSourceInfo getInfo(final Object resource) throws Exception { DataSourceInfo dataSourceInfo = null; if (canMap(resource)) { final BoneCPDataSource source = (BoneCPDataSource) resource; BoneCP pool; try { pool = source.getPool(); } catch (NoSuchMethodError ex) { logger.trace("", ex); // This is an older version of BoneCP (pre-0.8.0) final Field poolField = BoneCPDataSource.class.getDeclaredField("pool"); poolField.setAccessible(true); pool = (BoneCP) poolField.get(source); } dataSourceInfo = new DataSourceInfo(); dataSourceInfo.setBusyConnections(source.getTotalLeased()); dataSourceInfo.setEstablishedConnections(pool.getTotalCreatedConnections()); dataSourceInfo.setMaxConnections( source.getPartitionCount() * source.getMaxConnectionsPerPartition()); dataSourceInfo.setJdbcUrl(source.getJdbcUrl()); dataSourceInfo.setUsername(source.getUsername()); dataSourceInfo.setResettable(false); dataSourceInfo.setType("bonecp"); } return dataSourceInfo; }