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;
 }