diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/DocumentRegion.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/DocumentRegion.java index 596f2ffaa..7e88d495a 100644 --- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/DocumentRegion.java +++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/text/DocumentRegion.java @@ -125,6 +125,19 @@ public class DocumentRegion implements CharSequence, IRegion { throw new IndexOutOfBoundsException(""+offset); } } + + /** + * Like charAt, but doesn't IndexOutOfBoundsException. Instead it + * return (char)0. + */ + public char safeCharAt(int offset) { + try { + return charAt(offset); + } catch (IndexOutOfBoundsException e) { + return 0; + } + } + /** * Determines whether this range contains a given (absolute) offset. diff --git a/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/github/GithubValueParsers.java b/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/github/GithubValueParsers.java index 6559393bd..8fa2783f5 100644 --- a/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/github/GithubValueParsers.java +++ b/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/github/GithubValueParsers.java @@ -89,7 +89,7 @@ public class GithubValueParsers { for (String expectedPrefix : GithubRepoContentAssistant.URI_PREFIXES) { int lastChar = expectedPrefix.length()-1; if (str.startsWith(expectedPrefix.substring(0, lastChar))) { - char actualSeparator = str.charAt(lastChar); + char actualSeparator = str.safeCharAt(lastChar); char expectedSeparator = expectedPrefix.charAt(lastChar); if (actualSeparator==expectedSeparator) { return expectedPrefix;