/* * Copyright 2013 Guidewire Software, Inc. */ package gw.plugin.ij.runner; import com.intellij.execution.CantRunException; import com.intellij.execution.ExecutionException; import com.intellij.execution.configurations.JavaParameters; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.JavaSdkType; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public abstract class GosuProgramRunner { public abstract boolean isValidModule(@NotNull Module module); public abstract boolean ensureRunnerConfigured(@Nullable Module module, final String confName, final Project project); public abstract void configureCommandLine(Sdk gosuSdk, JavaParameters params, @Nullable Module module, boolean tests, VirtualFile script, GosuProgramRunConfiguration configuration) throws CantRunException; protected static void setToolsJar(@NotNull JavaParameters params) { Sdk jdk = params.getJdk(); if (jdk != null && jdk.getSdkType() instanceof JavaSdkType) { String toolsPath = ((JavaSdkType) jdk.getSdkType()).getToolsPath(jdk); if (toolsPath != null) { params.getVMParametersList().add("-Dtools.jar=" + toolsPath); } } } protected static void addClasspathFromRootModel(@Nullable Module module, boolean isTests, @NotNull JavaParameters params) throws CantRunException { if (module == null) { return; } final JavaParameters tmp = new JavaParameters(); tmp.configureByModule(module, isTests ? JavaParameters.CLASSES_AND_TESTS : JavaParameters.CLASSES_ONLY); if (tmp.getClassPath().getVirtualFiles().isEmpty()) { return; } params.getClassPath().addAll(tmp.getClassPath().getPathList()); } }