1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.expression.spel.ast;
18
19 import org.springframework.asm.MethodVisitor;
20 import org.springframework.expression.TypedValue;
21 import org.springframework.expression.spel.CodeFlow;
22
23
24
25
26
27
28
29
30 public class StringLiteral extends Literal {
31
32 private final TypedValue value;
33
34
35 public StringLiteral(String payload, int pos, String value) {
36 super(payload,pos);
37 value = value.substring(1, value.length() - 1);
38 this.value = new TypedValue(value.replaceAll("''", "'").replaceAll("\"\"", "\""));
39 this.exitTypeDescriptor = "Ljava/lang/String";
40 }
41
42
43 @Override
44 public TypedValue getLiteralValue() {
45 return this.value;
46 }
47
48 @Override
49 public String toString() {
50 return "'" + getLiteralValue().getValue() + "'";
51 }
52
53 @Override
54 public boolean isCompilable() {
55 return true;
56 }
57
58 @Override
59 public void generateCode(MethodVisitor mv, CodeFlow cf) {
60 mv.visitLdcInsn(this.value.getValue());
61 cf.pushDescriptor(this.exitTypeDescriptor);
62 }
63
64 }