You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2021/06/12 13:40:38 UTC
[shardingsphere] branch master updated: Use static instead of
singleton for DatabaseTypedSQLParserFacadeRegistry (#10794)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 4280ab0 Use static instead of singleton for DatabaseTypedSQLParserFacadeRegistry (#10794)
4280ab0 is described below
commit 4280ab0bff15f22133f7b0956288e93feb2c5d07
Author: Liang Zhang <te...@163.com>
AuthorDate: Sat Jun 12 21:39:53 2021 +0800
Use static instead of singleton for DatabaseTypedSQLParserFacadeRegistry (#10794)
---
.../sql/parser/api/SQLVisitorEngine.java | 2 +-
.../DatabaseTypedSQLParserFacadeRegistry.java | 28 ++++++++--------------
.../sql/parser/core/parser/SQLParserExecutor.java | 2 +-
3 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLVisitorEngine.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLVisitorEngine.java
index 6907cbc..026ec00 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLVisitorEngine.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/api/SQLVisitorEngine.java
@@ -34,7 +34,7 @@ public final class SQLVisitorEngine {
private final String databaseType;
private final String visitorType;
-
+
private final Properties props;
/**
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/DatabaseTypedSQLParserFacadeRegistry.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/DatabaseTypedSQLParserFacadeRegistry.java
index d122577..38986f5 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/DatabaseTypedSQLParserFacadeRegistry.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/DatabaseTypedSQLParserFacadeRegistry.java
@@ -18,44 +18,36 @@
package org.apache.shardingsphere.sql.parser.core.parser;
import com.google.common.base.Preconditions;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import org.apache.shardingsphere.sql.parser.spi.DatabaseTypedSQLParserFacade;
-import java.util.LinkedHashMap;
+import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;
/**
* Database type based SQL parser facade registry.
*/
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class DatabaseTypedSQLParserFacadeRegistry {
- private static final DatabaseTypedSQLParserFacadeRegistry INSTANCE = new DatabaseTypedSQLParserFacadeRegistry();
+ private static final Map<String, DatabaseTypedSQLParserFacade> FACADES = new HashMap<>();
- private final Map<String, DatabaseTypedSQLParserFacade> facades = new LinkedHashMap<>();
-
- private DatabaseTypedSQLParserFacadeRegistry() {
+ static {
for (DatabaseTypedSQLParserFacade each : ServiceLoader.load(DatabaseTypedSQLParserFacade.class)) {
- facades.put(each.getDatabaseType(), each);
+ FACADES.put(each.getDatabaseType(), each);
}
}
/**
- * Get instance.
- *
- * @return instance
- */
- public static DatabaseTypedSQLParserFacadeRegistry getInstance() {
- return INSTANCE;
- }
-
- /**
* Get database type based SQL parser facade.
*
* @param databaseType database type
* @return database type based SQL parser facade
*/
- public DatabaseTypedSQLParserFacade getFacade(final String databaseType) {
- Preconditions.checkArgument(facades.containsKey(databaseType), "Cannot support database type '%s'", databaseType);
- return facades.get(databaseType);
+ public static DatabaseTypedSQLParserFacade getFacade(final String databaseType) {
+ Preconditions.checkArgument(FACADES.containsKey(databaseType), "Cannot support database type '%s'", databaseType);
+ return FACADES.get(databaseType);
}
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserExecutor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserExecutor.java
index 4ef18c6..3b109a4 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserExecutor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/parser/SQLParserExecutor.java
@@ -51,7 +51,7 @@ public final class SQLParserExecutor {
}
private ParseASTNode twoPhaseParse(final String sql) {
- DatabaseTypedSQLParserFacade sqlParserFacade = DatabaseTypedSQLParserFacadeRegistry.getInstance().getFacade(databaseType);
+ DatabaseTypedSQLParserFacade sqlParserFacade = DatabaseTypedSQLParserFacadeRegistry.getFacade(databaseType);
SQLParser sqlParser = SQLParserFactory.newInstance(sql, sqlParserFacade.getLexerClass(), sqlParserFacade.getParserClass());
try {
setPredictionMode((Parser) sqlParser, PredictionMode.SLL);