Skip to content

Commit 93d8989

Browse files
committed
Avoid exception from StringLiteral.getLiteralValue()
1 parent ec2cae8 commit 93d8989

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

headless-services/commons/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,11 @@
153153
<artifactId>org.eclipse.jgit</artifactId>
154154
<version>${jgit-version}</version>
155155
</dependency>
156+
<dependency>
157+
<groupId>org.apache.commons</groupId>
158+
<artifactId>commons-text</artifactId>
159+
<version>1.12.0</version>
160+
</dependency>
156161
</dependencies>
157162
</dependencyManagement>
158163

headless-services/spring-boot-language-server/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@
134134
<artifactId>json</artifactId>
135135
<version>20231013</version>
136136
</dependency>
137+
<dependency>
138+
<groupId>org.apache.commons</groupId>
139+
<artifactId>commons-text</artifactId>
140+
</dependency>
141+
137142

138143
<dependency>
139144
<groupId>org.eclipse.lemminx</groupId>

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/embedded/lang/StringLiteralLanguageSnippet.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.ArrayList;
1414
import java.util.List;
1515

16+
import org.apache.commons.text.StringEscapeUtils;
1617
import org.eclipse.jdt.core.dom.StringLiteral;
1718
import org.springframework.ide.vscode.commons.util.text.IRegion;
1819
import org.springframework.ide.vscode.commons.util.text.Region;
@@ -31,8 +32,12 @@ public class StringLiteralLanguageSnippet implements EmbeddedLanguageSnippet {
3132
*/
3233
private transient List<Region> specialRegions;
3334

35+
private static String getLiteralValueStr(String escaped) {
36+
return StringEscapeUtils.unescapeJava(escaped.substring(1, escaped.length() - 1));
37+
}
38+
3439
public StringLiteralLanguageSnippet(StringLiteral literal) {
35-
this(literal.getEscapedValue(), literal.getLiteralValue(), literal.getStartPosition());
40+
this(literal.getEscapedValue(), getLiteralValueStr(literal.getEscapedValue()), literal.getStartPosition());
3641
}
3742

3843
public StringLiteralLanguageSnippet(String escapedValue, String literalValue, int literalOffset) {

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/embedded/lang/TextBlockLanguageSnippet.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.ArrayList;
1414
import java.util.List;
1515

16+
import org.apache.commons.text.StringEscapeUtils;
1617
import org.eclipse.jdt.core.dom.TextBlock;
1718
import org.springframework.ide.vscode.commons.util.text.IRegion;
1819
import org.springframework.ide.vscode.commons.util.text.Region;
@@ -26,8 +27,12 @@ public class TextBlockLanguageSnippet implements EmbeddedLanguageSnippet {
2627
private transient int startOffset;
2728
private transient List<Region> specialRegions;
2829

30+
private static String getLiteralValueStr(String escaped) {
31+
return StringEscapeUtils.unescapeJava(escaped.substring(3, escaped.length() - 3));
32+
}
33+
2934
public TextBlockLanguageSnippet(TextBlock block) {
30-
this(block.getEscapedValue(), block.getLiteralValue(), block.getStartPosition());
35+
this(block.getEscapedValue(), getLiteralValueStr(block.getEscapedValue()), block.getStartPosition());
3136
}
3237

3338
public TextBlockLanguageSnippet(String escapedValue, String literalValue, int literalOffset) {

0 commit comments

Comments
 (0)