Skip to content

Commit

Permalink
Merge pull request #15848 from NipunaRanasinghe/pr/add-jballerina-sup…
Browse files Browse the repository at this point in the history
…port

[IntelliJ Plugin] Migrate to 'jballerina' command
  • Loading branch information
NipunaRanasinghe authored Jun 20, 2019
2 parents 77443df + b6afdc7 commit 5ee56b9
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
import com.intellij.openapi.wm.ToolWindowId;
import org.jetbrains.annotations.NonNls;

import java.io.File;
import java.util.regex.Pattern;

/**
* Contains constants related to Ballerina plugin.
*/
Expand All @@ -36,13 +39,15 @@ private BallerinaConstants() {
public static final String BALLERINA_ORG_NAME = "ballerina";

@NonNls
public static final String BALLERINA_EXECUTABLE_NAME = "ballerina";
public static final String BALLERINA_EXECUTABLE_NAME = "jballerina";

@NonNls
public static final String BALLERINA_VERSION_FILE_PATH = "bin/version.txt";
@NonNls
public static final String BALLERINA_NEW_VERSION_FILE_PATH = "lib/version.txt";

public static final Pattern BALLERINA_VERSION_PATTERN = Pattern.compile("(\\d+\\.\\d+(\\.\\d+)?(-.+)?)");

public static final NotificationGroup BALLERINA_NOTIFICATION_GROUP =
NotificationGroup.balloonGroup("Ballerina plugin notifications");

Expand All @@ -65,4 +70,14 @@ private BallerinaConstants() {
public static final String BALLERINA_TEST_FILE_SUFFIX = "_test.bal";

public static final String BALLERINA_CONFIG_FILE_NAME = "Ballerina.toml";

public static final String BALLERINAX_SOURCE_PATH = "lib/repo";
public static final String LAUNCHER_SCRIPT_PATH = "lib/tools/lang-server/launcher";
public static final String BALLERINA_EXEC_PATH = "bin" + File.separator + BALLERINA_EXECUTABLE_NAME;

public static final String BALLERINA_LS_LAUNCHER_PATH = "lib/tools/lang-server/launcher";
public static final String BALLERINA_LS_LAUNCHER_NAME = "language-server-launcher";
public static final String BALLERINA_COMPOSER_LIB_PATH = "lib/tools/composer-library";


}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import com.intellij.util.containers.ContainerUtil;
import io.ballerina.plugins.idea.project.BallerinaApplicationLibrariesService;
import io.ballerina.plugins.idea.project.BallerinaProjectLibrariesService;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -116,7 +116,7 @@ public JComponent createComponent() {
protected List<UnnamedConfigurable> createConfigurables() {
List<UnnamedConfigurable> result = ContainerUtil.newArrayList();
String[] urlsFromEnv =
ContainerUtil.map2Array(BallerinaSdkUtil.getBallerinaPathsRootsFromEnvironment(), String.class,
ContainerUtil.map2Array(BallerinaSdkUtils.getBallerinaPathsRootsFromEnvironment(), String.class,
VirtualFile::getUrl);
result.add(new BallerinaLibrariesConfigurable("Global libraries",
BallerinaApplicationLibrariesService.getInstance(), urlsFromEnv));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
import com.intellij.util.ui.AsyncProcessIcon;
import com.intellij.util.ui.UIUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkService;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import io.ballerina.plugins.idea.sdk.BallerinaSmallIDEsSdkService;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -118,12 +118,12 @@ public void apply() throws ConfigurationException {
libraryModel.removeRoot(libUrl, OrderRootType.CLASSES);
}

String sdkPath = BallerinaSdkUtil.adjustSdkPath(mySdkPathField.getText());
String versionString = BallerinaSdkUtil.retrieveBallerinaVersion(sdkPath);
String sdkPath = BallerinaSdkUtils.adjustSdkPath(mySdkPathField.getText());
String versionString = BallerinaSdkUtils.retrieveBallerinaVersion(sdkPath);
boolean toRemove = StringUtil.isEmpty(sdkPath) || versionString == null;

if (!toRemove) {
for (VirtualFile file : BallerinaSdkUtil.getSdkDirectoriesToAttach(sdkPath, versionString)) {
for (VirtualFile file : BallerinaSdkUtils.getSdkDirectoriesToAttach(sdkPath, versionString)) {
libraryModel.addRoot(file, OrderRootType.CLASSES);
}
}
Expand Down Expand Up @@ -151,7 +151,7 @@ public void reset() {
@Override
public boolean isModified() {
String currentPath = StringUtil.notNullize(BallerinaSdkService.getInstance(myProject).getSdkHomePath(null));
return !BallerinaSdkUtil.adjustSdkPath(mySdkPathField.getText()).equals(currentPath);
return !BallerinaSdkUtils.adjustSdkPath(mySdkPathField.getText()).equals(currentPath);
}

@NotNull
Expand Down Expand Up @@ -210,7 +210,7 @@ private void asyncUpdateSdkVersion(@NotNull String sdkPath) {
if (!myAlarm.isDisposed()) {
myAlarm.cancelAllRequests();
myAlarm.addRequest(() -> {
String version = BallerinaSdkUtil.retrieveBallerinaVersion(BallerinaSdkUtil.adjustSdkPath(sdkPath));
String version = BallerinaSdkUtils.retrieveBallerinaVersion(BallerinaSdkUtils.adjustSdkPath(sdkPath));
ApplicationManager.getApplication().invokeLater(() -> {
if (!Disposer.isDisposed(myDisposable)) {
setVersion(version);
Expand Down Expand Up @@ -266,7 +266,7 @@ public MyBrowseFolderListener(@NotNull FileChooserDescriptor descriptor) {
@Nullable
@Override
protected VirtualFile getInitialFile() {
return ObjectUtils.chooseNotNull(super.getInitialFile(), BallerinaSdkUtil.suggestSdkDirectory());
return ObjectUtils.chooseNotNull(super.getInitialFile(), BallerinaSdkUtils.suggestSdkDirectory());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import io.ballerina.plugins.idea.extensions.BallerinaLSPExtensionManager;
import io.ballerina.plugins.idea.sdk.BallerinaPathModificationTracker;
import io.ballerina.plugins.idea.sdk.BallerinaSdk;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.wso2.lsp4intellij.IntellijLanguageClient;
Expand All @@ -36,6 +36,8 @@
import java.nio.file.Path;
import java.nio.file.Paths;

import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINAX_SOURCE_PATH;
import static io.ballerina.plugins.idea.BallerinaConstants.LAUNCHER_SCRIPT_PATH;
import static io.ballerina.plugins.idea.preloading.OperatingSystemUtils.getOperatingSystem;

/**
Expand All @@ -44,8 +46,6 @@
public class BallerinaPreloadingActivity extends PreloadingActivity {

private static final Logger LOGGER = Logger.getInstance(BallerinaPreloadingActivity.class);
private static final String BALLERINA_SOURCE_PATH = "lib/repo";
private static final String LAUNCHER_SCRIPT_PATH = "lib/tools/lang-server/launcher";

/**
* Preloading of the ballerina plugin.
Expand Down Expand Up @@ -90,7 +90,7 @@ private static void registerServerDefinition() {

private static boolean registerServerDefinition(Project project) {

BallerinaSdk balSdk = BallerinaSdkUtil.getBallerinaSdkFor(project);
BallerinaSdk balSdk = BallerinaSdkUtils.getBallerinaSdkFor(project);
if (balSdk.hasLangServerSupport()) {
return doRegister(balSdk.getSdkPath());
}
Expand Down Expand Up @@ -119,11 +119,11 @@ private static boolean doRegister(@NotNull String sdkPath) {
}

private static void updateBallerinaPathModificationTracker(Project project, ProjectStatus status) {
BallerinaSdk balSdk = BallerinaSdkUtil.getBallerinaSdkFor(project);
BallerinaSdk balSdk = BallerinaSdkUtils.getBallerinaSdkFor(project);
if (balSdk.getSdkPath() == null) {
return;
}
Path balxPath = Paths.get(balSdk.getSdkPath(), BALLERINA_SOURCE_PATH);
Path balxPath = Paths.get(balSdk.getSdkPath(), BALLERINAX_SOURCE_PATH);
if (balxPath.toFile().isDirectory()) {
if (status == ProjectStatus.OPENED) {
BallerinaPathModificationTracker.addPath(balxPath.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import io.ballerina.plugins.idea.BallerinaConstants;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jetbrains.annotations.NotNull;

/**
Expand Down Expand Up @@ -49,7 +49,7 @@ public boolean isUseBallerinaPathFromSystemEnvironment() {
public void setUseBallerinaPathFromSystemEnvironment(boolean useBallerinaPathFromSystemEnvironment) {
if (myState.isUseBallerinaPathFromSystemEnvironment() != useBallerinaPathFromSystemEnvironment) {
myState.setUseBallerinaPathFromSystemEnvironment(useBallerinaPathFromSystemEnvironment);
if (!BallerinaSdkUtil.getBallerinaPathsRootsFromEnvironment().isEmpty()) {
if (!BallerinaSdkUtils.getBallerinaPathsRootsFromEnvironment().isEmpty()) {
incModificationCount();
ApplicationManager.getApplication().getMessageBus().syncPublisher(LIBRARIES_TOPIC)
.librariesChanged(getLibraryRootUrls());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
import io.ballerina.plugins.idea.BallerinaConstants;
import io.ballerina.plugins.idea.configuration.BallerinaLibrariesConfigurableProvider;
import io.ballerina.plugins.idea.sdk.BallerinaSdkService;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.TestOnly;

Expand Down Expand Up @@ -280,7 +280,7 @@ public void run() {
Project project = myModule.getProject();
if (BallerinaSdkService.getInstance(project).isBallerinaModule(myModule)) {
synchronized (myLastHandledBallerinaPathSourcesRoots) {
Collection<VirtualFile> ballerinaPathSourcesRoots = BallerinaSdkUtil.getBallerinaPathRoots(project,
Collection<VirtualFile> ballerinaPathSourcesRoots = BallerinaSdkUtils.getBallerinaPathRoots(project,
myModule);
Set<VirtualFile> excludeRoots =
ContainerUtil.newHashSet(ProjectRootManager.getInstance(project).getContentRoots());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
import io.ballerina.plugins.idea.psi.BallerinaReturnType;
import io.ballerina.plugins.idea.psi.BallerinaTupleTypeName;
import io.ballerina.plugins.idea.psi.BallerinaTypeName;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

Expand Down Expand Up @@ -163,7 +163,7 @@ public static VirtualFile findFileInProjectSDK(@NotNull Project project, @NotNul

@Nullable
public static VirtualFile getSDKSrcRoot(@NotNull Project project, @Nullable Module module) {
LinkedHashSet<VirtualFile> sources = BallerinaSdkUtil.getSourcesPathsToLookup(project, module);
LinkedHashSet<VirtualFile> sources = BallerinaSdkUtils.getSourcesPathsToLookup(project, module);
if (sources.isEmpty()) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import com.intellij.util.containers.ContainerUtil;
import io.ballerina.plugins.idea.BallerinaConstants;
import io.ballerina.plugins.idea.sdk.BallerinaSdkService;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -107,7 +107,7 @@ public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEn
@NotNull
@Override
public Collection<Module> getValidModules() {
return BallerinaSdkUtil.getBallerinaModules(getProject());
return BallerinaSdkUtils.getBallerinaModules(getProject());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public Icon getIconForAddAction() {
@Nullable
@Override
public String suggestHomePath() {
VirtualFile suggestSdkDirectory = BallerinaSdkUtil.suggestSdkDirectory();
VirtualFile suggestSdkDirectory = BallerinaSdkUtils.suggestSdkDirectory();
return suggestSdkDirectory != null ? suggestSdkDirectory.getPath() : null;
}

Expand Down Expand Up @@ -105,7 +105,7 @@ public String suggestSdkName(@Nullable String currentSdkName, @NotNull String sd
@Nullable
@Override
public String getVersionString(@NotNull String sdkHome) {
return BallerinaSdkUtil.retrieveBallerinaVersion(sdkHome);
return BallerinaSdkUtils.retrieveBallerinaVersion(sdkHome);
}

@Nullable
Expand Down Expand Up @@ -145,7 +145,7 @@ public void setupSdkPaths(@NotNull Sdk sdk) {
}
modificator.setHomePath(path);

for (VirtualFile file : BallerinaSdkUtil.getSdkDirectoriesToAttach(path, versionString)) {
for (VirtualFile file : BallerinaSdkUtils.getSdkDirectoriesToAttach(path, versionString)) {
modificator.addRoot(file, OrderRootType.CLASSES);
modificator.addRoot(file, OrderRootType.SOURCES);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,23 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.intellij.util.containers.ContainerUtil.newLinkedHashSet;
import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINA_COMPOSER_LIB_PATH;
import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINA_EXECUTABLE_NAME;
import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINA_EXEC_PATH;
import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINA_LS_LAUNCHER_NAME;
import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINA_LS_LAUNCHER_PATH;
import static io.ballerina.plugins.idea.BallerinaConstants.BALLERINA_VERSION_PATTERN;

/**
* Contains util classes related to Ballerina SDK.
*/
public class BallerinaSdkUtil {
public class BallerinaSdkUtils {

private static final Pattern BALLERINA_VERSION_PATTERN = Pattern.compile("(\\d+\\.\\d+(\\.\\d+)?(-.+)?)");
private static final Key<String> VERSION_DATA_KEY = Key.create("BALLERINA_VERSION_KEY");
private static final String BALLERINA_EXEC_PATH = "bin" + File.separator + "ballerina";

private BallerinaSdkUtil() {
private BallerinaSdkUtils() {

}

Expand Down Expand Up @@ -196,8 +199,8 @@ private static boolean isValidSdk(String sdkPath) {
return false;
}
// Checks for either shell scripts or batch files, since the shell script recognition error in windows.
String balShellScript = Paths.get(sdkPath, "bin", "ballerina").toString();
String balBatchScript = Paths.get(sdkPath, "bin", "ballerina.bat").toString();
String balShellScript = Paths.get(sdkPath, "bin", BALLERINA_EXECUTABLE_NAME).toString();
String balBatchScript = Paths.get(sdkPath, "bin", BALLERINA_EXECUTABLE_NAME).toString() + ".bat";

return (new File(balShellScript).exists() || new File(balBatchScript).exists());
}
Expand All @@ -208,10 +211,10 @@ private static boolean hasLangServerSupport(String sdkPath) {
return false;
}
// Checks for either shell scripts or batch files, since the shell script recognition error in windows.
String launcherShellScript = Paths.get(sdkPath, "lib", "tools", "lang-server", "launcher",
"language-server-launcher.sh").toString();
String launcherBatchScript = Paths.get(sdkPath, "lib", "tools", "lang-server", "launcher",
"language-server-launcher.bat").toString();
String launcherShellScript = Paths.get(sdkPath, BALLERINA_LS_LAUNCHER_PATH,
BALLERINA_LS_LAUNCHER_NAME).toString() + ".sh";
String launcherBatchScript = Paths.get(sdkPath, BALLERINA_LS_LAUNCHER_PATH,
BALLERINA_LS_LAUNCHER_NAME).toString() + ".bat";

return new File(launcherShellScript).exists() || new File(launcherBatchScript).exists();
}
Expand All @@ -222,7 +225,7 @@ private static boolean hasWebviewSupport(String sdkPath) {
return false;
}
// Checks for composer library resource directory existence.
String composerLib = Paths.get(sdkPath, "lib", "tools", "composer-library").toString();
String composerLib = Paths.get(sdkPath, BALLERINA_COMPOSER_LIB_PATH).toString();
return new File(composerLib).exists();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public String getSdkVersion(@Nullable Module module) {
String result = null;
String sdkHomePath = getSdkHomePath(module);
if (sdkHomePath != null) {
result = BallerinaSdkUtil.retrieveBallerinaVersion(sdkHomePath);
result = BallerinaSdkUtils.retrieveBallerinaVersion(sdkHomePath);
}
return CachedValueProvider.Result.create(result, this);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import io.ballerina.plugins.idea.sdk.BallerinaSdk;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtil;
import io.ballerina.plugins.idea.sdk.BallerinaSdkUtils;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;

Expand Down Expand Up @@ -79,7 +79,7 @@ static String generateDiagramHtml(@NotNull VirtualFile file, DiagramHtmlPanel pa
Editor editor = getEditorFor(file, project);

// Retrieves attached ballerina SDk of the project.
BallerinaSdk balSdk = BallerinaSdkUtil.getBallerinaSdkFor(project);
BallerinaSdk balSdk = BallerinaSdkUtils.getBallerinaSdkFor(project);
if (balSdk.getSdkPath() == null) {
LOG.warn(String.format("No Ballerina SDK is found for the project: %s", project.getName()));
return "";
Expand Down

0 comments on commit 5ee56b9

Please # to comment.