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 <598593...@qq.com> 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")); + } }