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