ui: implemented showing gradle errors in UI

This commit is contained in:
mlangkabel
2017-10-03 16:19:07 +02:00
parent e587f081d6
commit 798944ff38
2 changed files with 68 additions and 30 deletions
@@ -1,17 +1,16 @@
package com.sourcetrail.gradle; package com.sourcetrail.gradle;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream; import java.io.PrintStream;
import java.io.StringReader; import java.io.StringReader;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import org.gradle.api.GradleException;
import org.gradle.tooling.BuildLauncher; import org.gradle.tooling.BuildLauncher;
import org.gradle.tooling.GradleConnector; import org.gradle.tooling.GradleConnector;
import org.gradle.tooling.ProjectConnection; import org.gradle.tooling.ProjectConnection;
@@ -20,36 +19,50 @@ public class InfoRetriever
{ {
public static String getMainSrcDirs(String projectRootPath, String initScriptPath) public static String getMainSrcDirs(String projectRootPath, String initScriptPath)
{ {
String ret = ""; try
List<String> srcDirs = getSrcDirs("printMainSrcDirs", projectRootPath, initScriptPath);
for (int i = 0; i < srcDirs.size(); i++)
{ {
if (i != 0) String ret = "";
List<String> srcDirs = getSrcDirs("printMainSrcDirs", projectRootPath, initScriptPath);
for (int i = 0; i < srcDirs.size(); i++)
{ {
ret += ";"; if (i != 0)
{
ret += ";";
}
ret += srcDirs.get(i);
} }
ret += srcDirs.get(i);
return ret;
}
catch (GradleException e)
{
return "[ERROR] " + e.getMessage();
} }
return ret;
} }
public static String getTestSrcDirs(String projectRootPath, String initScriptPath) public static String getTestSrcDirs(String projectRootPath, String initScriptPath)
{ {
String ret = ""; try
List<String> srcDirs = getSrcDirs("printTestSrcDirs", projectRootPath, initScriptPath);
for (int i = 0; i < srcDirs.size(); i++)
{ {
if (i != 0) String ret = "";
List<String> srcDirs = getSrcDirs("printTestSrcDirs", projectRootPath, initScriptPath);
for (int i = 0; i < srcDirs.size(); i++)
{ {
ret += ";"; if (i != 0)
{
ret += ";";
}
ret += srcDirs.get(i);
} }
ret += srcDirs.get(i);
return ret;
}
catch (GradleException e)
{
return "[ERROR] " + e.getMessage();
} }
return ret;
} }
public static void copyCompileLibs(String projectRootPath, String initScriptPath, String targetPath) public static void copyCompileLibs(String projectRootPath, String initScriptPath, String targetPath)
@@ -84,7 +97,7 @@ public class InfoRetriever
return paths; return paths;
} }
private static String executeTask(String taskName, String projectRootPath, String initScriptPath, List<String> additionalArguments) private static String executeTask(String taskName, String projectRootPath, String initScriptPath, List<String> additionalArguments) throws GradleException
{ {
ProjectConnection connection = GradleConnector ProjectConnection connection = GradleConnector
.newConnector() .newConnector()
@@ -99,7 +112,7 @@ public class InfoRetriever
List<String> arguments = new ArrayList<>(); List<String> arguments = new ArrayList<>();
arguments.add("--init-script"); arguments.add("--init-script");
arguments.add(initScriptPath); arguments.add(initScriptPath);
// arguments.add("-q"); arguments.add("-q");
if (additionalArguments != null) if (additionalArguments != null)
{ {
@@ -124,8 +137,7 @@ public class InfoRetriever
if (!errorStream.toString().isEmpty()) if (!errorStream.toString().isEmpty())
{ {
// TODO: handle this by sending the error to cpp throw new GradleException(errorStream.toString());
System.out.println("Error: " + errorStream.toString()); // TODO: remove this later
} }
return outputStream.toString(); return outputStream.toString();
+32 -6
View File
@@ -6,9 +6,11 @@
#include "data/parser/java/JavaEnvironmentFactory.h" #include "data/parser/java/JavaEnvironmentFactory.h"
#include "settings/ApplicationSettings.h" #include "settings/ApplicationSettings.h"
#include "utility/logging/logging.h" #include "utility/logging/logging.h"
#include "utility/messaging/type/MessageStatus.h"
#include "utility/ResourcePaths.h" #include "utility/ResourcePaths.h"
#include "utility/utilityJava.h" #include "utility/utilityJava.h"
#include "utility/utilityString.h" #include "utility/utilityString.h"
#include "Application.h"
namespace namespace
{ {
@@ -57,9 +59,21 @@ namespace utility
{ {
std::shared_ptr<JavaEnvironment> javaEnvironment = JavaEnvironmentFactory::getInstance()->createEnvironment(); std::shared_ptr<JavaEnvironment> javaEnvironment = JavaEnvironmentFactory::getInstance()->createEnvironment();
{ {
std::string mainSrcDirs = ""; std::string output = "";
javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getMainSrcDirs", mainSrcDirs, projectDirectoryPath.str(), gradleInitScriptPath); javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getMainSrcDirs", output, projectDirectoryPath.str(), gradleInitScriptPath);
for (const std::string mainSrcDir : utility::splitToVector(mainSrcDirs, ";"))
if (utility::isPrefix("[ERROR]", utility::trim(output)))
{
// TODO: move error handling to caller of this function
const std::string dialogMessage =
"The following error occurred while executing a Maven command:\n\n" + utility::replace(output, "\r\n", "\n");
MessageStatus(dialogMessage, true, false).dispatch();
Application::getInstance()->handleDialog(dialogMessage);
return std::vector<FilePath>();
}
for (const std::string mainSrcDir : utility::splitToVector(output, ";"))
{ {
uncheckedDirectories.insert(mainSrcDir); uncheckedDirectories.insert(mainSrcDir);
} }
@@ -67,9 +81,21 @@ namespace utility
if (addTestDirectories) if (addTestDirectories)
{ {
std::string testSrcDirs = ""; std::string output = "";
javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getTestSrcDirs", testSrcDirs, projectDirectoryPath.str(), gradleInitScriptPath); javaEnvironment->callStaticStringMethod("com/sourcetrail/gradle/InfoRetriever", "getTestSrcDirs", output, projectDirectoryPath.str(), gradleInitScriptPath);
for (const std::string testSrcDir : utility::splitToVector(testSrcDirs, ";"))
if (utility::isPrefix("[ERROR]", utility::trim(output)))
{
// TODO: move error handling to caller of this function
const std::string dialogMessage =
"The following error occurred while executing a Maven command:\n\n" + utility::replace(output, "\r\n", "\n");
MessageStatus(dialogMessage, true, false).dispatch();
Application::getInstance()->handleDialog(dialogMessage);
return std::vector<FilePath>();
}
for (const std::string testSrcDir : utility::splitToVector(output, ";"))
{ {
uncheckedDirectories.insert(testSrcDir); uncheckedDirectories.insert(testSrcDir);
} }