AMBARI-20199. HiveView2.0 query fails if we have an additional newline after the last query statement ending with ';'. (dipayanb)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4fb86de5 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4fb86de5 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4fb86de5 Branch: refs/heads/branch-feature-AMBARI-12556 Commit: 4fb86de568347276c99a5cab739b4cab60f49b24 Parents: 0712ef6 Author: Dipayan Bhowmick <[email protected]> Authored: Wed Mar 1 12:09:42 2017 +0530 Committer: Dipayan Bhowmick <[email protected]> Committed: Wed Mar 1 12:10:14 2017 +0530 ---------------------------------------------------------------------- .../jobs/viewJobs/JobControllerImpl.java | 28 +++++++++++++++---- .../jobs/viewJobs/JobControllerImpl.java | 29 ++++++++++++++++---- 2 files changed, 45 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/4fb86de5/contrib/views/hive-next/src/main/java/org/apache/ambari/view/hive2/resources/jobs/viewJobs/JobControllerImpl.java ---------------------------------------------------------------------- diff --git a/contrib/views/hive-next/src/main/java/org/apache/ambari/view/hive2/resources/jobs/viewJobs/JobControllerImpl.java b/contrib/views/hive-next/src/main/java/org/apache/ambari/view/hive2/resources/jobs/viewJobs/JobControllerImpl.java index 66b8334..f1afc0f 100644 --- a/contrib/views/hive-next/src/main/java/org/apache/ambari/view/hive2/resources/jobs/viewJobs/JobControllerImpl.java +++ b/contrib/views/hive-next/src/main/java/org/apache/ambari/view/hive2/resources/jobs/viewJobs/JobControllerImpl.java @@ -39,7 +39,7 @@ import org.apache.ambari.view.hive2.utils.ServiceFormattedException; import org.apache.ambari.view.utils.hdfs.HdfsApi; import org.apache.ambari.view.utils.hdfs.HdfsApiException; import org.apache.ambari.view.utils.hdfs.HdfsUtil; -import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,6 +47,13 @@ import java.io.IOException; import java.lang.reflect.Proxy; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; +import javax.annotation.Nullable; + +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.Lists; public class JobControllerImpl implements JobController, ModifyNotificationDelegate { private final static Logger LOG = @@ -113,11 +120,20 @@ public class JobControllerImpl implements JobController, ModifyNotificationDeleg } private String[] getStatements(String jobDatabase, String query) { - String[] queries = query.split(";"); - - - String[] strings = {"use " + jobDatabase}; - return ArrayUtils.addAll(strings, queries); + List<String> queries = Lists.asList("use " + jobDatabase, query.split(";")); + List<String> cleansedQueries = FluentIterable.from(queries).transform(new Function<String, String>() { + @Nullable + @Override + public String apply(@Nullable String s) { + return s.trim(); + } + }).filter(new Predicate<String>() { + @Override + public boolean apply(@Nullable String s) { + return !StringUtils.isEmpty(s); + } + }).toList(); + return cleansedQueries.toArray(new String[0]); } http://git-wip-us.apache.org/repos/asf/ambari/blob/4fb86de5/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/jobs/viewJobs/JobControllerImpl.java ---------------------------------------------------------------------- diff --git a/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/jobs/viewJobs/JobControllerImpl.java b/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/jobs/viewJobs/JobControllerImpl.java index 1511e5b..2886e65 100644 --- a/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/jobs/viewJobs/JobControllerImpl.java +++ b/contrib/views/hive20/src/main/java/org/apache/ambari/view/hive20/resources/jobs/viewJobs/JobControllerImpl.java @@ -39,7 +39,7 @@ import org.apache.ambari.view.hive20.utils.ServiceFormattedException; import org.apache.ambari.view.utils.hdfs.HdfsApi; import org.apache.ambari.view.utils.hdfs.HdfsApiException; import org.apache.ambari.view.utils.hdfs.HdfsUtil; -import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,6 +47,14 @@ import java.io.IOException; import java.lang.reflect.Proxy; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; + +import javax.annotation.Nullable; + +import com.google.common.base.Function; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.Lists; public class JobControllerImpl implements JobController, ModifyNotificationDelegate { private final static Logger LOG = @@ -113,11 +121,20 @@ public class JobControllerImpl implements JobController, ModifyNotificationDeleg } private String[] getStatements(String jobDatabase, String query) { - String[] queries = query.split(";"); - - - String[] strings = {"use " + jobDatabase}; - return ArrayUtils.addAll(strings, queries); + List<String> queries = Lists.asList("use " + jobDatabase, query.split(";")); + List<String> cleansedQueries = FluentIterable.from(queries).transform(new Function<String, String>() { + @Nullable + @Override + public String apply(@Nullable String s) { + return s.trim(); + } + }).filter(new Predicate<String>() { + @Override + public boolean apply(@Nullable String s) { + return !StringUtils.isEmpty(s); + } + }).toList(); + return cleansedQueries.toArray(new String[0]); }
