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 04:31:55 UTC

[shardingsphere] branch master updated: Add CasesLoaderTemplate (#22431)

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 ca1e7a07566 Add CasesLoaderTemplate (#22431)
ca1e7a07566 is described below

commit ca1e7a0756622ea4cc17644e7ff1d3173408d78d
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Nov 26 12:31:48 2022 +0800

    Add CasesLoaderTemplate (#22431)
---
 .../{load => loader}/SQLParserTestCasesLoader.java | 26 ++++--------
 .../registry/SQLParserTestCasesRegistry.java       |  2 +-
 .../internal/cases/sql/loader/SQLCasesLoader.java  | 25 ++++-------
 .../{cases => engine/loader}/CaseFileLoader.java   |  2 +-
 .../engine/loader/CasesLoaderTemplate.java         | 49 ++++++++++++++++++++++
 5 files changed, 66 insertions(+), 38 deletions(-)

diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/load/SQLParserTestCasesLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoader.java
similarity index 77%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/load/SQLParserTestCasesLoader.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoader.java
index cea505c36e3..775c55185be 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/load/SQLParserTestCasesLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/parser/loader/SQLParserTestCasesLoader.java
@@ -15,13 +15,13 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.sql.parser.internal.cases.parser.load;
+package org.apache.shardingsphere.test.sql.parser.internal.cases.parser.loader;
 
 import com.google.common.base.Preconditions;
-import lombok.SneakyThrows;
+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.cases.CaseFileLoader;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
@@ -37,21 +37,10 @@ import java.util.Map;
 /**
  * SQL parser test cases loader.
  */
-public final class SQLParserTestCasesLoader {
+public final class SQLParserTestCasesLoader extends CasesLoaderTemplate<SQLParserTestCase> {
     
-    /**
-     * Load SQL parser test cases.
-     * 
-     * @param rootDirectory root directory
-     * @return loaded cases
-     */
-    @SneakyThrows({JAXBException.class, IOException.class})
-    public Map<String, SQLParserTestCase> load(final String rootDirectory) {
-        File file = new File(SQLParserTestCasesLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath());
-        return file.isFile() ? loadFromJar(rootDirectory, file) : loadFromDirectory(rootDirectory);
-    }
-    
-    private Map<String, SQLParserTestCase> loadFromJar(final String rootDirectory, final File file) throws JAXBException {
+    @Override
+    protected Map<String, SQLParserTestCase> loadFromJar(final String rootDirectory, final File file) 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));
@@ -61,7 +50,8 @@ public final class SQLParserTestCasesLoader {
         return result;
     }
     
-    private Map<String, SQLParserTestCase> loadFromDirectory(final String rootDirectory) throws IOException, JAXBException {
+    @Override
+    protected 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 ed3ccb70e7d..8727f74ea08 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,7 @@ 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.load.SQLParserTestCasesLoader;
+import org.apache.shardingsphere.test.sql.parser.internal.cases.parser.loader.SQLParserTestCasesLoader;
 
 /**
  * SQL parser test cases registry.
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/SQLCasesLoader.java
index 3b089603ba3..1a51a300355 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/SQLCasesLoader.java
@@ -18,8 +18,8 @@
 package org.apache.shardingsphere.test.sql.parser.internal.cases.sql.loader;
 
 import com.google.common.base.Preconditions;
-import lombok.SneakyThrows;
-import org.apache.shardingsphere.test.sql.parser.internal.cases.CaseFileLoader;
+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;
 
@@ -28,7 +28,6 @@ import javax.xml.bind.JAXBException;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 import java.util.TreeMap;
@@ -36,21 +35,10 @@ import java.util.TreeMap;
 /**
  * SQL cases loader.
  */
-public final class SQLCasesLoader {
+public final class SQLCasesLoader extends CasesLoaderTemplate<SQLCase> {
     
-    /**
-     * Load SQL cases.
-     * 
-     * @param rootDirectory root directory
-     * @return loaded cases
-     */
-    @SneakyThrows({JAXBException.class, IOException.class})
-    public Map<String, SQLCase> load(final String rootDirectory) {
-        File file = new File(SQLCasesLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath());
-        return file.isFile() ? loadFromJar(rootDirectory, file) : loadFromDirectory(rootDirectory);
-    }
-    
-    private Map<String, SQLCase> loadFromJar(final String rootDirectory, final File file) throws JAXBException {
+    @Override
+    protected Map<String, SQLCase> loadFromJar(final String rootDirectory, final File file) throws JAXBException {
         Map<String, SQLCase> result = new TreeMap<>();
         for (String each : CaseFileLoader.loadFileNamesFromJar(file, rootDirectory)) {
             buildCaseMap(result, SQLCasesLoader.class.getClassLoader().getResourceAsStream(each));
@@ -58,7 +46,8 @@ public final class SQLCasesLoader {
         return result;
     }
     
-    private Map<String, SQLCase> loadFromDirectory(final String rootDirectory) throws JAXBException, FileNotFoundException {
+    @Override
+    protected 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/CaseFileLoader.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java
similarity index 97%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/CaseFileLoader.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java
index 4dd747df957..810fab20ab8 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/cases/CaseFileLoader.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CaseFileLoader.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.sql.parser.internal.cases;
+package org.apache.shardingsphere.test.sql.parser.internal.engine.loader;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
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
new file mode 100644
index 00000000000..af776d6d762
--- /dev/null
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/internal/engine/loader/CasesLoaderTemplate.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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.
+ * 
+ * @param <T> type of test case
+ */
+public abstract class CasesLoaderTemplate<T> {
+    
+    /**
+     * Load test cases.
+     * 
+     * @param rootDirectory root directory
+     * @return loaded cases
+     */
+    @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;
+    
+    protected abstract Map<String, T> loadFromDirectory(String rootDirectory) throws IOException, JAXBException;
+}