public class freemarker.core.InvalidReferenceException extends freemarker.template.TemplateException
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: freemarker.core.InvalidReferenceException
super_class: freemarker.template.TemplateException
{
static final freemarker.core.InvalidReferenceException FAST_INSTANCE;
descriptor: Lfreemarker/core/InvalidReferenceException;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.Object[] TIP;
descriptor: [Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.Object[] TIP_MISSING_ASSIGNMENT_TARGET;
descriptor: [Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String TIP_NO_DOLLAR;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "Variable references must not start with \"$\", unless the \"$\" is really part of the variable name."
private static final java.lang.String TIP_LAST_STEP_DOT;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "It's the step after the last dot that caused this error, not those before it."
private static final java.lang.String TIP_LAST_STEP_SQUARE_BRACKET;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "It's the final [] step that caused this error, not those before it."
private static final java.lang.String TIP_JSP_TAGLIBS;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "The \"JspTaglibs\" variable isn't a core FreeMarker feature; it's only available when templates are invoked through freemarker.ext.servlet.FreemarkerServlet (or other custom FreeMarker-JSP integration solution)."
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=0
0: invokestatic freemarker.core.Environment.getCurrentEnvironment:()Lfreemarker/core/Environment;
astore 0
start local 0 1: aconst_null
invokestatic freemarker.core.Environment.setCurrentEnvironment:(Lfreemarker/core/Environment;)V
2: new freemarker.core.InvalidReferenceException
dup
3: ldc "Invalid reference. Details are unavilable, as this should have been handled by an FTL construct. If it wasn't, that's problably a bug in FreeMarker."
4: aconst_null
5: invokespecial freemarker.core.InvalidReferenceException.<init>:(Ljava/lang/String;Lfreemarker/core/Environment;)V
putstatic freemarker.core.InvalidReferenceException.FAST_INSTANCE:Lfreemarker/core/InvalidReferenceException;
6: goto 10
StackMap locals: freemarker.core.Environment
StackMap stack: java.lang.Throwable
7: astore 1
8: aload 0
invokestatic freemarker.core.Environment.setCurrentEnvironment:(Lfreemarker/core/Environment;)V
9: aload 1
athrow
10: StackMap locals:
StackMap stack:
aload 0
invokestatic freemarker.core.Environment.setCurrentEnvironment:(Lfreemarker/core/Environment;)V
end local 0 11: bipush 7
anewarray java.lang.Object
dup
iconst_0
12: ldc "If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use "
aastore
dup
iconst_1
13: ldc "<#if myOptionalVar??>"
aastore
dup
iconst_2
ldc "when-present"
aastore
dup
iconst_3
ldc "<#else>"
aastore
dup
iconst_4
ldc "when-missing"
aastore
dup
iconst_5
ldc "</#if>"
aastore
dup
bipush 6
14: ldc ". (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??"
aastore
15: putstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
16: bipush 8
anewarray java.lang.Object
dup
iconst_0
17: ldc "If the target variable is known to be legally null or missing sometimes, instead of something like "
aastore
dup
iconst_1
18: ldc "<#assign x += 1>"
aastore
dup
iconst_2
ldc ", you could write "
aastore
dup
iconst_3
ldc "<#if x??>"
aastore
dup
iconst_4
ldc "<#assign x += 1>"
aastore
dup
iconst_5
ldc "</#if>"
aastore
dup
bipush 6
19: ldc " or "
aastore
dup
bipush 7
ldc "<#assign x = (x!0) + 1>"
aastore
20: putstatic freemarker.core.InvalidReferenceException.TIP_MISSING_ASSIGNMENT_TARGET:[Ljava/lang/Object;
21: return
LocalVariableTable:
Start End Slot Name Signature
1 11 0 prevEnv Lfreemarker/core/Environment;
Exception table:
from to target type
1 7 7 any
public void <init>(freemarker.core.Environment);
descriptor: (Lfreemarker/core/Environment;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
ldc "Invalid reference: The expression has evaluated to null or refers to something that doesn't exist."
1: aload 1
invokespecial freemarker.template.TemplateException.<init>:(Ljava/lang/String;Lfreemarker/core/Environment;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lfreemarker/core/InvalidReferenceException;
0 3 1 env Lfreemarker/core/Environment;
MethodParameters:
Name Flags
env
public void <init>(java.lang.String, freemarker.core.Environment);
descriptor: (Ljava/lang/String;Lfreemarker/core/Environment;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokespecial freemarker.template.TemplateException.<init>:(Ljava/lang/String;Lfreemarker/core/Environment;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lfreemarker/core/InvalidReferenceException;
0 2 1 description Ljava/lang/String;
0 2 2 env Lfreemarker/core/Environment;
MethodParameters:
Name Flags
description
env
void <init>(freemarker.core._ErrorDescriptionBuilder, freemarker.core.Environment, freemarker.core.Expression);
descriptor: (Lfreemarker/core/_ErrorDescriptionBuilder;Lfreemarker/core/Environment;Lfreemarker/core/Expression;)V
flags: (0x0000)
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aconst_null
aload 2
aload 3
aload 1
invokespecial freemarker.template.TemplateException.<init>:(Ljava/lang/Throwable;Lfreemarker/core/Environment;Lfreemarker/core/Expression;Lfreemarker/core/_ErrorDescriptionBuilder;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lfreemarker/core/InvalidReferenceException;
0 2 1 description Lfreemarker/core/_ErrorDescriptionBuilder;
0 2 2 env Lfreemarker/core/Environment;
0 2 3 expression Lfreemarker/core/Expression;
MethodParameters:
Name Flags
description
env
expression
static freemarker.core.InvalidReferenceException getInstance(freemarker.core.Expression, freemarker.core.Environment);
descriptor: (Lfreemarker/core/Expression;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=5, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
aload 1
invokevirtual freemarker.core.Environment.getFastInvalidReferenceExceptions:()Z
ifeq 2
1: getstatic freemarker.core.InvalidReferenceException.FAST_INSTANCE:Lfreemarker/core/InvalidReferenceException;
areturn
2: StackMap locals:
StackMap stack:
aload 0
ifnull 31
3: new freemarker.core._ErrorDescriptionBuilder
dup
ldc "The following has evaluated to null or missing:"
invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual freemarker.core._ErrorDescriptionBuilder.blame:(Lfreemarker/core/Expression;)Lfreemarker/core/_ErrorDescriptionBuilder;
4: astore 2
start local 2 5: aload 0
invokestatic freemarker.core.InvalidReferenceException.endsWithDollarVariable:(Lfreemarker/core/Expression;)Z
ifeq 8
6: aload 2
iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "Variable references must not start with \"$\", unless the \"$\" is really part of the variable name."
aastore
dup
iconst_1
getstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
aastore
invokevirtual freemarker.core._ErrorDescriptionBuilder.tips:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
7: goto 30
StackMap locals: freemarker.core._ErrorDescriptionBuilder
StackMap stack:
8: aload 0
instanceof freemarker.core.Dot
ifeq 22
9: aload 0
checkcast freemarker.core.Dot
invokevirtual freemarker.core.Dot.getRHO:()Ljava/lang/String;
astore 3
start local 3 10: aconst_null
astore 4
start local 4 11: ldc "size"
aload 3
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 14
12: ldc "To query the size of a collection or map use ?size, like myList?size"
astore 4
13: goto 16
StackMap locals: java.lang.String java.lang.String
StackMap stack:
14: ldc "length"
aload 3
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 16
15: ldc "To query the length of a string use ?length, like myString?size"
astore 4
16: StackMap locals:
StackMap stack:
aload 2
17: aload 4
ifnonnull 19
18: iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "It's the step after the last dot that caused this error, not those before it."
aastore
dup
iconst_1
getstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
aastore
goto 20
19: StackMap locals:
StackMap stack: freemarker.core._ErrorDescriptionBuilder
iconst_3
anewarray java.lang.Object
dup
iconst_0
ldc "It's the step after the last dot that caused this error, not those before it."
aastore
dup
iconst_1
aload 4
aastore
dup
iconst_2
getstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
aastore
20: StackMap locals: freemarker.core.Expression freemarker.core.Environment freemarker.core._ErrorDescriptionBuilder java.lang.String java.lang.String
StackMap stack: freemarker.core._ErrorDescriptionBuilder java.lang.Object[]
invokevirtual freemarker.core._ErrorDescriptionBuilder.tips:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
end local 4 end local 3 21: goto 30
StackMap locals:
StackMap stack:
22: aload 0
instanceof freemarker.core.DynamicKeyName
ifeq 25
23: aload 2
iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "It's the final [] step that caused this error, not those before it."
aastore
dup
iconst_1
getstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
aastore
invokevirtual freemarker.core._ErrorDescriptionBuilder.tips:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
24: goto 30
StackMap locals:
StackMap stack:
25: aload 0
instanceof freemarker.core.Identifier
ifeq 29
26: aload 0
checkcast freemarker.core.Identifier
invokevirtual freemarker.core.Identifier.getName:()Ljava/lang/String;
ldc "JspTaglibs"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 29
27: aload 2
iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "The \"JspTaglibs\" variable isn't a core FreeMarker feature; it's only available when templates are invoked through freemarker.ext.servlet.FreemarkerServlet (or other custom FreeMarker-JSP integration solution)."
aastore
dup
iconst_1
getstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
aastore
invokevirtual freemarker.core._ErrorDescriptionBuilder.tips:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
28: goto 30
29: StackMap locals:
StackMap stack:
aload 2
getstatic freemarker.core.InvalidReferenceException.TIP:[Ljava/lang/Object;
invokevirtual freemarker.core._ErrorDescriptionBuilder.tip:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
30: StackMap locals:
StackMap stack:
new freemarker.core.InvalidReferenceException
dup
aload 2
aload 1
aload 0
invokespecial freemarker.core.InvalidReferenceException.<init>:(Lfreemarker/core/_ErrorDescriptionBuilder;Lfreemarker/core/Environment;Lfreemarker/core/Expression;)V
areturn
end local 2 31: StackMap locals:
StackMap stack:
new freemarker.core.InvalidReferenceException
dup
aload 1
invokespecial freemarker.core.InvalidReferenceException.<init>:(Lfreemarker/core/Environment;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 blamed Lfreemarker/core/Expression;
0 32 1 env Lfreemarker/core/Environment;
5 31 2 errDescBuilder Lfreemarker/core/_ErrorDescriptionBuilder;
10 21 3 rho Ljava/lang/String;
11 21 4 nameFixTip Ljava/lang/String;
MethodParameters:
Name Flags
blamed
env
static freemarker.core.InvalidReferenceException getInstance(int, java.lang.String, java.lang.String, freemarker.core.Environment);
descriptor: (ILjava/lang/String;Ljava/lang/String;Lfreemarker/core/Environment;)Lfreemarker/core/InvalidReferenceException;
flags: (0x0008) ACC_STATIC
Code:
stack=8, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
ifnull 2
aload 3
invokevirtual freemarker.core.Environment.getFastInvalidReferenceExceptions:()Z
ifeq 2
1: getstatic freemarker.core.InvalidReferenceException.FAST_INSTANCE:Lfreemarker/core/InvalidReferenceException;
areturn
2: StackMap locals:
StackMap stack:
new freemarker.core._ErrorDescriptionBuilder
dup
iconst_5
anewarray java.lang.Object
dup
iconst_0
3: ldc "The target variable of the assignment, "
aastore
dup
iconst_1
4: new freemarker.core._DelayedJQuote
dup
aload 1
invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
aastore
dup
iconst_2
5: new java.lang.StringBuilder
dup
ldc ", was null or missing in the "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 0
invokestatic freemarker.core.Assignment.scopeAsString:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ", and the \""
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aastore
dup
iconst_3
6: aload 2
aastore
dup
iconst_4
ldc "\" operator must get its value from there before assigning to it."
7: aastore
invokespecial freemarker.core._ErrorDescriptionBuilder.<init>:([Ljava/lang/Object;)V
astore 4
start local 4 8: aload 1
ldc "$"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 11
9: aload 4
iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "Variable references must not start with \"$\", unless the \"$\" is really part of the variable name."
aastore
dup
iconst_1
getstatic freemarker.core.InvalidReferenceException.TIP_MISSING_ASSIGNMENT_TARGET:[Ljava/lang/Object;
aastore
invokevirtual freemarker.core._ErrorDescriptionBuilder.tips:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
10: goto 12
11: StackMap locals: freemarker.core._ErrorDescriptionBuilder
StackMap stack:
aload 4
getstatic freemarker.core.InvalidReferenceException.TIP_MISSING_ASSIGNMENT_TARGET:[Ljava/lang/Object;
invokevirtual freemarker.core._ErrorDescriptionBuilder.tip:([Ljava/lang/Object;)Lfreemarker/core/_ErrorDescriptionBuilder;
pop
12: StackMap locals:
StackMap stack:
new freemarker.core.InvalidReferenceException
dup
aload 4
aload 3
aconst_null
invokespecial freemarker.core.InvalidReferenceException.<init>:(Lfreemarker/core/_ErrorDescriptionBuilder;Lfreemarker/core/Environment;Lfreemarker/core/Expression;)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 scope I
0 13 1 missingAssignedVarName Ljava/lang/String;
0 13 2 assignmentOperator Ljava/lang/String;
0 13 3 env Lfreemarker/core/Environment;
8 13 4 errDescBuilder Lfreemarker/core/_ErrorDescriptionBuilder;
MethodParameters:
Name Flags
scope
missingAssignedVarName
assignmentOperator
env
private static boolean endsWithDollarVariable(freemarker.core.Expression);
descriptor: (Lfreemarker/core/Expression;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
instanceof freemarker.core.Identifier
ifeq 1
aload 0
checkcast freemarker.core.Identifier
invokevirtual freemarker.core.Identifier.getName:()Ljava/lang/String;
ldc "$"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 3
1: StackMap locals:
StackMap stack:
aload 0
instanceof freemarker.core.Dot
ifeq 2
aload 0
checkcast freemarker.core.Dot
invokevirtual freemarker.core.Dot.getRHO:()Ljava/lang/String;
ldc "$"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 3
2: StackMap locals:
StackMap stack:
iconst_0
ireturn
StackMap locals:
StackMap stack:
3: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 blame Lfreemarker/core/Expression;
MethodParameters:
Name Flags
blame
}
SourceFile: "InvalidReferenceException.java"