Skip to content

Commit 801459d

Browse files
committed
Add the ScriptFileLoader interface.
It is necessary to execute hot replacement of script files in the quarkus extension.
1 parent a968a3f commit 801459d

File tree

5 files changed

+38
-4
lines changed

5 files changed

+38
-4
lines changed

doma-core/src/main/java/org/seasar/doma/internal/RuntimeConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.seasar.doma.jdbc.Naming;
1515
import org.seasar.doma.jdbc.QueryImplementors;
1616
import org.seasar.doma.jdbc.RequiresNewController;
17+
import org.seasar.doma.jdbc.ScriptFileLoader;
1718
import org.seasar.doma.jdbc.SqlFileRepository;
1819
import org.seasar.doma.jdbc.SqlLogType;
1920
import org.seasar.doma.jdbc.UnknownColumnHandler;
@@ -57,6 +58,11 @@ public SqlFileRepository getSqlFileRepository() {
5758
return config.getSqlFileRepository();
5859
}
5960

61+
@Override
62+
public ScriptFileLoader getScriptFileLoader() {
63+
return config.getScriptFileLoader();
64+
}
65+
6066
@Override
6167
public JdbcLogger getJdbcLogger() {
6268
return config.getJdbcLogger();

doma-core/src/main/java/org/seasar/doma/jdbc/Config.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ default SqlFileRepository getSqlFileRepository() {
5353
return ConfigSupport.defaultSqlFileRepository;
5454
}
5555

56+
/**
57+
* Returns the Script file loader.
58+
*
59+
* @return the Script file loader
60+
*/
61+
default ScriptFileLoader getScriptFileLoader() {
62+
return ConfigSupport.defaultScriptFileLoader;
63+
}
64+
5665
/**
5766
* Returns the JDBC logger.
5867
*

doma-core/src/main/java/org/seasar/doma/jdbc/ConfigSupport.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ public final class ConfigSupport {
55

66
public static SqlFileRepository defaultSqlFileRepository = new GreedyCacheSqlFileRepository();
77

8+
public static ScriptFileLoader defaultScriptFileLoader = new ScriptFileLoader() {};
9+
810
public static JdbcLogger defaultJdbcLogger = new UtilLoggingJdbcLogger();
911

1012
public static RequiresNewController defaultRequiresNewController = new RequiresNewController() {};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.seasar.doma.jdbc;
2+
3+
import java.net.URL;
4+
import org.seasar.doma.internal.util.ResourceUtil;
5+
6+
public interface ScriptFileLoader {
7+
8+
default URL loadAsURL(String path) {
9+
return ResourceUtil.getResource(path);
10+
}
11+
}

doma-core/src/main/java/org/seasar/doma/jdbc/query/SqlFileScriptQuery.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44
import static org.seasar.doma.internal.util.AssertionUtil.assertTrue;
55
import static org.seasar.doma.internal.util.AssertionUtil.assertUnreachable;
66

7-
import java.io.*;
7+
import java.io.IOException;
8+
import java.io.InputStream;
9+
import java.io.InputStreamReader;
10+
import java.io.Reader;
11+
import java.io.StringReader;
12+
import java.io.UncheckedIOException;
813
import java.net.URL;
914
import java.util.function.Supplier;
1015
import org.seasar.doma.internal.Constants;
1116
import org.seasar.doma.internal.jdbc.util.ScriptFileUtil;
12-
import org.seasar.doma.internal.util.ResourceUtil;
17+
import org.seasar.doma.jdbc.ScriptFileLoader;
1318
import org.seasar.doma.jdbc.ScriptFileNotFoundException;
1419
import org.seasar.doma.jdbc.Sql;
1520
import org.seasar.doma.jdbc.SqlLogType;
@@ -52,14 +57,15 @@ public void prepare() {
5257
if (sqlAnnotation == null) {
5358
assertTrue(scriptFilePath.startsWith(Constants.SCRIPT_PATH_PREFIX));
5459
assertTrue(scriptFilePath.endsWith(Constants.SCRIPT_PATH_SUFFIX));
60+
ScriptFileLoader loader = config.getScriptFileLoader();
5561

5662
String dbmsSpecificPath =
5763
ScriptFileUtil.convertToDbmsSpecificPath(scriptFilePath, config.getDialect());
58-
scriptFileUrl = ResourceUtil.getResource(dbmsSpecificPath);
64+
scriptFileUrl = loader.loadAsURL(dbmsSpecificPath);
5965
if (scriptFileUrl != null) {
6066
scriptFilePath = dbmsSpecificPath;
6167
} else {
62-
scriptFileUrl = ResourceUtil.getResource(scriptFilePath);
68+
scriptFileUrl = loader.loadAsURL(scriptFilePath);
6369
if (scriptFileUrl == null) {
6470
throw new ScriptFileNotFoundException(scriptFilePath);
6571
}

0 commit comments

Comments
 (0)