You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by zh...@apache.org on 2021/06/30 09:56:08 UTC
[incubator-shenyu] branch master updated: [Feature #1689] add
execute multi-path sql script (#1690)
This is an automated email from the ASF dual-hosted git repository.
zhangyonglun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new d64801f [Feature #1689] add execute multi-path sql script (#1690)
d64801f is described below
commit d64801ff0c9681278799cc3eef3cddf9204c65ea
Author: xiaoyu <xi...@apache.org>
AuthorDate: Wed Jun 30 17:55:58 2021 +0800
[Feature #1689] add execute multi-path sql script (#1690)
* add Multi-path sql script
* add Multi-path sql script
* fix ci
---
.../config/properties/DataBaseProperties.java | 2 -
.../shenyu/admin/spring/LocalDataSourceLoader.java | 54 +++++++++-------------
shenyu-admin/src/main/resources/application.yml | 1 -
3 files changed, 22 insertions(+), 35 deletions(-)
diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/properties/DataBaseProperties.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/properties/DataBaseProperties.java
index 3b2e9ec..1222ddc 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/properties/DataBaseProperties.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/config/properties/DataBaseProperties.java
@@ -35,7 +35,5 @@ public class DataBaseProperties {
private String initScript;
- private String customInitScript;
-
private Boolean initEnable;
}
diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/spring/LocalDataSourceLoader.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/spring/LocalDataSourceLoader.java
index 3dce1a0..3981d79 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/spring/LocalDataSourceLoader.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/spring/LocalDataSourceLoader.java
@@ -17,6 +17,7 @@
package org.apache.shenyu.admin.spring;
+import com.google.common.base.Splitter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -34,10 +35,10 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
-import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;
+import java.util.List;
/**
* for execute schema sql file.
@@ -45,10 +46,12 @@ import java.sql.DriverManager;
@Slf4j
@Component
public class LocalDataSourceLoader implements InstantiationAwareBeanPostProcessor {
+
+ private static final String PRE_FIX = "file:";
@Resource
private DataBaseProperties dataBaseProperties;
-
+
@Override
public Object postProcessAfterInitialization(@NonNull final Object bean, final String beanName) throws BeansException {
if ((bean instanceof DataSourceProperties) && dataBaseProperties.getInitEnable()) {
@@ -73,38 +76,25 @@ public class LocalDataSourceLoader implements InstantiationAwareBeanPostProcesso
// doesn't print logger
runner.setLogWriter(null);
Resources.setCharset(StandardCharsets.UTF_8);
-
- Reader read = StringUtils.isNotBlank(dataBaseProperties.getCustomInitScript()) ? getResourceAsReader(dataBaseProperties.getCustomInitScript())
- : Resources.getResourceAsReader(dataBaseProperties.getInitScript());
-
- log.info("execute shenyu schema sql: {}", StringUtils.isNotBlank(dataBaseProperties.getCustomInitScript()) ? dataBaseProperties.getCustomInitScript()
- : dataBaseProperties.getInitScript());
- runner.runScript(read);
+ String initScript = dataBaseProperties.getInitScript();
+ List<String> initScripts = Splitter.on(";").splitToList(initScript);
+ for (String sqlScript : initScripts) {
+ if (sqlScript.startsWith(PRE_FIX)) {
+ String sqlFile = sqlScript.substring(PRE_FIX.length());
+ Reader fileReader = getResourceAsReader(sqlFile);
+ log.info("execute shenyu schema sql: {}", sqlFile);
+ runner.runScript(fileReader);
+ } else {
+ Reader fileReader = Resources.getResourceAsReader(sqlScript);
+ log.info("execute shenyu schema sql: {}", sqlScript);
+ runner.runScript(fileReader);
+ }
+ }
runner.closeConnection();
conn.close();
}
-
- /**
- * resource reader.
- *
- * @param resource url
- * @return Reader
- * @throws IOException IOException
- */
- public static Reader getResourceAsReader(final String resource) throws IOException {
- return getResourceAsReader(resource, null);
- }
-
- /**
- * resource reader.
- *
- * @param resource url
- * @param charset charset
- * @return Reader
- * @throws IOException IOException
- */
- public static Reader getResourceAsReader(final String resource, final Charset charset) throws IOException {
- return new InputStreamReader(new FileInputStream(resource), charset == null ? StandardCharsets.UTF_8 : charset);
+
+ private static Reader getResourceAsReader(final String resource) throws IOException {
+ return new InputStreamReader(new FileInputStream(resource), StandardCharsets.UTF_8);
}
-
}
diff --git a/shenyu-admin/src/main/resources/application.yml b/shenyu-admin/src/main/resources/application.yml
index aa31f57..f485c01 100644
--- a/shenyu-admin/src/main/resources/application.yml
+++ b/shenyu-admin/src/main/resources/application.yml
@@ -50,7 +50,6 @@ shenyu:
database:
dialect: mysql
init_script: "META-INF/schema.sql"
- #custom_init_script: "/opt/schema.sql"
init_enable: true
sync:
websocket: