use of com.intellij.execution.ExecutionException in project intellij-community by JetBrains.
the class JdkPopupAction method retrieveJDKLocations.
private static ArrayList<Pair<File, String>> retrieveJDKLocations() {
ArrayList<Pair<File, String>> jdkLocations = new ArrayList<>();
Collection<String> homePaths = JavaSdk.getInstance().suggestHomePaths();
for (final String path : homePaths) {
try {
File file = new File(path);
File javaExe = new File(new File(file, "bin"), "java.exe");
ProcessOutput output = ExecUtil.execAndGetOutput(new GeneralCommandLine(javaExe.getAbsolutePath(), "-version"));
List<String> lines = output.getStderrLines();
if (lines.isEmpty()) {
lines = output.getStdoutLines();
}
StringBuilder stringBuilder = new StringBuilder();
if (lines.size() == 3) {
stringBuilder.append("JDK ");
String line = lines.get(1);
int pos = line.indexOf("(build ");
if (pos != -1) {
stringBuilder.append(line.substring(pos + 7, line.length() - 1));
}
line = lines.get(2);
pos = line.indexOf(" (build");
if (pos != -1) {
String substring = line.substring(0, pos);
stringBuilder.append(" (").append(substring).append(")");
}
} else {
stringBuilder.append(file.getName());
}
jdkLocations.add(Pair.create(file, stringBuilder.toString()));
} catch (ExecutionException e) {
LOG.debug(e);
}
}
return jdkLocations;
}
use of com.intellij.execution.ExecutionException in project intellij-plugins by JetBrains.
the class OsgiRunState method getSelectedBundles.
/**
* Here we got the magic. All libs are turned into bundles sorted and returned.
*/
private List<SelectedBundle> getSelectedBundles() throws ExecutionException {
final Ref<List<SelectedBundle>> result = Ref.create();
final Ref<ExecutionException> error = Ref.create();
ProgressManager.getInstance().run(new Task.Modal(myRunConfiguration.getProject(), "Preparing bundles...", false) {
@Override
public void run(@NotNull ProgressIndicator progressIndicator) {
progressIndicator.setIndeterminate(false);
AccessToken token = ApplicationManager.getApplication().acquireReadActionLock();
try {
Set<SelectedBundle> selectedBundles = new HashSet<>();
// the bundles are module names, by now we try to find jar files in the output directory which we can then install
ModuleManager moduleManager = ModuleManager.getInstance(myRunConfiguration.getProject());
BundleCompiler bundleCompiler = new BundleCompiler(progressIndicator);
int bundleCount = myRunConfiguration.getBundlesToDeploy().size();
for (int i = 0; i < bundleCount; i++) {
progressIndicator.setFraction((double) i / bundleCount);
SelectedBundle selectedBundle = myRunConfiguration.getBundlesToDeploy().get(i);
if (selectedBundle.isModule()) {
// use the output jar name if it is a module
String name = selectedBundle.getName();
Module module = moduleManager.findModuleByName(name);
if (module == null) {
throw new CantRunException("Module '" + name + "' no longer exists. Please check your run configuration.");
}
OsmorcFacet facet = OsmorcFacet.getInstance(module);
if (facet == null) {
throw new CantRunException("Module '" + name + "' has no OSGi facet. Please check your run configuration.");
}
selectedBundle.setBundlePath(facet.getConfiguration().getJarFileLocation());
selectedBundles.add(selectedBundle);
// add all the library dependencies of the bundle
List<String> paths = bundleCompiler.bundlifyLibraries(module);
for (String path : paths) {
selectedBundles.add(new SelectedBundle(SelectedBundle.BundleType.PlainLibrary, "Dependency", path));
}
} else {
if (selectedBundles.contains(selectedBundle)) {
// if the user selected a dependency as runnable library, we need to replace the dependency with
// the runnable library part
selectedBundles.remove(selectedBundle);
}
selectedBundles.add(selectedBundle);
}
}
// filter out bundles which have the same symbolic name
Map<String, SelectedBundle> filteredBundles = new HashMap<>();
for (SelectedBundle selectedBundle : selectedBundles) {
String path = selectedBundle.getBundlePath();
if (path != null) {
String name = CachingBundleInfoProvider.getBundleSymbolicName(path);
String version = CachingBundleInfoProvider.getBundleVersion(path);
String key = name + version;
if (!filteredBundles.containsKey(key)) {
filteredBundles.put(key, selectedBundle);
}
}
}
List<SelectedBundle> sortedBundles = ContainerUtil.newArrayList(filteredBundles.values());
Collections.sort(sortedBundles, START_LEVEL_COMPARATOR);
result.set(sortedBundles);
} catch (CantRunException e) {
error.set(e);
} catch (OsgiBuildException e) {
LOG.warn(e);
error.set(new CantRunException(e.getMessage()));
} catch (Throwable t) {
LOG.error(t);
error.set(new CantRunException("Internal error: " + t.getMessage()));
} finally {
token.finish();
}
}
});
if (!result.isNull()) {
return result.get();
} else {
throw error.get();
}
}
use of com.intellij.execution.ExecutionException in project intellij-plugins by JetBrains.
the class PhoneGapTargets method list.
protected List<String> list(String executableName, Function<String, String> parser, boolean errorOut, String... params) {
List<String> result = ContainerUtil.newArrayList();
File deployExecutable = PathEnvironmentVariableUtil.findInPath(executableName);
if (deployExecutable == null)
return result;
try {
GeneralCommandLine line = new GeneralCommandLine(deployExecutable.getAbsolutePath());
line.addParameters(params);
ProcessOutput output = ExecUtil.execAndGetOutput(line);
List<String> lines = null;
if (errorOut) {
if (!StringUtil.isEmpty(output.getStderr())) {
lines = output.getStderrLines();
}
}
if (lines == null) {
lines = output.getStdoutLines();
}
if (output.getExitCode() != 0)
return result;
for (String value : lines) {
ContainerUtil.addIfNotNull(result, parser.fun(value));
}
} catch (ExecutionException e) {
LOGGER.debug(e.getMessage(), e);
}
return result;
}
use of com.intellij.execution.ExecutionException in project intellij-plugins by JetBrains.
the class KarmaExecutionSession method findTopLevelSuiteNames.
private static List<String> findTopLevelSuiteNames(@NotNull Project project, @NotNull String testFilePath) throws ExecutionException {
VirtualFile file = LocalFileFinder.findFile(testFilePath);
if (file == null) {
throw new ExecutionException("Cannot find test file by " + testFilePath);
}
PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
JSFile jsFile = ObjectUtils.tryCast(psiFile, JSFile.class);
if (jsFile == null) {
LOG.info("Not a JavaScript file " + testFilePath + ", " + (psiFile == null ? "null" : psiFile.getClass()));
throw new ExecutionException("Not a JavaScript file: " + testFilePath);
}
JasmineFileStructure jasmine = JasmineFileStructureBuilder.getInstance().fetchCachedTestFileStructure(jsFile);
List<String> elements = jasmine.getTopLevelElements();
if (!elements.isEmpty()) {
return elements;
}
QUnitFileStructure qunit = QUnitFileStructureBuilder.getInstance().fetchCachedTestFileStructure(jsFile);
elements = qunit.getTopLevelElements();
if (!elements.isEmpty()) {
return elements;
}
throw new ExecutionException("No tests found in " + testFilePath);
}
use of com.intellij.execution.ExecutionException in project intellij-plugins by JetBrains.
the class KarmaExecutionSession method createProcessHandler.
@NotNull
private ProcessHandler createProcessHandler(@NotNull final KarmaServer server) throws ExecutionException {
final File clientAppFile;
try {
clientAppFile = server.getKarmaJsSourcesLocator().getClientAppFile();
} catch (IOException e) {
throw new ExecutionException("Can't find karma-intellij test runner", e);
}
if (server.areBrowsersReady()) {
return createOSProcessHandler(server, clientAppFile);
}
final NopProcessHandler nopProcessHandler = new NopProcessHandler();
terminateOnServerShutdown(server, nopProcessHandler);
return nopProcessHandler;
}
Aggregations