From ed0e9e70067449da6e29ffb2758d70dc0fd38e09 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 29 Apr 2020 22:15:15 +1200 Subject: [PATCH] #1999 - Additionally support empty string for read only url with config.isAutoReadOnlyDataSource() --- .../io/ebeaninternal/server/core/InitDataSource.java | 12 ++++++++++-- .../server/core/InitDataSourceTest.java | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/core/InitDataSource.java b/src/main/java/io/ebeaninternal/server/core/InitDataSource.java index 313d40aba..b1ceb6a76 100644 --- a/src/main/java/io/ebeaninternal/server/core/InitDataSource.java +++ b/src/main/java/io/ebeaninternal/server/core/InitDataSource.java @@ -74,14 +74,22 @@ class InitDataSource { // it has explicitly been set to null, not expected but ok return null; } - final String url = roConfig.getUrl(); - if ("none".equalsIgnoreCase(url) || (url == null && !config.isAutoReadOnlyDataSource())) { + final String readOnlyUrl = roConfig.getUrl(); + if ("none".equalsIgnoreCase(readOnlyUrl) || notAutoReadOnly(readOnlyUrl)) { // no read-only DataSource will be used return null; } return roConfig; } + private boolean notAutoReadOnly(String readOnlyUrl) { + return isEmpty(readOnlyUrl) && !config.isAutoReadOnlyDataSource(); + } + + private boolean isEmpty(String url) { + return url == null || url.trim().isEmpty(); + } + private DataSource createFromConfig(DataSourceConfig dsConfig, boolean readOnly) { if (dsConfig == null) { throw new PersistenceException("No DataSourceConfig defined for " + config.getName()); diff --git a/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java b/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java index 550e2a078..288833cd9 100644 --- a/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java +++ b/src/test/java/io/ebeaninternal/server/core/InitDataSourceTest.java @@ -33,6 +33,8 @@ public class InitDataSourceTest { @Test public void readOnlyConfig_null_whenSetNullExplicitly_2() { assertNull(new InitDataSource(newConfig(null)).readOnlyConfig()); + assertNull(new InitDataSource(newConfig("")).readOnlyConfig()); + assertNull(new InitDataSource(newConfig(" ")).readOnlyConfig()); } @Test