public DataSourceInfo getInfo(Object resource) throws Exception {
DataSourceInfo dataSourceInfo = null;
if (canMap(resource)) {
OracleDataSource source = (OracleDataSource) resource;
OracleConnectionCacheManager occm = OracleConnectionCacheManager.getConnectionCacheManagerInstance();
Properties cacheProperties = source.getConnectionCacheProperties();
String cacheName = source.getConnectionCacheName();
cacheName = cacheName != null && occm.existsCache(cacheName) ? cacheName : null;
if (cacheProperties != null) {
dataSourceInfo = new DataSourceInfo();
if (cacheName != null) {
dataSourceInfo.setBusyConnections(occm.getNumberOfActiveConnections(cacheName));
dataSourceInfo.setEstablishedConnections(occm.getNumberOfAvailableConnections(cacheName) + dataSourceInfo.getBusyConnections());
} else {
dataSourceInfo.setBusyConnections(0);
dataSourceInfo.setEstablishedConnections(0);
}