String defaultServer = configuration.getString("ebeanconfig.datasource.default", "default");
Model.setDefaultServer(defaultServer);
Configuration ebeanConf = configuration.getConfig("ebean");
Map<String, ServerConfig> serverConfigs = new HashMap<String, ServerConfig>();
if (ebeanConf != null) {
for (String key: ebeanConf.keys()) {
ServerConfig config = new ServerConfig();
config.setName(key);
config.loadFromProperties();
try {
config.setDataSource(new WrappingDatasource(dbApi.getDatabase(key).getDataSource()));
} catch(Exception e) {
throw ebeanConf.reportError(
key,
e.getMessage(),
e
);
}
if (defaultServer.equals(key)) {
config.setDefaultServer(true);
}
String[] toLoad = ebeanConf.getString(key).split(",");
Set<String> classes = new HashSet<String>();
for (String load: toLoad) {
load = load.trim();
if (load.endsWith(".*")) {
classes.addAll(play.libs.Classpath.getTypes(environment, load.substring(0, load.length()-2)));
} else {
classes.add(load);
}
}
for (String clazz: classes) {
try {
config.addClass(Class.forName(clazz, true, environment.classLoader()));
} catch (Throwable e) {
throw ebeanConf.reportError(
key,
"Cannot register class [" + clazz + "] in Ebean server",
e
);
}