This is an automated email from the ASF dual-hosted git repository.
xxyu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/main by this push:
new 8ed6d5d fix
8ed6d5d is described below
commit 8ed6d5d69a4b589d183bb679f511f8230daa09bf
Author: yaqian.zhang <[email protected]>
AuthorDate: Wed Nov 10 10:21:04 2021 +0800
fix
---
.../apache/kylin/rest/service/QueryService.java | 26 +++++++++++++++++-----
.../kylin/rest/service/QueryServiceTest.java | 6 +++++
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git
a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index fcf3be2..a8ba1f9 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -1263,12 +1263,7 @@ public class QueryService extends BasicService {
throws SQLException {
boolean isNull = (null == param.getValue());
- Class<?> clazz;
- try {
- clazz = Class.forName(param.getClassName());
- } catch (ClassNotFoundException e) {
- throw new InternalErrorException(e);
- }
+ Class<?> clazz = getValidClass(param.getClassName());
Rep rep = Rep.of(clazz);
@@ -1337,6 +1332,25 @@ public class QueryService extends BasicService {
}
}
+ public Class<?> getValidClass(String className) {
+ Class<?> clazz;
+ try {
+ List<String> classList = new ArrayList<>();
+ Rep.VALUE_MAP.keySet().forEach(key -> {
+ classList.add(key.getName());
+ });
+ if (classList.contains(className)) {
+ clazz = Class.forName(className);
+ } else {
+ clazz = Class.forName("java.lang.Object");
+ }
+ logger.debug("Class parameter for sql is: " + clazz.getName());
+ } catch (ClassNotFoundException e) {
+ throw new InternalErrorException(e);
+ }
+ return clazz;
+ }
+
public void setCacheManager(CacheManager cacheManager) {
this.cacheManager = cacheManager;
}
diff --git
a/server/src/test/java/org/apache/kylin/rest/service/QueryServiceTest.java
b/server/src/test/java/org/apache/kylin/rest/service/QueryServiceTest.java
index acf9e19..e1b646c 100644
--- a/server/src/test/java/org/apache/kylin/rest/service/QueryServiceTest.java
+++ b/server/src/test/java/org/apache/kylin/rest/service/QueryServiceTest.java
@@ -120,4 +120,10 @@ public class QueryServiceTest extends ServiceTestBase {
Assert.assertTrue(wrapper == null || wrapper.get() == null);
}
}
+
+ @Test
+ public void testClassName() throws ClassNotFoundException {
+ Assert.assertEquals(Class.forName("java.lang.Object"),
queryService.getValidClass("java.io.DataInputStream"));
+ Assert.assertEquals(Class.forName("java.lang.String"),
queryService.getValidClass("java.lang.String"));
+ }
}