Avoid exception from StringLiteral.getLiteralValue()

This commit is contained in:
aboyko
2024-11-26 21:10:38 -05:00
parent ec2cae875d
commit 93d8989d7d
4 changed files with 22 additions and 2 deletions

View File

@@ -153,6 +153,11 @@
<artifactId>org.eclipse.jgit</artifactId>
<version>${jgit-version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
</dependencyManagement>

View File

@@ -134,6 +134,11 @@
<artifactId>json</artifactId>
<version>20231013</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.lemminx</groupId>

View File

@@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.java.embedded.lang;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.text.StringEscapeUtils;
import org.eclipse.jdt.core.dom.StringLiteral;
import org.springframework.ide.vscode.commons.util.text.IRegion;
import org.springframework.ide.vscode.commons.util.text.Region;
@@ -31,8 +32,12 @@ public class StringLiteralLanguageSnippet implements EmbeddedLanguageSnippet {
*/
private transient List<Region> specialRegions;
private static String getLiteralValueStr(String escaped) {
return StringEscapeUtils.unescapeJava(escaped.substring(1, escaped.length() - 1));
}
public StringLiteralLanguageSnippet(StringLiteral literal) {
this(literal.getEscapedValue(), literal.getLiteralValue(), literal.getStartPosition());
this(literal.getEscapedValue(), getLiteralValueStr(literal.getEscapedValue()), literal.getStartPosition());
}
public StringLiteralLanguageSnippet(String escapedValue, String literalValue, int literalOffset) {

View File

@@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.java.embedded.lang;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.text.StringEscapeUtils;
import org.eclipse.jdt.core.dom.TextBlock;
import org.springframework.ide.vscode.commons.util.text.IRegion;
import org.springframework.ide.vscode.commons.util.text.Region;
@@ -26,8 +27,12 @@ public class TextBlockLanguageSnippet implements EmbeddedLanguageSnippet {
private transient int startOffset;
private transient List<Region> specialRegions;
private static String getLiteralValueStr(String escaped) {
return StringEscapeUtils.unescapeJava(escaped.substring(3, escaped.length() - 3));
}
public TextBlockLanguageSnippet(TextBlock block) {
this(block.getEscapedValue(), block.getLiteralValue(), block.getStartPosition());
this(block.getEscapedValue(), getLiteralValueStr(block.getEscapedValue()), block.getStartPosition());
}
public TextBlockLanguageSnippet(String escapedValue, String literalValue, int literalOffset) {