private static DataSource createRealmDataSource(RealmConfiguration realmConfig) { String dataSourceName = realmConfig.getRealmProperty(JDBCRealmConstants.DATASOURCE); if (dataSourceName != null) { return lookupDataSource(dataSourceName); } RDBMSConfiguration dsConfig = new RDBMSConfiguration(); dsConfig.setDriverClassName(realmConfig.getRealmProperty(JDBCRealmConstants.DRIVER_NAME)); dsConfig.setUrl(realmConfig.getRealmProperty(JDBCRealmConstants.URL)); dsConfig.setUsername(realmConfig.getRealmProperty(JDBCRealmConstants.USER_NAME)); dsConfig.setPassword(realmConfig.getRealmProperty(JDBCRealmConstants.PASSWORD)); if (realmConfig.getRealmProperty(JDBCRealmConstants.MAX_ACTIVE) != null && !realmConfig.getRealmProperty(JDBCRealmConstants.MAX_ACTIVE).equals("")) { dsConfig.setMaxActive( Integer.parseInt(realmConfig.getRealmProperty(JDBCRealmConstants.MAX_ACTIVE))); } else { dsConfig.setMaxActive(DEFAULT_MAX_ACTIVE); } if (realmConfig.getRealmProperty(JDBCRealmConstants.MIN_IDLE) != null && !realmConfig.getRealmProperty(JDBCRealmConstants.MIN_IDLE).equals("")) { dsConfig.setMinIdle( Integer.parseInt(realmConfig.getRealmProperty(JDBCRealmConstants.MIN_IDLE))); } else { dsConfig.setMinIdle(DEFAULT_MIN_IDLE); } if (realmConfig.getRealmProperty(JDBCRealmConstants.MAX_IDLE) != null && !realmConfig.getRealmProperty(JDBCRealmConstants.MAX_IDLE).equals("")) { dsConfig.setMinIdle( Integer.parseInt(realmConfig.getRealmProperty(JDBCRealmConstants.MAX_IDLE))); } else { dsConfig.setMinIdle(DEFAULT_MAX_IDLE); } if (realmConfig.getRealmProperty(JDBCRealmConstants.MAX_WAIT) != null && !realmConfig.getRealmProperty(JDBCRealmConstants.MAX_WAIT).equals("")) { dsConfig.setMaxWait( Integer.parseInt(realmConfig.getRealmProperty(JDBCRealmConstants.MAX_WAIT))); } else { dsConfig.setMaxWait(DEFAULT_MAX_WAIT); } if (realmConfig.getRealmProperty(JDBCRealmConstants.TEST_WHILE_IDLE) != null && !realmConfig.getRealmProperty(JDBCRealmConstants.TEST_WHILE_IDLE).equals("")) { dsConfig.setTestWhileIdle( Boolean.parseBoolean(realmConfig.getRealmProperty(JDBCRealmConstants.TEST_WHILE_IDLE))); } if (realmConfig.getRealmProperty(JDBCRealmConstants.TIME_BETWEEN_EVICTION_RUNS_MILLIS) != null && !realmConfig .getRealmProperty(JDBCRealmConstants.TIME_BETWEEN_EVICTION_RUNS_MILLIS) .equals("")) { dsConfig.setTimeBetweenEvictionRunsMillis( Integer.parseInt( realmConfig.getRealmProperty(JDBCRealmConstants.TIME_BETWEEN_EVICTION_RUNS_MILLIS))); } if (realmConfig.getRealmProperty(JDBCRealmConstants.MIN_EVIC_TABLE_IDLE_TIME_MILLIS) != null && !realmConfig .getRealmProperty(JDBCRealmConstants.MIN_EVIC_TABLE_IDLE_TIME_MILLIS) .equals("")) { dsConfig.setMinEvictableIdleTimeMillis( Integer.parseInt( realmConfig.getRealmProperty(JDBCRealmConstants.MIN_EVIC_TABLE_IDLE_TIME_MILLIS))); } if (realmConfig.getRealmProperty(JDBCRealmConstants.VALIDATION_QUERY) != null) { dsConfig.setValidationQuery( realmConfig.getRealmProperty(JDBCRealmConstants.VALIDATION_QUERY)); } try { dataSource = new RDBMSDataSource(dsConfig).getDataSource(); return dataSource; } catch (DataSourceException e) { throw new RuntimeException("Error in creating data source: " + e.getMessage(), e); } }