You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2022/11/26 06:48:13 UTC
[shardingsphere] branch master updated: Add CasesLoaderCallback (#22434)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 37efee8c1b7 Add CasesLoaderCallback (#22434)
37efee8c1b7 is described below
commit 37efee8c1b75d192f7b9e476aee311ae82cbdc8e
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Nov 26 14:48:07 2022 +0800
Add CasesLoaderCallback (#22434)
---
....java => SQLParserTestCasesLoaderCallback.java} | 16 +++++------
.../registry/SQLParserTestCasesRegistry.java | 5 ++--
...asesLoader.java => SQLCasesLoaderCallback.java} | 16 +++++------
.../cases/sql/registry/SQLCasesRegistry.java | 5 ++--
.../sql/registry/UnsupportedSQLCasesRegistry.java | 5 ++--
.../internal/engine/loader/CaseFileLoader.java | 6 ++--
...oaderTemplate.java => CasesLoaderCallback.java} | 32 ++++++++++++----------
.../engine/loader/CasesLoaderTemplate.java | 14 ++++------
8 files changed, 50 insertions(+), 49 deletions(-)
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoaderCallback.java
similarity index 83%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoader.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoaderCallback.java
index 775c55185be..0e5449eec28 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoaderCallback.java
@@ -18,10 +18,10 @@
package org.apache.shardingsphere.test.sql.parser.internal.cases.parser.loader;
import com.google.common.base.Preconditions;
-import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CaseFileLoader;
-import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderTemplate;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.jaxb.RootSQLParserTestCases;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CaseFileLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderCallback;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -35,15 +35,15 @@ import java.util.HashSet;
import java.util.Map;
/**
- * SQL parser test cases loader.
+ * SQL parser test cases loader callback.
*/
-public final class SQLParserTestCasesLoader extends CasesLoaderTemplate<SQLParserTestCase> {
+public final class SQLParserTestCasesLoaderCallback implements CasesLoaderCallback<SQLParserTestCase> {
@Override
- protected Map<String, SQLParserTestCase> loadFromJar(final String rootDirectory, final File file) throws JAXBException {
+ public Map<String, SQLParserTestCase> loadFromJar(final String rootDirectory, final File jarFile) throws JAXBException {
Map<String, SQLParserTestCase> result = new HashMap<>(Short.MAX_VALUE, 1);
- for (String each : CaseFileLoader.loadFileNamesFromJar(file, rootDirectory)) {
- Map<String, SQLParserTestCase> sqlParserTestCases = createSQLParserTestCases(SQLParserTestCasesLoader.class.getClassLoader().getResourceAsStream(each));
+ for (String each : CaseFileLoader.loadFileNamesFromJar(jarFile, rootDirectory)) {
+ Map<String, SQLParserTestCase> sqlParserTestCases = createSQLParserTestCases(SQLParserTestCasesLoaderCallback.class.getClassLoader().getResourceAsStream(each));
checkDuplicate(result, sqlParserTestCases);
result.putAll(sqlParserTestCases);
}
@@ -51,7 +51,7 @@ public final class SQLParserTestCasesLoader extends CasesLoaderTemplate<SQLParse
}
@Override
- protected Map<String, SQLParserTestCase> loadFromDirectory(final String rootDirectory) throws IOException, JAXBException {
+ public Map<String, SQLParserTestCase> loadFromDirectory(final String rootDirectory) throws IOException, JAXBException {
Map<String, SQLParserTestCase> result = new HashMap<>(Short.MAX_VALUE, 1);
for (File each : CaseFileLoader.loadFilesFromDirectory(rootDirectory)) {
try (FileInputStream fileInputStream = new FileInputStream(each)) {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/registry/SQLParserTestCasesRegistry.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/registry/SQLParserTestCasesRegistry.java
index 8727f74ea08..17807d429fe 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/registry/SQLParserTestCasesRegistry.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/registry/SQLParserTestCasesRegistry.java
@@ -19,7 +19,8 @@ package org.apache.shardingsphere.test.sql.parser.internal.cases.parser.registry
import lombok.Getter;
import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.SQLParserTestCases;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.loader.SQLParserTestCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.loader.SQLParserTestCasesLoaderCallback;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderTemplate;
/**
* SQL parser test cases registry.
@@ -29,7 +30,7 @@ public final class SQLParserTestCasesRegistry {
private static final SQLParserTestCasesRegistry INSTANCE = new SQLParserTestCasesRegistry();
- private final SQLParserTestCases cases = new SQLParserTestCases(new SQLParserTestCasesLoader().load("case/"));
+ private final SQLParserTestCases cases = new SQLParserTestCases(new CasesLoaderTemplate().load("case/", new SQLParserTestCasesLoaderCallback()));
/**
* Get instance.
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/loader/SQLCasesLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/loader/SQLCasesLoaderCallback.java
similarity index 81%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/loader/SQLCasesLoader.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/loader/SQLCasesLoaderCallback.java
index 1a51a300355..3e4c6a39ab0 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/loader/SQLCasesLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/loader/SQLCasesLoaderCallback.java
@@ -18,10 +18,10 @@
package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.loader;
import com.google.common.base.Preconditions;
-import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CaseFileLoader;
-import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderTemplate;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.jaxb.RootSQLCases;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.jaxb.SQLCase;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CaseFileLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderCallback;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
@@ -33,21 +33,21 @@ import java.util.Map;
import java.util.TreeMap;
/**
- * SQL cases loader.
+ * SQL cases loader callback.
*/
-public final class SQLCasesLoader extends CasesLoaderTemplate<SQLCase> {
+public final class SQLCasesLoaderCallback implements CasesLoaderCallback<SQLCase> {
@Override
- protected Map<String, SQLCase> loadFromJar(final String rootDirectory, final File file) throws JAXBException {
+ public Map<String, SQLCase> loadFromJar(final String rootDirectory, final File jarFile) throws JAXBException {
Map<String, SQLCase> result = new TreeMap<>();
- for (String each : CaseFileLoader.loadFileNamesFromJar(file, rootDirectory)) {
- buildCaseMap(result, SQLCasesLoader.class.getClassLoader().getResourceAsStream(each));
+ for (String each : CaseFileLoader.loadFileNamesFromJar(jarFile, rootDirectory)) {
+ buildCaseMap(result, SQLCasesLoaderCallback.class.getClassLoader().getResourceAsStream(each));
}
return result;
}
@Override
- protected Map<String, SQLCase> loadFromDirectory(final String rootDirectory) throws JAXBException, FileNotFoundException {
+ public Map<String, SQLCase> loadFromDirectory(final String rootDirectory) throws JAXBException, FileNotFoundException {
Map<String, SQLCase> result = new TreeMap<>();
for (File each : CaseFileLoader.loadFilesFromDirectory(rootDirectory)) {
buildCaseMap(result, new FileInputStream(each));
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java
index 7b456eaba90..20c8f89c44c 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/SQLCasesRegistry.java
@@ -19,7 +19,8 @@ package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry;
import lombok.Getter;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.loader.SQLCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.loader.SQLCasesLoaderCallback;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderTemplate;
/**
* SQL cases registry.
@@ -32,7 +33,7 @@ public final class SQLCasesRegistry {
private final SQLCases cases;
private SQLCasesRegistry() {
- cases = new SQLCases(new SQLCasesLoader().load("sql/supported/"));
+ cases = new SQLCases(new CasesLoaderTemplate().load("sql/supported/", new SQLCasesLoaderCallback()));
}
/**
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java
index c1b2bb96190..ea9631649b6 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/sql/registry/UnsupportedSQLCasesRegistry.java
@@ -19,7 +19,8 @@ package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.registry;
import lombok.Getter;
import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.SQLCases;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.loader.SQLCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.sql.loader.SQLCasesLoaderCallback;
+import org.apache.shardingsphere.test.sql.parser.internal.engine.loader.CasesLoaderTemplate;
/**
* Unsupported SQL cases registry.
@@ -32,7 +33,7 @@ public final class UnsupportedSQLCasesRegistry {
private final SQLCases cases;
private UnsupportedSQLCasesRegistry() {
- cases = new SQLCases(new SQLCasesLoader().load("sql/unsupported/"));
+ cases = new SQLCases(new CasesLoaderTemplate().load("sql/unsupported/", new SQLCasesLoaderCallback()));
}
/**
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java
index 810fab20ab8..b51db44c6c1 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java
@@ -49,14 +49,14 @@ public final class CaseFileLoader {
/**
* Load test case file names from jar.
*
- * @param file jar file
+ * @param jarFile jar file
* @param path test cases path
* @return test case file names
*/
@SneakyThrows(IOException.class)
- public static Collection<String> loadFileNamesFromJar(final File file, final String path) {
+ public static Collection<String> loadFileNamesFromJar(final File jarFile, final String path) {
Collection<String> result = new LinkedList<>();
- try (JarFile jar = new JarFile(file)) {
+ try (JarFile jar = new JarFile(jarFile)) {
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
String name = entries.nextElement().getName();
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderCallback.java
similarity index 58%
copy from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java
copy to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderCallback.java
index af776d6d762..f7bd7ae82a5 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderCallback.java
@@ -17,33 +17,35 @@
package org.apache.shardingsphere.test.sql.parser.internal.engine.loader;
-import lombok.SneakyThrows;
-
import javax.xml.bind.JAXBException;
import java.io.File;
import java.io.IOException;
import java.util.Map;
/**
- * Cases loader template.
+ * Cases loader callback.
*
* @param <T> type of test case
*/
-public abstract class CasesLoaderTemplate<T> {
+public interface CasesLoaderCallback<T> {
/**
- * Load test cases.
+ * Load from jar.
*
- * @param rootDirectory root directory
- * @return loaded cases
+ * @param rootDirectory root directory of cases
+ * @param jarFile jar file
+ * @return loaded test cases
+ * @throws JAXBException JAXB exception
*/
- @SneakyThrows({JAXBException.class, IOException.class})
- public Map<String, T> load(final String rootDirectory) {
- File file = new File(CasesLoaderTemplate.class.getProtectionDomain().getCodeSource().getLocation().getPath());
- return file.isFile() ? loadFromJar(rootDirectory, file) : loadFromDirectory(rootDirectory);
- }
-
- protected abstract Map<String, T> loadFromJar(String rootDirectory, File file) throws JAXBException;
+ Map<String, T> loadFromJar(String rootDirectory, File jarFile) throws JAXBException;
- protected abstract Map<String, T> loadFromDirectory(String rootDirectory) throws IOException, JAXBException;
+ /**
+ * Load from directory.
+ *
+ * @param rootDirectory root directory of cases
+ * @return loaded test cases
+ * @throws IOException IO exception
+ * @throws JAXBException JAXB exception
+ */
+ Map<String, T> loadFromDirectory(String rootDirectory) throws IOException, JAXBException;
}
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java
index af776d6d762..76e63e1f8cc 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java
@@ -26,24 +26,20 @@ import java.util.Map;
/**
* Cases loader template.
- *
- * @param <T> type of test case
*/
-public abstract class CasesLoaderTemplate<T> {
+public final class CasesLoaderTemplate {
/**
* Load test cases.
*
* @param rootDirectory root directory
+ * @param callback callback of cases loader
+ * @param <T> type of test case
* @return loaded cases
*/
@SneakyThrows({JAXBException.class, IOException.class})
- public Map<String, T> load(final String rootDirectory) {
+ public <T> Map<String, T> load(final String rootDirectory, final CasesLoaderCallback<T> callback) {
File file = new File(CasesLoaderTemplate.class.getProtectionDomain().getCodeSource().getLocation().getPath());
- return file.isFile() ? loadFromJar(rootDirectory, file) : loadFromDirectory(rootDirectory);
+ return file.isFile() ? callback.loadFromJar(rootDirectory, file) : callback.loadFromDirectory(rootDirectory);
}
-
- protected abstract Map<String, T> loadFromJar(String rootDirectory, File file) throws JAXBException;
-
- protected abstract Map<String, T> loadFromDirectory(String rootDirectory) throws IOException, JAXBException;
}